我必须为网站添加ssl(https),我获得了SSL.CSR和SSL.KEY文件。我'dos2unix'他们(因为他们尾随^ M)并将它们复制到服务器(CSR - > mywebsite.crt,KEY - > mywebsite.key)。我对nginx.conf进行了以下修改:
@@ -60,8 +60,13 @@
}
server {
- listen 80;
+ listen 443;
server_name ...;
+ ssl on;
+ ssl_certificate mywebsite.crt;
+ ssl_certificate_key mywebsite.key;
+ ssl_session_cache shared:SSL:10m;
+ ssl_session_timeout 10m;
# Set the max size for file uploads to 500Mb
client_max_body_size 500M;
当我重新启动nginx时发生错误:
nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/mywebsite.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)
我认为这是因为mywebsite.crt文件的第一行包含'REQUEST',所以我从第一行和最后一行删除'REQUEST',然后再次重启nginx,并点击另一个错误:
nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/mywebsite.crt") failed (SSL: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=algorithm, Type=X509_ALGOR error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=signature, Type=X509_CINF error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:Field=cert_info, Type=X509 error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib)
有什么想法吗?
答案 0 :(得分:26)
您永远不应该共享您的私钥。您应该考虑在此处发布的密钥被泄露并生成新密钥和签名请求。
您有证书申请,而非实际签名证书。您向签名方提供请求('CSR')。他们使用该请求创建签名证书('CRT'),然后他们可以使用它。密钥永远不会透露给任何人。
答案 1 :(得分:14)
仅供参考,您可以通过以下方式验证密钥:
openssl x509 -noout -text -in your.crt
openssl rsa -noout -text -in your.key
在我的情况下,这个错误被证明是相当微妙的:BEGIN块以 4破折号开始,而不是5 。 ----
vs -----
。遗憾的是,验证工具错误消息并不是非常具体。
答案 2 :(得分:11)
我在网上搜索SSL时遇到了这个问题:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:期望:TRUSTED CERTIFICATE
跑完后我收到了这个错误:
nginx -t
我遇到的问题是缺少cert.pem和cert.key
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
答案 3 :(得分:2)
我在gitlab.rb
文件中错误地配置了证书。
一个简单的错误需要很长时间才能实现。
nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.key"
而不是
nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/self-ssl.key"
答案 4 :(得分:1)
the NGINX site上将公共证书与中间证书合并的步骤使用cat
来合并两个文件。但是,如果您的公共证书文件未以新行结尾,则中间证书的-----BEGIN CERTIFICATE-----
行将附加到公共证书的-----END CERTIFICATE-----
行的末尾,从而导致无效的链式证书文件。手动分隔这两行可以解决此问题。
答案 5 :(得分:0)
我遇到了同样的问题,原因是一个证书的 -----END CERTIFICATE-----
行和另一个证书的 -----BEGIN CERTIFICATE-----
行恰好在同一行,所以基本上:
-----END CERTIFICATE----------BEGIN CERTIFICATE-----
这是在我通过命令行将几个 crt
文件合并到一个包中之后发生的,并且文件之间没有添加换行符,这破坏了整个 crt
文件。
通过分割线修复它