3

SSL用のクライアント証明書を要求するように設定されたWebサーバーがあります。クライアントが受け入れ可能な証明書を持っている場合、実際の内容が表示されますが、そうでない場合は、クライアント認証なしでSSLに戻り、セキュリティトークンに接続して再試行するエラーページが表示されます。WebブラウザでSSL再ハンドシェークをトリガーする方法は?

問題は、トークンを接続しても、ブラウザは現在のセッションが正常であると考えて新しいSSLセッションを再ネゴシエートしないことです。だから私は現在のSSLセッションを無効にする方法が必要です。

私は、Tomcat 6であるサーバー、上でそれを実行しようとしました:

response.setHeader("Connection", "close");   // open new socket next time 
response.flushBuffer(); 

Object sslSessionMgr = request.getAttribute("javax.servlet.request.ssl_session_mgr"); 
if (sslSessionMgr != null) { 
    try { 
     Method invalidateSession = 
       Class.forName("org.apache.tomcat.util.net.SSLSessionManager").getMethod("invalidateSession"); 
     invalidateSession.setAccessible(true); 
     invalidateSession.invoke(sslSessionMgr); 
    } catch (Exception e) {/*ignore*/} 
} 

しかし、それはsslSessionMgrが常にnullであると私は私がここで間違って何をやっているだろうことが判明しました。

もちろん、クライアントでは汎用的な解決策はありませんが、幸いにもwindow.crypto.logout()はFireFoxのトリックを行います。私はどこかでIEの等価物がdocument.execCommand("ClearAuthenticationCache")かActiveXコントロールであると読んでいますか?いずれにせよ、私はIEやChromeのためにそれをするように見えることはできません。

ここで何ができますか?これらのソリューションのいずれかを修正できますか、それとも他のソリューションがありますか?

答えて

2

this issueで説明されているように、残念ながらChromeではまだサポートされていません。

は、私の知る限りでは、javax.servlet.request.ssl_session_mgrトリックは、Apache Tomcatの7

+2

からのみ利用可能であり、それは4月のコネクタで動作しません。 – csviri

+0

この記事を読んでください:http://security.stackexchange.com/questions/36853/is-it-possible-to-force-a-new-ssl-session# – eluish192

+0

@ eluish192あなたのポイントは何か分かりません。 Apache Tomcatではなく、Apache Httpdに関するこの記事をお伝えします。 – Bruno

関連する問題