2013-08-01 12 views
5

私は、SSLを使用するために秘密鍵と証明書を使用するようにApacheを設定しようとしています。Apache2 SSL証明書/鍵の不一致

[Thu Aug 01 11:35:18 2013] [warn] RSA server certificate wildcard CommonName (CN) `*.-----.nl' does NOT match server name!? 
[Thu Aug 01 11:35:18 2013] [debug] ssl_engine_init.c(846): Configuring RSA server private key 
[Thu Aug 01 11:35:18 2013] [error] Unable to configure RSA server private key 
[Thu Aug 01 11:35:18 2013] [error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch 

を私は鍵と証明書を天気をチェックかどうか、このエラーは、使用して一致した後:

$ openssl x509 -noout -modulus -in server.crt | openssl md5 
$ openssl rsa -noout -modulus -in server.key | openssl md5 

そして問題は、ApacheがどうにかキーとCRTファイルが一致しないと考えているということです結果はどちらも同じなので、キーと証明書が一致するようです!私のサイト構成が含まれているSSLのセットアップのためにfolowing:証明書は、私は私の顧客のために使用し、自己作成したCAによって署名され

SSLCertificateFile /etc/ssl/certs/server.crt 
    SSLCertificateKeyFile /etc/ssl/private/server.key 

。この時点で私はJava(そしてChrome/Firefox/IE/Safari/...すべてが証明書と鍵を受け入れます)を介してHTTPSサイトをホストしていますが、パフォーマンスは私がそれが好きではないので、 Apacheに切り替えるつもりです。しかし、なぜ私はApacheが証明書とキーが一致しないと言っているのか分からないのですか?私はこのエラーのためにたくさんの検索を行ったが、多くの結果が見つかりましたが、私の状況を表すものでも、私の問題に対して有効な解決策を提供するものもありません。私が自分のCAを使用しているのは、信頼ベースのネットワークで数百(そして数えて)の証明書が使用されているからです。

編集: 問題は、OpenSSL関連のようだ、私は同じ最終エラーで次のようにテストした:

..............:~$ openssl s_server -cert server.crt -key server.key 
140518544565920:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319: 
140518544565920:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:831: 
140518544565920:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:751:Field=n, Type=RSA 
140518544565920:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115: 
Using default temp DH parameters 
Using default temp ECDH parameters 
error setting private key 
140518544565920:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:331: 

誰も私が間違ってやっている何のために正しい方向に私を指すことができますか?

私は、OpenSSLから同じエラーを取得したときに、私はまだ直接PEM証明書と秘密鍵に(すべてのブラウザで受け入れ)ウェブサーバによって使用される使用済みのJKSをretranscoded、しかし:

、それが可能であるどのように
openssl s_server -debug -cert server.crt -key server.key 
Using default temp DH parameters 
Using default temp ECDH parameters 
error setting private key 
140157841004192:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:331: 

すべてのブラウザがキーと証明書の組み合わせを受け入れ、opensslはそれらを一緒に使用することを拒否しますか?

+0

これを把握しましたか? – Nick

+0

参照:http://stackoverflow.com/questions/4658484/ssl-install-problem-key-value-mismatch-but-they-do-match – kenorb

+0

@Nick?あなたのコメントを説明してください。 –

答えて

3
$ openssl s_server -cert server.crt -key server.key 
140518544565920:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319: 
140518544565920:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:831: 
140518544565920:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:751:Field=n, Type=RSA 
140518544565920:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115: 

-keyformを追加します。 DERまたはPEMにすることができます。フォームを確認するには、server.keyを参照する必要があります。

server.key--- BEGIN RSA PRIVATE KEY ---(または類似)の場合、そのPEM。 PEMでエンコードされていない場合は、DERを試してください。

また、server.keyが暗号化されている可能性があります。パスフレーズなしでキーを再保存する必要があるかもしれません。

3

仮想ホストファイルはどのように見えますか? そのファイルが表示されていないと、警告が表示されている理由を伝えるのが難しいです。ただし、警告はSSL証明書が設定されているものとは異なるサーバー名を持つ仮想ホストファイルから発生する可能性が最も高いです。

<VirtualHost _default_:443> 

<VirtualHost *:443> 

かに関係なく、あなたの<VirtualHost ...:443>ラインに持っているものであっても

<VirtualHost yoursevername:443> 
+0

問題はopen_sshに関連しています。これは、Apacheなしでope_sslにも発生するためです。したがって、ホスト名は無関係です。仮想ホストファイルはとして設定されています。 –

0

、私は問題がで示されていると思い、あなたの仮想ホストのファイルを確認し、変更しますエラーログの行:

[warn] RSA server certificate wildcard CommonName (CN) `*.-----.nl' does NOT match server name!? 

あなたのVirtualHostからServerNameであり、それはあなたの証明書のCN、「件名:」で、すなわち最後のエントリと一致しない何もopenssl x509 -noout -text -in <certfile>

からの出力の行を、あなたはnoloaderの提案を試してみたのですか?