为了账号安全,请及时绑定邮箱和手机立即绑定

Java-WebSocket - 从服务器获取客户端证书进行身份验证

Java-WebSocket - 从服务器获取客户端证书进行身份验证

慕桂英3389331 2023-08-23 15:01:06
我已经使用 Java-WebSocket 和有效的双向 TLS 连接建立了一个 websocket 连接。但是,为了使客户端身份验证成为可能,我希望能够获取客户端证书附加的信息。这将包含一些有关客户端连接的信息,因此拥有它会很有用。我已在调试模式下查看了连接及其包含的数据的所有数据,但找不到对证书的任何引用。网上大多数问题似乎都是关于标准 javax websocket,但我使用的问题是由 TooTallNate 提出的(https://github.com/TooTallNate/Java-WebSocket)我希望能够从已建立的会话中获得证书。这可能吗?
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

显然,在新版本中,从会话获取 SSLEngine 的可能性已经成为可能。这应该从版本 1.4.1 开始出现,目前是一个快照。


对于其他遇到这个问题的人来说,这是一个从使用的 1.4.1-SNAPSHOT 版本开始工作的解决方案。此代码应该在任何服务器事件中起作用。就我而言,我将其放置在 onOpen 事件中,我猜这也是您希望它出现的位置。我还没有使用非 SSL 服务器对此进行全面测试,但由于有检查到位,所以应该没问题。不过,请提前测试。


Certificate[] certificates = null;

if(webSocket.hasSSLSupport()) {

    try {

        certificates = webSocket.getSSLSession().getPeerCertificates();

    } catch (SSLPeerUnverifiedException e) {

        logger.error("Could not read SSL Certificates");

        e.printStackTrace();

    }

}


查看完整回答
反对 回复 2023-08-23
  • 1 回答
  • 0 关注
  • 308 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信