我遇到了正在尝试托管的网络服务的问题。
在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属性添加到Connector,我甚至无法通过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中,我已经在每个对我有意义的地方安装了客户端证书而没有改变行为。需要注意的一点是,服务器正在使用GoDaddy通配符SSL证书。我之前使用过通配符证书,但没有使用双向SSL身份验证。
非常感谢任何帮助/建议/建议!