【问题标题】:Java-WebSocket - Get Client certificate from Server for authenticationJava-WebSocket - 从服务器获取客户端证书以进行身份​​验证
【发布时间】:2019-09-25 08:17:23
【问题描述】:

我已经使用 Java-WebSocket 和有效的双向 TLS 连接建立了一个 websocket 连接。但是,为了使客户端身份验证成为可能,我希望能够获得附加到客户端证书的信息。这将包含有关客户端连接的一些信息,因此很有用。

我在调试模式下查看了连接的所有数据及其包含的数据,但找不到对证书的任何引用。网上的大多数问题似乎都是关于标准 javax websocket 的,但我使用的是 TooTallNate (https://github.com/TooTallNate/Java-WebSocket)

我希望能够从已建立的会话中获得证书。这可能吗?

【问题讨论】:

    标签: java ssl websocket certificate java-websocket


    【解决方案1】:

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

    对于遇到此问题的任何其他人,这是一个从所使用的 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 2012-01-10
      相关资源
      最近更新 更多