2015-05-28 52 views
1

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

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

+0

您是在请求期间询问这些信息的,还是想为了编程目的而让它离线? –

+0

我想在Servlet初始化阶段(在init()内部)获取信息,以便我可以在每个请求(service()内)方法中使用它。 –

回答

1

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

+0

@TimBiegeleisen OP特别声明'在一个Servlet中'。我不知道还有什么可能的意思。他现在已经证实了这一点,*之前*你发表了这个评论。 – EJP

1

从技术上讲,没有一个容器的SSL证书。服务器可能有许多连接器,每个连接器可能有多个证书,并且只有在连接完成时才使用SNI来选择一个连接器。

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

无论如何,你不能用标准的API来做到这一点。在请求中,您可以将请求转发到码头请求,然后浏览几个获取者以获取Ssl EndPoint,然后从那里获取SslEngine,SslEngine会告诉您有关用于该请求的证书。

相关问题