17 Stimmen

https-Client-Zertifikat Abmeldung/Wiederanmeldung

Ich habe eine Website mit SSL-Zertifikat-Authentifizierung. Wie kann ich den Webbrowser zwingen, das zu verwendende Zertifikat erneut abzufragen? Es wäre brauchbar für Logout, aber der Anwendungsfall hier ist Wechsel der Benutzeridentität.

Ich erinnere mich daran, dass ich den Benutzer auf eine Seite mit SSL-Einstellungen geleitet habe, die mit dem aktuellen Authentifizierungszertifikat nicht kompatibel sind, konnte aber die richtigen Einstellungen nicht finden.

Ich verwende Apache mod-ssl, aber eine IIS-Lösung wäre auch willkommen.

Aktualisierung: Ich frage speziell nach der Serverseite: Wie kann man eine URL auf demselben Hostnamen einrichten, die Client-Zertifikate erfordert, aber alle Zertifikate ablehnt.

Für Firefox, javascript:window.crypto.logout(); funktioniert mit kleinen Unannehmlichkeiten für den Benutzer (die meiner Meinung nach mit einem Skript umgangen werden können).

9voto

Bruno Punkte 114719

Dies ist im Allgemeinen ziemlich schwierig (und sicherlich einer der Gründe, warum die Verwendung von Client-Zertifikaten für die meisten Benutzer mühsam sein kann).

Auf der Client-Seite gibt es einige JavaScript-Techniken, die jedoch nicht durchgängig unterstützt werden (siehe diese Frage ).

Mit Apache Tomcat 7 können Sie die SSL/TLS-Sitzung mithilfe eines Anfrageattributs ungültig machen, wie in diese Frage .

Mir ist kein Hook bekannt, mit dem man dies mit Apache Httpd (und mod_ssl ). Die hinter Apache Httpd nutzbaren Mechanismen (z. B. mod_php , CGI, FCGI, ...) können im Allgemeinen keine Einstellungen oder Umgebungsvariablen ändern, die von mod_ssl was notwendig wäre, um die Sitzung für ungültig zu erklären.

Auf dem IIS, diese Frage ist noch unbeantwortet.

Vom Standpunkt des Browsers aus gesehen besteht der allgemeine Weg darin, in die Einstellungen des Browsers zu gehen und den SSL-Status zu löschen (dies variiert je nach Browser, erfordert aber in der Regel mindestens ein paar Dialogfelder und nicht nur eine schnelle Schaltfläche, zumindest nicht ohne ein Plugin).

1voto

atom88 Punkte 1229

In einem clientseitigen Webbrowser können Sie dies für MSIE (Internet Explorer) tun: Löschen Sie den SSL-Status, indem Sie auf Extras>Internetoptionen>Inhalt(Registerkarte)>SSL-Status löschen gehen.

In Firefox (vor Version 20) können Sie das tun: Extras | Privates Surfen starten.

Besuchen Sie dann die betreffende Seite. Oder wählen Sie "Extras | Privates Surfen beenden" und dann...

Wenn Sie dann eine Seite neu laden, auf der Sie sich befinden, werden Sie aufgefordert, ein neues Client-Zertifikat vorzulegen (wenn Sie mehr als eines von der CA haben, der Ihr Server vertraut). Wenn Sie nur ein Zertifikat haben, wird das einzige PKI-Client-Zertifikat verwendet, das sich in Ihrem Speicher befindet.

1voto

eluish192 Punkte 125

Zum Abmelden lesen Sie diesen Beitrag: https://security.stackexchange.com/questions/36853/is-it-possible-to-force-a-new-ssl-session#

Auf der Client-Seite werden SSL-Sitzungen normalerweise im RAM gespeichert. Der Internet Explorer beispielsweise besteht intern aus mehreren Prozessen, die miteinander kommunizieren, und Sie müssen sie alle beenden, damit er eine SSL-Sitzung vergisst (in der Praxis geschieht dies nur, wenn Sie alle IE-Fenster geschlossen haben).

Eine Alternative kann das Schließen des Browsers mit Javascript sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X