如何在Jetty中读取TLS版本的HTTPS连接?

时间:2013-10-08 09:37:32

标签: java ssl https jetty

我将Jetty服务器嵌入到我的应用程序中。在我的应用程序中,我可以通过阅读javax.servlet.request.cipher_suite请求属性来阅读它协商的密码套件。现在我想检查我的客户端是否使用TLSv1.0,TLSv.1.1或TLSv.1.2。如果我启用SSL调试,我可以在我的控制台上看到它:

qtp2819825-43, WRITE: TLSv1.2 Application Data, length = 8038

但我怎样才能在handler()中阅读它?

我研究了org.eclipse.jetty.server.Requestjavax.servlet.http.HttpServletRequest。有getProtocol()方法,但它返回HTTP/1.1

2 个答案:

答案 0 :(得分:1)

这个问题暂时开放,但由于现在有答案,可能与其他人有关。

您可以通过向其HttpConfiguration添加SecureRequestCustomizer来配置ServerConnector。可以在StackOverflow找到一个示例,但还有更多out there

设置此自定义程序时,信息作为属性添加,您可以从HttpServletRequest中检索。完整的SSLSession作为"bugreport"的结果添加,并且至少可以使用版本> = 9.3。默认属性名称为org.eclipse.jetty.servlet.request.ssl_session,但您可以通过调用setSslSessionAttribute("your.attribute.name")

在配置中自行设置

答案 1 :(得分:0)

在Jetty 9.3中,我可以通过以下方式读取TLS版本:

    SSLSession sslSession = (SSLSession)request.getAttribute("org.eclipse.jetty.servlet.request.ssl_session");
    if (sslSession == null)
        env.set("SSL_PROTOCOL_VERSION", "NULL");
    else
        env.set("SSL_PROTOCOL_VERSION", sslSession.getProtocol());