nginx无法加载ssl certifacate

use*_*916 29 ssl https openssl nginx ssl-certificate

我必须为网站添加ssl(https),我获得了SSL.CSR和SSL.KEY文件.我'dos2unix'ed他们(因为他们尾随^ 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;
Run Code Online (Sandbox Code Playgroud)

重新启动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)
Run Code Online (Sandbox Code Playgroud)

我认为这是因为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)
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Mar*_*ill 29

你永远不应该分享你的私钥.您应该考虑在此处发布的密钥被泄露并生成新密钥和签名请求.

您有证书请求而不是实际签名证书.您向签名方提供请求('CSR').他们使用该请求创建签名证书('CRT'),然后他们可以使用.密钥永远不会透露给任何人.

  • 以及如何获得企业社会责任?给我一个CRT和一个KEY文件。 (2认同)

Jos*_*ust 18

仅供参考,您可以验证刚刚调用的密钥:

openssl x509 -noout -text -in your.crt
openssl rsa -noout -text -in your.key
Run Code Online (Sandbox Code Playgroud)

在我的情况下,这个错误被证明是相当微妙的:BEGIN块以4个破折号开始,而不是5个.----VS -----.遗憾的是,验证工具错误消息不是非常具体.


小智 14

我在网上搜索SSL时遇到了这个问题:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:期望:TRUSTED CERTIFICATE
运行后出现此错误:

    nginx -t
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是cert.pem和cert.key丢失了

    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)


Mik*_*ine 8

NGINX 站点上用于将公共证书与中间证书组合的步骤用于组合cat这两个文件。但是如果您的公共证书文件没有以新行结尾,-----BEGIN CERTIFICATE-----中间证书的行将附加到-----END CERTIFICATE-----公共证书行的末尾,从而导致链式证书文件无效。手动分隔这两行可以解决问题。


小智 5

我在文件中错误地配置了证书gitlab.rb。一个简单的错误花了很长时间才意识到。

nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.key"
Run Code Online (Sandbox Code Playgroud)

代替


nginx['ssl_certificate'] = "/etc/gitlab/ssl/self-ssl.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/self-ssl.key"
Run Code Online (Sandbox Code Playgroud)