ホストしようとしている Web サービスに問題があります。
CentOS 6.5 amd64 / Linux x86_64、Tomcat 8.0.9、Java 1.7.0_60、CXF 3.0 で実行。
コネクタをそのようにセットアップすると:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="${catalina.base}/conf/server.jks"
keyAlias="salesproxy.<domain>.com"
keystorePass="<password>"
clientAuth="false" sslProtocol="TLS" />
HTTPS 経由で WSDL を取得し、証明書を表示できますが、すべて問題ありません。
しかし、clientAuth="true" を設定し、truststoreFile、truststoreType、および truststorePass 属性をコネクターに追加すると、HTTPS 経由で WSDL にアクセスすることさえできなくなります。Chrome から「エラー コード: ERR_SSL_PROTOCOL_ERROR」というメッセージが表示されます。
javax.net.debug=ssl が設定されたログの最後の数行を以下に示します。
*** ServerHelloDone
http-nio-443-exec-4, WRITE: SSLv3 Handshake, length = 13028
http-nio-443-exec-6, READ: SSLv3 Alert, length = 2
http-nio-443-exec-6, RECV SSLv3 ALERT: warning, no_certificate
SSL -- handshake alert: no_certificate
http-nio-443-exec-6, fatal error: 80: problem unwrapping net record
javax.net.ssl.SSLProtocolException: handshake alert: no_certificate
%% Invalidated: [Session-67, TLS_DHE_RSA_WITH_AES_128_CBC_SHA]
http-nio-443-exec-6, SEND SSLv3 ALERT: fatal, description = internal_error
http-nio-443-exec-6, WRITE: SSLv3 Alert, length = 2
http-nio-443-exec-6, called closeOutbound()
http-nio-443-exec-6, closeOutboundInternal()
Chrome と Windows 8 の certmgr では、動作を変更することなく、意味のあるすべての場所にクライアント証明書をインストールしました。注意すべき点の 1 つは、サーバーが GoDaddy ワイルドカード SSL 証明書を使用していることです。以前にワイルドカード証明書を使用したことがありますが、双方向 SSL 認証では使用しませんでした。
ヘルプ/提案/推奨事項は大歓迎です!