【问题标题】:How to access final negotiated protocol and cipher from Java SSLSocket? [duplicate]如何从 Java SSLSocket 访问最终协商的协议和密码? [复制]
【发布时间】:2015-12-06 20:22:39
【问题描述】:

我一直在努力尝试构建一个基于 Java 的小型 HTTPS/SSL 服务器,主要是为了获得一些可以相当便携的东西,用于我们的测试/诊断目的。

根据此处的示例,我得到了这样一个服务器应用程序:

http://www.mybinarylife.net/2012/06/java-ssl-threaded-echo-server.html

但是,正如我所说,我想要的一件事是此服务器应用程序将为每个传入连接输出最终协商的协议和密码信息,类似于 Apache 自定义日志记录如何输出协议和密码信息,如上所述本页:

https://isc.sans.edu/forums/diary/Logging+SSL/18847/

In Apache, you can log the protocol version and cipher easily by logging the respective environment variable [1] . For example:

CustomLog logs/ssl_request_log  "%t %h \"{User-agent}i\" %{SSL_PROTOCOL}x %{SSL_CIPHER}x "

Logs SSL protocol and cipher. 

但我没有看到任何方法或任何东西可以在基于 Java 的应用程序中获取该信息?

SSLSocket 有获取 ENABLED 协议等的方法,但似乎没有任何获取最终协商协议和密码的方法。

有谁知道这在 Java 中是否可行,如果可以,我该怎么做?

谢谢!!

吉姆

【问题讨论】:

    标签: java sockets ssl


    【解决方案1】:

    我终于找到了我的问题的答案。基本上就是这里所说的:

    How to find what SSL/TLS version is used in Java

    从客户端上的 SSLSocket 获取 SSLSession 并使用它的 getProtocol() 方法。

    我能够使用 SSLSocket 上的 getSession() 方法来获取 SSLSession,然后使用 SSLSession 的 getProtocol() 和 getCipherSuite() 方法来获取我想要的信息。

    吉姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2016-02-17
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多