使用 Mina 成功进行 SSL 握手后如何获取主体?

发布于 2024-11-26 13:21:54 字数 201 浏览 1 评论 0原文

我正在使用带有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦过后 2024-12-03 13:21:54

看起来您可以使用 SslFilter.getSslSession(...)。然后,使用 SSLSession.getPeerCertificateChain() 获取客户端证书链。实际的客户端证书位于该数组中的位置 0。

It looks like you can get the SSLSession using SslFilter.getSslSession(...). Then, use SSLSession.getPeerCertificateChain() to get the client certificate chain. The actual client certificate is at position 0 in that array.

短暂陪伴 2024-12-03 13:21:54

为此,您不需要直接使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文