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

时间:2011-07-25 09:14:59

标签: java authentication ssl apache-mina principal

我正在使用带有SslFilter的Mina,配置了“需要客户端身份验证”。

一旦建立连接并完成握手,如何从服务器上IoHandler的子类获取连接另一端的对等体的证书(或主体)?

编辑:换句话说,一旦握手完成并调用IoHandler.sessionOpened(),如何获取IoSession与主体之间的关系。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您不直接使用IoHandler,它是使用您需要为SSLContext构造函数提供的SslFilter完成的。如果您查看echo server示例,可以看到实际检查是在DefaultTrustManagerFactory中完成的。就个人而言,我发现这个例子有点过于复杂,如果我能找到更简单的东西,我会发布它。