2016-05-19 14 views
0

証明書ベースの認証を実装しようとしていますが、SSL/TLSハンドシェイク中にエラーが発生します。 I openssl s_client -state -debug -connect example.si:443を使用して、それをデバッグしようとしましたが、私は正直に出力を解釈することができるように十分に精通していないよ:クライアント鍵交換後のSSL/TLSハンドシェイクエラー

http://pastebin.com/7BiJXeAY

私が言うことができるものから、証明書チェーンが適切に検証される(これはIそれはといくつかの問題があることだろう

<VirtualHost *:443> 
    DocumentRoot D:/www/authentication 
    ServerName lpt.uni-mb.si 
    ServerAlias lpt.uni-mb.si 
    SSLEngine on 
    SSLCertificateFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\22_lpt.uni-mb.si.crt" 
    SSLCACertificateFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\root.crt" 
    SSLCertificateKeyFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\server.key" 
    SSLCertificateChainFile "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ssl\11_Intermediate.crt" 
    SSLProtocol all -SSLv2 -SSLv3 
    SSLCipherSuite HIGH:!aNULL:!MD5:!RC4 
    SSLVerifyClient require 
    SSLVerifyDepth 10 
    SSLOptions +StdEnvVars +ExportCertData 
    <Directory "D:/www/authentication"> 
     Options Indexes Includes 
     AllowOverride All 
     Order Deny,Allow 
     Allow from all 
     Options +FollowSymlinks 
    </Directory> 
</VirtualHost> 

:)hereチェックも」VEの、と私は私のhttpd.confファイル内の任意のミスを犯してきたようにApache 2.2サーバー上のVirtualHostを設定するときには、いないようです非常に短い書き込み操作を考慮して、クライアント鍵交換?

+1

あなたの問題は解決しませんが、古くなったSSLv2/v3のフレーバーを許可するのではなく、TLSのみを設定するべきです( 'SSLProtocol all -SSLv2 -SSLv3')。 –

+1

's_client'を使って相互認証を証明書でテストするときは、証明書とキーを指定する必要があります。また、['s_client' man page](http://www.openssl.org/docs/manmaster/apps/s_client.html)も参照してください。 – jww

答えて

0

は、私の知る限り、あなたペーストビンのリンクから見ることができるように、あなたが発行:

openssl s_client -state -debug 
    -CAfile "C:\Program Files (x86)\Apache Software Foundation\Apache 2.2\conf\ssl\root.crt" 
    -connect lpt.uni-mb.si:443 

はまだあなたがクライアント証明書を提供していませんでした。 opensslの -cert-key paramsにcert/keyファイルを追加してみてください。

+0

'-key server.key -cert lpt.uni-mb.si.pem -CAfile root.crt'を指定すると、ファイルの最後のエラーが' SSL_connect:SSLv3 write change cipher spec Aのエラー 'に変わります。誤った鍵、証明書、CAを提供していますか? – NoelAramis

+0

サーバ証明書とクライアント証明書が混在しています: '22_lpt.uni-mb.si.crt'と' server.key'はサーバのcert/keyであり、クライアントcert/keyから完全に独立しています。 'SSLVerifyClient require'を設定します。あなたは、クライアントがあなたのCA証明書( 'root.crt')で署名された証明書を提示することを期待しています。 opensslはこれだけで接続する必要があります。 –

+0

あなたは正しいです。私はクライアントの.pfxをダウンロードし、公開証明書と秘密鍵を抽出してそれらを提供しなければなりませんでした。ああ、別のもの..チェーンの中間証明書の1つがブラウザに表示されていないように思われたので、手動で追加する必要がありました。理由は分かりません。いずれにしても、現在は機能しています。 – NoelAramis