我在我的Web服务器应用程序中使用https://github.com/TooTallNate/Java-WebSocket进行套接字通信。
我想在我的服务中设置相互身份验证。我在我的服务器和客户端应用程序中设置了密钥库和信任库。我无法弄清楚的是,我是否需要更改代码才能执行双向身份验证?现在,我能够确认通信是通过安全通道进行的。无论如何都要验证2 way SSL authentication (mutual authentication)
是否正在发生?我在Websphere Liberty上运行我的服务
Java websockets中的ssl通信源:https://github.com/TooTallNate/Java-WebSocket/blob/Java-WebSocket-1.3.0/src/main/java/org/java_websocket/SSLSocketChannel2.java
我看到在Liberty中我可以请求客户端证书https://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_sec_clientcert.html 但是为什么我需要在浏览器中添加证书呢?难道我不能在我服务器的信任存储中添加客户端证书吗?
答案 0 :(得分:1)
要启用客户端身份验证或相互身份验证,您需要启用Liberty上的示例中提供的 clientAuthentication =" true" 。
<ssl id="myDefaultSSLConfig"
keyStoreRef="defaultKeyStore"
trustStoreRef="defaultTrustStore"
clientAuthentication="true"
sslProtocol="TLS" />
如上所述,浏览器需要添加或接受服务器证书,服务器还需要拥有客户端的签名者证书。客户端和服务器都需要建立信任,以便相互通信才能工作。
- 将客户端证书添加到浏览器。请参阅浏览器文档以添加客户端证书。
- 确保服务器信任所使用的任何客户端证书。
醇>