Nginx配置SSL安全证书及解决PEM_read_bio:bad end line error错误
提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!
在 StartSSL 上申请了免费一年的证书,本来想配置到nginx里的,把申请到的key和crt文件放到/etc/nginx/certs/目录下,并命名为server.key和server.crt,对于申请的StartCOM Class1证书还需要以下命令,合并证书链:
wget http://cert.startssl.com/certs/ca.pem
wget http://cert.startssl.com/certs/sub.class1.server.ca.pem
cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
cat ca-certs.crt >> server.crt
然后修改Nginx的配置文件nginx.conf如下:
# 下面这段是强制80端口非SSL客户端转向至https安全连接
# 如果希望保留http非安全连接,请去掉这里
server {
listen 80;
server_name www.example.com; # 你自己的域名
rewrite ^(.*) https://$server_name$1 permanent;
}
# 这里是SSL的相关配置
server {
listen 443;
server_name www.example.com; # 你自己的域名
root /home/www;
ssl on;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
}
使用下面的命令重启nginx服务
/etc/init.d/nginx restart
一般情况下nginx能正常重启,并且SSL证书可以正确配置,但是有时会出现下面的错误提示:
[emerg]: SSL_CTX_use_certificate_chain_file("/etc/nginx/certs/server.crt")
failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib)
configuration file /etc/nginx/conf/nginx.conf test failed
这个的意思就是server.crt读取到意外错误行,回忆一下刚才的操作,这个是StartSSL提供的crt证书,然后我们使用cat将证书链合并到这个证书里的,那么问题可能就出在合并这个环节,使用vi或者nano命令打开并编辑server.crt,果然让我们找到了问题所在:
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
可以看到原先占用一行的标记证书的分隔符,现在连到一起了,我们需要用换行将他们分开,注意问题左右的短横线最好一样多:
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
好,做好后,保存这个crt文件,再次重启Nginx服务,输入申请证书时私钥的密码,SSL启用成功!
下面还有一些设置请参考文章 《Nginx配置SSL安全证书并解决HTTPS的400 Bad Request问题》 。
[...] ← 上一篇 下一篇 [...]
[…] 前一篇文章《Nginx配置SSL安全证书及解决PEM_read_bio:bad end line error错误》简单介绍了Nginx下SSL安全证书的配置,本来以为这样就算配置完成了,实际不然,首先发现WordPress的AdminSSL无法正常工作,显示有太多的递归转向,也就是说无限循环的跳转,就是无法转到https上,具体错误如下: […]