Nginx使用Let's Encrypt泛解析证书时的问题

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

比较疑惑的是为什么非泛解析域名就不存在这个问题, 还没太想明白.