Nginx版本: nginx/1.14.0 (Ubuntu)
Let’s Encrypt证书使用acme.sh客户端获取, 由Let’s Encrypt颁发.
问题现象: nginx配置https网站后, 浏览器(Edge/Chrome等)访问正常, curl访问报错提示curl: (60) SSL certificate problem: unable to get local issuer certificate
. 从Java中通过HttpClient访问也提示证书校验失败.
分析: 根据 SSL Server Test 系统测试提示 This server's certificate chain is incomplete. Grade capped to B.
多处搜索无果, 于是查看通过acme.sh获取到的几个证书, 可以看到chain.cer
中包含两个证书, *
开头的cer文件中包含一个证书, fullchain.cer
中包含以上两个证书, 考虑是否因证书链不完整导致报错.
解决方案: nginx对应server配置中:
ssl_certificate
改用 fullchain.cer
ssl_trusted_certificate
改用 chain.cer
.
改动后需重新加载服务器: systemctl reload nginx
比较疑惑的是为什么非泛解析域名就不存在这个问题, 还没太想明白.