商用 CA ベースのクライアント証明書を使用した ssl_error_handshake_failure_alert

商用 CA ベースのクライアント証明書を使用した ssl_error_handshake_failure_alert

SSL 証明書を使用してクライアント認証を実装しようとしています。

http://www.modssl.org/docs/2.8/ssl_howto.html#auth-selective

次のエラーが発生します。

Apache: 再ネゴシエーション ハンドシェイクに失敗しました: クライアントに受け入れられませんでした!?

ファイアフォックス:

ssl_error_handshake_failure_alert

設定エラーだと思いますが、原因がわかりません。

追加情報: 商用 CA サーバー証明書サーバーは、Apache 2.2 および Passenger で問題なく動作します。クライアント認証関連のディレクティブのみが動作しません。

答え1

ハンドシェイクが失敗する場合、クライアントがネゴシエートされた SSL プロトコルを理解していない (または使用するように構成されていない) 可能性があります。たとえば、FF ですべての SSL プロトコル (SSL2、SSL3、TLSv1) が有効になっているかどうかを確認し、それを Apache 用に構成された SSL プロトコルと一致させます。

アップデート:また、ネットワーク トレースを実行して、クライアントとサーバーの両方がサポートする暗号スイートを確認することも役立つ場合があります。一致するスイートが見つからないため、ハンドシェイクが失敗する可能性があります。

または、modssl ログを設定すると、さらに詳細な情報も明らかになります。http://www.modssl.org/docs/2.8/ssl_reference.html#ToC19

答え2

ひょっとすると Debian/Lenny を実行していますか?

同様の問題に遭遇し、最終的に、受け入れられる証明書には MD5 (SHA のようなものでも可) チェックサムが含まれていてはならないことがわかりました。これは安全ではないと考えられるためです。

ただし、私たちの問題は GnuTLS+OpenLDAP に関するものでした。さらにお金を使う前に、更新された証明書や自己署名証明書を試してみるとよいでしょう。

答え3

私の場合、クライアント証明書 (Firefox にインポートされた '.p12' ファイル) が古く、このようなエラーが発生しました。その場合は、クライアント証明書を再生成して署名する必要があります。

答え4

PaypalのURLを確認する

api.paypal.com/webscr&cmd=_express-checkout&token='; を api.paypal.com/webscr&cmd=_express-checkout&token='; に置き換えます。

詳細については、以下を参照してください... http://blog.oryxn.com/2010/10/ssl_error_handshake_failure_alert-paypal/

関連情報