web-dev-qa-db-ja.com

nginx設定がSSLキー/ PEMで失敗する(一意のケース)

証明書付きのSSLキーを使用してnginxリバースプロキシにSSLをインストールしようとしていますが、サーバーを再起動しようとすると次のメッセージが表示されます。

Restarting nginx: [emerg]: SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/cert.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
configuration file /etc/nginx/nginx.conf test failed

すべてのファイルはroot:rootであり、600のアクセス許可があり、証明書をテストしました。これらは次のWebサイトで検証されています: http://ssltools.com/cert_key_match

キーに末尾の奇妙な文字がなく、行ごとに64文字があります

これが私の設定ファイルです

server {
    listen   443;
    server_name     my.domain.com;
    ssl on;
    ssl_certificate      conf.d/cert.pem;
    ssl_certificate_key  conf.d/cert.key;

    location / {
         proxy_pass         http://upstream1;
         proxy_redirect     off;
         proxy_buffering    off;
         proxy_set_header        Host            $Host;
         proxy_set_header        X-Real-IP       $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

何か案は?ありがとうございました

4
Fredow

チェック ここ

次の行をコピーして貼り付けてください。

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
4
Ilja

他の人のために働くかもしれない別の解決策:

使用 .pem両方のファイルssl_certificateおよびssl_certificate_key

あれは:

...
ssl on;
ssl_certificate      conf.d/cert.pem;
ssl_certificate_key  conf.d/cert.pem;
...
3
Peter Klipfel

参考までに、BEGINブロックが同一であることを確認してください。鉱山は5ではなく4ダッシュで始まりました。 ---------。このエラーが発生した場合、検証ツールのエラーメッセージはそれほど具体的ではありません。

2
Joseph Lust

同じ問題が発生しました(/var/log/nginx/error.logから)

2019/03/20 01:25:41 [emerg] 2509#0: SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/sslcert/mm.merchantspring.com.au.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: ANY PRIVATE KEY error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)

次に、キーファイルも証明書とチェーンする必要があることがわかりました。キーファイルを更新した後、nginxを再起動してください、それは動作します。

私の環境:

Nginx設定ファイルは次のとおりです:

    ssl_certificate /etc/nginx/conf.d/sslcert/mywebsite.pem;
    ssl_certificate_key /etc/nginx/conf.d/sslcert/mywebsite.key;

mywebsite.pem(チェーン、完全に4つの証明書。猫mywebsite.crt中間.crt> mywebsite.pem):

-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...

-----END CERTIFICATE-----

mywebsite.key:(crtとkeyとチェーン)

-----BEGIN CERTIFICATE-----
 ...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

Opensslで作成するのではなく、godaddyのWebサイトからキーファイルを取得しました。しかし、opensslでこれを行うとより良いと思います。

1
user515131