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のためにそれをするように見えることはできません。
ここで何ができますか?これらのソリューションのいずれかを修正できますか、それとも他のソリューションがありますか?
からのみ利用可能であり、それは4月のコネクタで動作しません。 – csviri
この記事を読んでください:http://security.stackexchange.com/questions/36853/is-it-possible-to-force-a-new-ssl-session# – eluish192
@ eluish192あなたのポイントは何か分かりません。 Apache Tomcatではなく、Apache Httpdに関するこの記事をお伝えします。 – Bruno