单位的工程师在给 Nginx 服务器配置 SSL 证书的时候,遇到了一个 error:0906D066 的问题,过来询问是否是我们给的证书有问题,详细报错信息如下:

root@elsenow-virmach:~# nginx -t
nginx: [emerg] PEM_read_bio_X509_AUX("/root/elsenow-ecc.crt") failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)
nginx: configuration file /etc/nginx/nginx.conf test failed

  一开始以为是证书配置有问题,还特意检查了一遍SSL证书的key是否正确,仔细检查之后发现,key并没有问题,最后发现是证书链合并的时候出现了问题。

  因为我是用cat命令将两个crt格式证书合并的,导致两个文件合并的时候因为没有换行而第一个文件的结尾部分和第二个文件的开头部分合并在了一起,也就是这样:

-----END CERTIFICATE----------BEGIN CERTIFICATE-----

  解决方法也很简单,只需要将这两行手动拆分一下就行,也就是这样:

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

  注意前后–的数量保持一致就行。更改好之后,保存,重新启动 Nginx 就行了。