Nginx上的SSL抛出错误(SSL:error:0908F066:PEM例程:get_header_and_data:末行不良)

13

我从SSLforFree/ZeroSSL生成了我的SSL证书,根据他们网站上列出的安装步骤 https://zerossl.com/help/installation/nginx/ 进行安装。

  1. 下载SSL文件
  2. 将它们移动到服务器
  3. 使用(cat certificate.crt ca_bundle.crt >> certificate.crt)命令合并certificate.crt和ca_bundle.crt文件
  4. 在nginx的hosts文件中添加以下行:
    ssl on;
    ssl_certificate /etc/ssl/certificate.crt;
    ssl_certificate_key /etc/ssl/private.key;
  5. 使用(sudo service nginx restart)重启Nginx服务器
  6. 收到错误信息,并通过(journalctl -xe)检查错误详情
  7. 错误信息为:
    nginx: [emerg] PEM_read_bio_X509_AUX
    (SSL: error:0908F066:PEM routines:get_header_and_data:bad end line)
2个回答

26
cat certificate.crt ca_bundle.crt >> certificate.crt合并文件时,不会在其中添加任何换行符。
合并文件后,打开新创建的文件certificate.crt,你将看到文件结构如下:
-----BEGIN CERTIFICATE-----
certificate-1-text
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
certificate-2-text
-----END CERTIFICATE-----
如果你的证书看起来像这样,你可以通过在第二个begin certificate的5条横线之前加入一个新的换行符来修复它,即编辑后应如下所示:
-----BEGIN CERTIFICATE-----
certificate-1-text
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
certificate-2-text
-----END CERTIFICATE-----

1
谢谢,这对我很有帮助。只是要小心需要换行的连字符数量。 - Soundararajan

0

我曾经遇到过同样的问题。出错的原因是在 CERTIFICATE----- 之前的代码中间有一个换行符。我修复了这个问题,然后一切都正常了。

但是这帮助我进行了故障排除。谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接