我将 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.Request
和 javax.servlet.http.HttpServletRequest
。有 getProtocol()
方法,但它返回 HTTP/1.1
。
最佳答案
这个问题暂时悬而未决,但既然现在有了答案,它可能与其他人相关。
您可以通过将 SecureRequestCustomizer
添加到其 HttpConfiguration 来配置您的 ServerConnector。可以在 StackOverflow 找到一个例子。 , 但还有更多out there .
设置此定制器时,信息作为属性添加,您可以从 HttpServletRequest 中检索。作为 "bugreport" 的结果添加了完整的 SSLSession并且至少在 >= 9.3 的版本中可用。默认属性名称是 org.eclipse.jetty.servlet.request.ssl_session
但您可以通过调用 setSslSessionAttribute("your.attribute.name")
在您的配置中自行设置它>
关于java - 如何在 Jetty 中读取 HTTPS 连接的 TLS 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19244133/