2020-05-26 01:48:08
解决Nginx配置HTTPS时证书链不完整的问题需确保完整证书链文件(含服务器证书、中间证书、根证书)且顺序正确,同时检查格式、权限及加密配置。 以下是具体步骤和注意事项:
一、获取或创建完整的证书链文件(fullchain.pem)关键点:服务器证书必须位于文件开头,根证书在末尾。若中间证书缺失或顺序错误,浏览器会报“证书链不完整”错误。
案例:某CA提供的中间证书文件仅包含一个中间证书,但实际需要两个中间证书才能完成验证,需额外补充缺失的证书。
私钥转换:若私钥为DER格式,同样需转换:openssl rsa -inform der -in privkey.der -out privkey.pem
在Nginx配置文件中(如/etc/nginx/sites-available/default),确保以下参数正确:
server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/fullchain.pem; # 指向完整证书链文件 ssl_certificate_key /path/to/privkey.pem; # 指向私钥文件 ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全协议(如TLSv1、TLSv1.1) ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; # 推荐强加密套件}ssl_certificate:必须指向包含完整证书链的fullchain.pem文件。
ssl_protocols:建议禁用TLS 1.0和1.1(已存在漏洞),仅启用TLS 1.2和1.3。
ssl_ciphers:优先选择支持前向保密(PFS)的加密套件,如EECDH+AESGCM。
检查输出中是否包含所有中间证书,且顺序正确。
证书顺序错误:服务器证书必须在fullchain.pem文件开头。
中间证书缺失:即使根证书可信,缺失中间证书仍会导致验证失败。
过期证书:定期检查证书有效期,尤其是手动管理的证书。
通过以上步骤,可系统解决Nginx配置HTTPS时证书链不完整的问题,确保网站安全且兼容现代浏览器。