我将 Mina 与 SslFilter 一起使用,配置为“需要客户端身份验证”。
建立连接并完成握手后,如何从服务器上 IoHandler 的子类获取连接另一端的对等方的证书(或主体)?
编辑:换句话说,一旦完成握手并调用 IoHandler.sessionOpened(),如何获取 IoSession 和主体之间的关系。
我将 Mina 与 SslFilter 一起使用,配置为“需要客户端身份验证”。
建立连接并完成握手后,如何从服务器上 IoHandler 的子类获取连接另一端的对等方的证书(或主体)?
编辑:换句话说,一旦完成握手并调用 IoHandler.sessionOpened(),如何获取 IoSession 和主体之间的关系。
看起来你可以得到SSLSession
using SslFilter.getSslSession(...)
。然后,用于SSLSession.getPeerCertificateChain()
获取客户端证书链。实际的客户端证书位于该数组中的位置 0。
你不直接使用 IoHandler ,它是使用你需要为SslFilter构造函数提供的SSLContext完成的。如果您查看回显服务器示例,您可以看到实际检查是在 DefaultTrustManagerFactory 中完成的。我个人觉得这个例子有点太复杂了,如果我能找到更简单的东西,我会发布它。