web-dev-qa-db-ja.com

Apache SSLエラー:秘密鍵が見つかりません

Ubuntu 14.04でApacheを実行していて、SSLを実装しようとしています。どんな助けでも大歓迎です。

default-ssl.confには以下が含まれます。

SSLCertificateFile      /etc/Apache2/ssl/domain.crt 
SSLCertificateKeyFile   /etc/Apache2/ssl/domain.csr

Apacheを再起動すると、/ var/log/Apache2/error.logのエラーメッセージは次のようになります。

[Sun Feb 01 19:31:06.443226 2015] [ssl:error] [pid 30927] AH02203: Init: Private key not found
[Sun Feb 01 19:31:06.443408 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443424 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 er$
[Sun Feb 01 19:31:06.443435 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443447 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443458 2015] [ssl:error] [pid 30927] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Sun Feb 01 19:31:06.443468 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Feb 01 19:31:06.443479 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$
[Sun Feb 01 19:31:06.443487 2015] [ssl:emerg] [pid 30927] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/Apache2/error.log for more inf$
8
mikesynan

警告:インターネットに秘密鍵を投稿しないでください。別のコンピュータ、ワークステーションなどにコピーしないでください。できるだけプライベートにしておく必要があります。

SSLCertificateKeyFileには秘密鍵が必要です。このキーは通常、CSRの前に、または同時に生成されます。次を含む行で始まるファイルを検索します:BEGIN PRIVATE KEY

CSR(証明書署名要求)は、証明書への署名を要求する場合にのみ必要です。その後は破棄できます。

秘密鍵を紛失した場合は、新しい秘密鍵を生成してから、新しいCSRを生成し、CSRに再度署名するようにCA(認証局)に依頼する必要があります。

6

ここに問題があります:

SSLCertificateKeyFile   /etc/Apache2/ssl/domain.csr

証明書署名要求(CSR)ファイルを誤ってここに入力しました。代わりに、CSRの生成に使用した秘密鍵ファイルをそこに置く必要があります。その秘密鍵ファイルはパスワードで保護しないでください。そうしないと、Apacheを(再)起動するたびにパスワードを入力する必要があります。

今後の世代の利益のために、OpenSSLを使用してCSR-sを生成する方法の短い要約を次に示します(優れたチュートリアルは buntuのドキュメント から入手できます)。

1)サーバーキーを生成します。

openssl genrsa -des3 -out server.key 2048

これには、パスワードを指定する必要があります。

2)パスワードなしの秘密鍵を作成し、プロンプトが表示されたら上記で使用したパスワードを入力します。

openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.SECURE
mv server.key.insecure server.key

3)パスワードなしの秘密鍵でCSRを生成します。

openssl req -new -key server.key -out mydomain.org.csr

ここで、 "mydomain.org"はドメインです。インタラクティブにいくつかの質問に答える必要があります。完了したら、mydomain.org.csrファイルを認証局に送信します。 *.crtファイルまたは*.pemファイル。彼らがあなたに与えたとしましょうmydomain.org.crt。それを証明書としてインストールし、パスワードなしの鍵ファイルを鍵としてインストールします(場所はUbuntu 14.04で有効です。他のシステムのどこかにある可能性があります。Apache2のドキュメントを確認してください)。

Sudo cp mydomain.org.crt /etc/ssl/certs
Sudo cp server.key /etc/ssl/private/mydomain.org.key

最後に、Apache2構成を編集します(default-ssl.conf):

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/mydomain.org.crt
    SSLCertificateKeyFile   /etc/ssl/private/mydomain.org.key

お役に立てれば。

1
Laryx Decidua

誰かがすでにこの質問に回答していることは知っていますが、このエラーが発生したときに何が起こったかを他の人に知らせたいと思っていました。

私の原因では、証明書バンドルに誤ってSSLCertificateChainFileではなくSSLCertificateFileがありました。このエラーが引き続き表示され、ループが発生しました。私は自分の秘密鍵が間違っていると考え続けました。

1
user1283449

私はこの投稿が古いことを知っていますが、これはエラーに関するGoogle検索の最初のリンクであるため、さらに追加する必要があると考えました-「Init:Private key not found」

私はこれが以前に起こったのを見ました、そして、それは悪い秘密鍵であることが判明しました。 Apacheがロードしようとした最後の秘密鍵を追跡するためにstraceを使用しました。 sslディレクトリとhttpd.confから削除すると、Apacheは問題なく再起動しました。

不正なSSLキー:-rw-r ----- 1ルート754974732 1.7K 1987年5月31日/var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

不正なキーを追跡するために使用されるコマンド:strace -f -v -s 1024 -o strace.log service httpd start

環境:OS:CentSO 6.9コントロールパネル:cPanel 11.64 Apacheバージョン2.2

tl;dr: Find the bad private key that Apache is trying to load and backup it up and remove it from Apache's configuration file.

これが役に立てば幸いです!

0
m33k

私はこれを少しの間回転させていましたが、完全な秘密鍵ファイルがあることを確認してください。私は私の行からいくつかの行が欠落していたことがわかりました。

秘密鍵を確認するコマンドは次のとおりです。

openssl rsa -in /etc/httpd/certs/server.key -check

/etc/httpd/certs/server.keyをサーバーの秘密鍵へのフルパスに置き換えます。問題がなければ、次のように表示されます。

RSA key ok

それが誰かを助けることを願っています、そして私のサーバーはApache/2.4.6を備えたCentOS 7.6でした

0
jbrahy