【问题标题】:Getting Server Certificate/SSL in Servlet在 Servlet 中获取服务器证书/SSL
【发布时间】:2015-08-10 08:31:27
【问题描述】:

我有一个可以部署在 Tomcat 或 Jetty 或任何其他 servlet 容器中的 Web 应用程序(.war 文件)。我想知道 Servlet 容器的 SSL 证书详细信息(例如证书何时到期、谁是颁发者等)

是否可以从 Servlet 获取服务器证书或 SSL 详细信息?

【问题讨论】:

  • 您是在请求期间要求提供此信息,还是出于编程目的使其离线?
  • 我想在 servlet 初始化阶段(在 init() 内部)获取信息,以便在每个请求(在 service() 内部)方法中使用它。

标签: tomcat servlets ssl jetty ssl-certificate


【解决方案1】:

从技术上讲,容器没有一个 SSL 证书。服务器可能有很多连接器,每个连接器可能有很多证书,并且 SNI 仅用于在建立连接时选择一个。

因此,对于可移植 servlet,您不应该在初始化期间获取详细信息,因为它们可能因每个请求而异。

无论如何,您都无法使用标准 API 来做到这一点。在请求中,您可以将请求向下转换为码头请求,然后通过几个 getter 导航以获取 Ssl EndPoint 并从那里获取 SslEngine,它将告诉您用于该请求的证书。

【讨论】:

    【解决方案2】:

    当然,只需在适当的端口上使用 SSLSocket 连接到自己,获取 SSLSession,获取对等证书。不要发送任何东西。

    【讨论】:

    • @TimBiegeleisen OP 明确指出“在 Servlet 中”。我不知道这可能意味着什么。他现在已经确认了,你发表这条评论之前。
    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 2020-03-24
    • 2017-05-19
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    相关资源
    最近更新 更多