SSL: エラー:0B080074:x509 証明書ルーチン:X509_check_private_key:キー値が一致しません 質問する

SSL: エラー:0B080074:x509 証明書ルーチン:X509_check_private_key:キー値が一致しません 質問する

SSL を設定できません。Google で検索していくつかの解決策を見つけましたが、どれもうまくいきませんでした。助けてください...

nginx を再起動しようとしたときに表示されるエラーは次のとおりです。

root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed

私の証明書は StartSSL からのもので、有効期間は 1 年間です。

私がテストしたものは次のとおりです:

  • 証明書と秘密鍵には末尾のスペースがありません。
  • デフォルトの server.key ファイルを使用していません。
  • nginx.conf を確認したところ、ディレクティブは正しい秘密鍵と証明書を指しています。

モジュラスも確認しましたが、キーと証明書の両方で異なるモジュラスが得られました。

助けてくれてありがとう。 :)

ベストアンサー1

一致しないことが判明しても、まだ問題が残ります。どう対処するかです。多くの場合、証明書は単に間違って組み立てられているだけです。CAが証明書に署名すると、次のようなブロックが送信されます。

-----BEGIN CERTIFICATE-----
MIIAA-and-a-buncha-nonsense-that-is-your-certificate
-and-a-buncha-nonsense-that-is-your-certificate-and-
a-buncha-nonsense-that-is-your-certificate-and-a-bun
cha-nonsense-that-is-your-certificate-and-a-buncha-n
onsense-that-is-your-certificate-AA+
-----END CERTIFICATE-----

また、証明書を発行する権限を示すバンドル(多くの場合、2つの証明書)も送信されます。これは次のようになります。

-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-your-request
-this-is-the-certificate-that-signed-your-request-this
-is-the-certificate-that-signed-your-request-this-is-t
he-certificate-that-signed-your-request-this-is-the-ce
rtificate-that-signed-your-request-A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-for-that-one
-this-is-the-certificate-that-signed-for-that-one-this
-is-the-certificate-that-signed-for-that-one-this-is-t
he-certificate-that-signed-for-that-one-this-is-the-ce
rtificate-that-signed-for-that-one-this-is-the-certifi
cate-that-signed-for-that-one-AA
-----END CERTIFICATE-----

ただし、残念ながら、それほど明確にラベル付けされるわけではありません。

一般的な方法は、これらすべてを 1 つのファイルにまとめることです (証明書、署名証明書の順)。ただし、これらは簡単に区別できないため、誰かが気付かずに、署名証明書、最終証明書の順に誤って順序を入れてしまうことがあります。その場合、証明書はキーと一致しません。

証明書が何を表しているのかを確認するには、次のコマンドを実行します。

openssl x509 -noout -text -in yourcert.cert

上部近くに、「Subject:」と、その後にデータのようなものが表示されます。代わりに CA のように見える場合は、バンドルの順序が間違っている可能性があります。バックアップを作成し、最後の証明書を先頭に移動して、それが証明書であることを期待してください。

これが機能しない場合は、証明書を再発行する必要があるかもしれません。CSR を作成するときは、どのサーバー用かを明確にラベル付けし (ssl.key や server.key だけではなく)、名前に日付を入れてコピーを作成します (mydomain.20150306.key など)。こうすることで、秘密鍵と公開鍵のペアが別のセットと混同される可能性が低くなります。

おすすめ記事