Tomcat:logging相当于SSL_CLIENT_S_DN的内容

在Apache HTTPD中,可以创build包含SSL_CLIENT_S_DN值的自定义请求日志。 由于该站点需要相互authentication(客户端证书),因此这为谁正在访问Web服务器提供了良好的审计日志。 问题是我们也有大量的tomcat主机,并希望对tomcat创build的请求日志做同样的事情。 我似乎无法find办法做到这一点。 我已经看了tomcat中的访问阀,但似乎无法find一个合适的variables。

我一直在寻找configuration信息: http : //tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Log_Valve

此外,这些是configuration了clientAuth = True的HTTPS连接器的tomcat实例。 他们不是坐在代理人后面。

如何在请求日志中logging客户端证书DN?

没有testing,但你可以尝试一个模式:

%{javax.servlet.request.X509Certificate}r 

哪一个应该打印用户代理用于authentication的x509证书(连锁)。 这使用来自AccessLogValve%{xxx}r模式,该模式打印来自请求的属性和添加该属性的tomcat(或servlet api)(请参阅github上的tomcat源代码)

问题是X509CertificatetoString()方法非常冗长。 我确定DN在这里,但有更多的信息。

这是如果你不想触摸java代码。 如果你愿意,你也可以尝试定义一个filter,添加你想要的确切属性,并将其打印在日志中。