2016-01-08 127 views
7

我想將客戶端證書信息包含在我的tomcat訪問日誌文件中。Tomcat 7訪問日誌與客戶端證書使用者名稱

我已閱讀此文章:https://serverfault.com/questions/624790/tomcat-log-the-equivalent-of-ssl-client-s-dn但這隻返回對證書的引用,我實際上無法提取任何屬性。

我的日誌文件模式如下:

pattern="... [%{javax.servlet.request.X509Certificate}r]" 

這是返回:[Ljava.security.cert.X509Certificate; @ 667a078]

是否有訪問證書的屬性,如道路這:

pattern="... [%{javax.servlet.request.X509Certificate.SubjectName}r]" 

我希望能夠提取證書信息,無需任何代碼修改。

+0

你有沒有找出如何做到這一點沒有任何代碼修改被定義? – WiteCastle

+0

可悲的是。最終終止其他地方的客戶端證書並傾銷。 –

回答

0

如果您使用的主題名稱進行身份驗證的用戶,那麼我認爲你可以登錄與「%u

如果您有什麼需要,你需要編寫用戶名的javax.servlet.FilterServletRequestListener,設置該值作爲ServletRequest上的一個屬性。該值可以是實現toString()的任何對象。

javax.servlet.request.X509Certificate的請求屬性是證書的陣列,並且在Servlet規範ch.3.9 SSL屬性(servlet規範3.1)