2013-06-05 87 views
0

我在一個servlet過濾器中實現了證書認證。我使用httpRequest.getAttribute("javax.servlet.request.X509Certificate") API獲得客戶端證書。當用戶首次啓動瀏覽器並訪問Web服務器時,底層SSL會請求客戶端證書,瀏覽器會提示您選擇證書。但是,在用戶註銷並且我已使HTTP會話失效後,如果用戶未關閉瀏覽器並返回到Web服務器,則底層SSL不會觸發瀏覽器再次提示進行證書選擇。我認爲這是因爲在HTTP層從Web服務器註銷後,SSL會話沒有被拆除。我的問題是,是否有一種方法可以使servlet中的底層SSL會話失效?一個更普遍的問題是,如何讓瀏覽器在用戶從Web服務器註銷後重新提示選擇證書?是否可以從servelt過濾器中刪除SSL會話?

感謝, 剛

回答

0

我的問題是,有沒有辦法無效從servlet底層SSL會話?

您將不得不編寫一個Tomcat閥門,並且可能會更改一些Tomcat源代碼。我已經深入到Tomcat HTTPS /驗證源代碼的幾層,我還沒有看到一個會給你SSLSession的鉤子。

更常見的問題,我怎樣才能讓瀏覽器在用戶從Web服務器註銷後重新提示選擇證書?

使SSL會話無效,如果可以的話,可能會或可能不會產生這種效果。我會認爲這將是特定於瀏覽器的。

+0

我使用了相同的瀏覽器(IE9),用於測試我的身份驗證篩選器以訪問需要客戶端證書進行身份驗證的遠程網站。當我註銷該網站並返回時,瀏覽器會再次提示輸入證書。所以我相信它可以從服務器端實現。也許該網站的實施是在SSL層。 – Gang

相關問題