使用 Mina 成功进行 SSL 握手后如何获取主体?
我正在使用带有 SslFilter 的 Mina,配置为“需要客户端身份验证”。
建立连接并完成握手后,如何从服务器上 IoHandler 的子类获取连接另一端对等方的证书(或主体)?
编辑:换句话说,握手完成并调用 IoHandler.sessionOpened() 后如何获取 IoSession 和主体之间的关系。
I am using Mina with a SslFilter, configured with "client authentication needed".
Once a connection is made and a handshake is done, how to get the certificate (or the principal) of the peer on the other side of the connection from my subclass of the IoHandler on the server ?
Edit: in other words, how to get the relation between a IoSession and the principal once the handshake is done and the IoHandler.sessionOpened() is called.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您可以使用
SslFilter.getSslSession(...)
。然后,使用SSLSession.getPeerCertificateChain()
获取客户端证书链。实际的客户端证书位于该数组中的位置 0。It looks like you can get the
SSLSession
usingSslFilter.getSslSession(...)
. Then, useSSLSession.getPeerCertificateChain()
to get the client certificate chain. The actual client certificate is at position 0 in that array.为此,您不需要直接使用 IoHandler,它是使用 SSLContext 您需要为 SslFilter 构造函数。如果您查看 echo 服务器 例如,您可以看到实际的检查是在 DefaultTrustManagerFactory 中完成的。就我个人而言,我觉得这个例子有点太复杂了,如果我能找到更简单的东西,我会发布它。
You don't work with the IoHandler directly for that, it is done using the SSLContext which you need to provide for the SslFilter constructor. If you take a look at the echo server example, you can see that the actual check is done in DefaultTrustManagerFactory. Personally I find that example a little too complicated, if I can find something simpler I will post it.