web-dev-qa-db-ja.com

nginxがSSL証明書のロードに失敗する

Webサイトにssl(https)を追加する必要があります。SSL.CSRとSSL.KEYファイルが与えられました。 (末尾に^ Mがあるため)それらを「dos2unix」し、サーバーにコピーしました(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)

何か案が?

28
user21916

秘密鍵は決して​​共有しないでください。ここに投稿したキーが危険にさらされていることを考慮し、新しいキーと署名要求を生成する必要があります。

実際に署名された証明書ではなく、証明書要求があります。署名者にリクエスト(「CSR」)を提供します。彼らはそのリクエストを使用して、署名済み証明書(「CRT」)を作成し、それを利用可能にします。キーは誰にも開示されません。

28
Mark Sturgill

参考までに、次のように呼び出すだけでキーを検証できます。

openssl x509 -noout -text -in your.crt
openssl rsa -noout -text -in your.key

私の場合、このエラーはかなり微妙であることが判明しました。BEGINブロックは5ではなく4つのダッシュで始まりました。 ---- vs -----。残念ながら、検証ツールのエラーメッセージはあまり具体的ではありません。

18
Joseph Lust

SSLをオンラインで検索中にこの問題に遭遇しました:error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting:TRUSTED CERTIFICATE
実行後にこのエラーが発生しました:

    nginx -t

私が抱えていた問題は、cert.pemとcert.keyが欠落していたことでした

    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
12
Christie

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"
3
Ershad Ahmad

NGINXサイト の手順は、公開証明書と中間証明書を組み合わせるためにcatを使用して2つのファイルを組み合わせます。ただし、公開証明書ファイルが新しい行で終わっていない場合、-----BEGIN CERTIFICATE-----の中間に中間証明書の行が追加されます-----END CERTIFICATE-----パブリック証明書の行。無効なチェーン証明書ファイルにつながります。これらの2行を手動で分離すると、問題を修正できます。

1
MikeOnline