Was passiert mit dem Browser eines Benutzers, wenn ein SSL-Zertifikat während der Sitzung ersetzt wird?

8

Angesichts der Tatsache, dass moderne Browser Sicherheitszertifikate, die mit dem SHA1-Hash-Algorithmus signiert wurden, auslaufen lassen , sind wir damit beschäftigt, alle unsere SHA1-Zertifikate durch SHA2 zu ersetzen. Im Allgemeinen könnten wir abends oder am Wochenende, wenn wenig bis gar kein Verkehr herrscht, einfach Zertifikate für diese hauptsächlich intern verwendeten Web-Apps ersetzen.

Was würde passieren, wenn ich mich unwissentlich mitten in einer verschlüsselten Sitzung befände und das Zertifikat für die Domain ersetzt würde?

Um auf der sicheren Seite zu sein, haben wir unseren Kunden mitgeteilt, dass sie davon ausgehen können, dass Benutzer während der Sitzung während dieser Änderung eine Unterbrechung ihrer Sitzung und einen möglichen Verlust von Daten sehen, die noch nicht in der Datenbank gespeichert sind. Wenn ich mich während eines Zertifikataustauschs in der Mitte der Sitzung befände, könnte ich davon ausgehen, dass mein Browser beim Laden der nächsten Seite nach dem Ersetzen des Zertifikats ein anderes signiertes Zertifikat sieht, mit dem meine Sitzung eingerichtet wurde, und die Sitzung veranlasst, " ausrasten". Ich würde erwarten, dass alle Browser auf ähnliche Weise mit dieser Situation umgehen, aber bitte klären Sie mich auf, wenn ich mich irre.

Ich habe ziemlich viel Zeit damit verbracht, nach genaueren Informationen darüber zu suchen, wie Browser mit diesem Szenario umgehen würden, aber ich hatte nicht viel Glück, allgemeine oder technische Informationen zu finden. Ich bin wirklich neugierig und habe beschlossen, diese Frage zu stellen, in der Hoffnung, eine Antwort zu erhalten, die das Q unter Bezugnahme auf einige glaubwürdige Quellen zur Validierung präzise beantwortet.

Dallas
quelle

Antworten:

7

... mein Browser würde ein anderes signiertes Zertifikat sehen, mit dem meine Sitzung eingerichtet wurde, und die Sitzung "ausflippen" lassen.

Aus der Sicht eines Webmasters und ohne auf Details zur Funktionsweise von SSL einzugehen (auf die unter Informationssicherheit besser eingegangen werden sollte ) ...

Der Sitzungsschlüssel würde nicht mehr übereinstimmen, sodass entweder der Server- oder der Client-Browser die Verbindung abbrechen würde. Der Client-Browser würde dann eine weitere Anfrage nach Ressourcen auf der nächsten nicht empfangenen Seite stellen, wodurch eine neue Verbindung hergestellt und der SSL-Handshake, das Zertifikat, der Schlüsselaustausch und der Sitzungsschlüssel erneut hergestellt werden (wie im Folgenden unten kurz erläutert) hier ).

Da das neue SSL-Zertifikat an dieselbe Domäne ausgestellt wird, werden Benutzer wahrscheinlich nichts bemerken, da sich nur das Zertifikat ändern würde (dh die grüne Sperre wird weiterhin angezeigt), was Benutzer normalerweise ohnehin nicht anzeigen, insbesondere zwischen Seiten auf die gleiche Seite.


Was Sie vielleicht nicht unter Berücksichtigung jedoch ist , dass , wenn Sie die neue SSL - Zertifikat installieren, den Sie konfigurieren haben werden und starten Sie Ihren Server sowieso, also Sitzungen dann unabhängig geschlossen würden und Browser nicht erhalten etwas ...

Daher würde ich empfehlen, den gesamten Datenverkehr mithilfe einer 302-Umleitung vorübergehend auf eine Seite "Wartung" umzuleiten. Auf Ihrer Website wird vorab eine Benachrichtigung veröffentlicht, aus der hervorgeht, wann die Wartung durchgeführt wird und wie lange die Website nicht verfügbar sein wird.

Eine Alternative zur Umleitung besteht darin, einen 503 Service Unavailable HTTP-Server-Antwortcode mit einem   Antwortfeld für den HTTP-Header " Retry-After" zu senden, um anzugeben, wann der Server wieder verfügbar sein würde.

Wenn Sie mehr als einen Server für das Front-End der Site haben, können Sie das Zertifikat auf einem anderen Server installieren und neue Verbindungen zu diesem Server umleiten, während Sie die anderen Server aktualisieren. Sie können für bestehende Verbindungen in Apache überprüfen hier und IIS hier zu helfen mit , dass , wenn Sie nicht bereits einen sicheren Ausfall oder Load-Balancing verwenden Setup.

dan
quelle
Die Zertifikate befinden sich vorne auf einem Load Balancer. Es gibt also keine Unterbrechung des Dienstes und es ist keine 503 / Temp-Umleitung erforderlich.
Dallas
Wenn ich also auf Seite 5 eines 10-seitigen Workflows wäre ... würde meine Sitzung die bereits auf den Seiten 1 bis 5 eingegebenen Informationen beibehalten und mit dem neuen Zertifikat auf Seite 6 fortfahren, oder würde das Zurücksetzen der Verbindung alle Sitzungsvariablen verlieren und mich starten wieder auf Seite 1 frisch?
Dallas
Das hängt davon ab, wie Ihre Webanwendung codiert ist. Es sollte die Sitzungs-ID für den Benutzer verfolgen (gespeichert in einem Cookie, einem Formularfeld, einer URL usw.), die sich von der SSL / TLS-Sitzung unterscheidet . Wenn also eine Verbindungsunterbrechung auftritt (die normalerweise auftreten kann), bleiben die Sitzungsdaten des Benutzers für einen bestimmten Zeitraum erhalten, bis eine weitere Verbindung hergestellt wird. Unter den seltsamen Umständen, dass Sitzungs-IDs nicht nachverfolgt werden, sollten Sie neue Verbindungen auf einen anderen Server auslagern und warten, bis vorhandene Verbindungen abgeschlossen sind oder eine Zeitüberschreitung auftritt, bevor Sie diesen Server offline schalten, um sein SSL-Zertifikat zu aktualisieren.
dan
Ich entschuldige mich für die schlechte Formulierung. Ich habe festgestellt, ob eine Sitzung ein Problem darstellt, wenn die nächste Verbindung von einem anderen Zertifikat stammt, mit dem die Sitzung hergestellt wurde. Interessiert es die Sitzung nicht? Ich würde denken, dass ein anderes Zertifikat Auswirkungen auf die Wiederaufnahme einer Sitzung haben würde, aber ich habe den Eindruck, dass Sie sagen, dass die Sitzung die Verbindung nicht interessiert. Mir ist nicht bekannt, was der Unterschied zwischen SSL-Sitzung und "Benutzersitzung" ist. Ich hatte den Eindruck, dass die von uns verfolgte Sitzungs-ID die SSL / TLS-Sitzungs-ID ist, die meiner Meinung nach auch mit der Sitzung des Benutzers identisch ist.
Dallas
Ich denke, Sie verwechseln die Terminologie ein wenig: Die Sitzungs-ID wird vom Server generiert und verwendet, um den Benutzer durch nachfolgende Anforderungen zu verfolgen, da HTTP zustandslos ist . Alle TCP-Socket-Verbindungen können beendet werden. Es liegt also an der Anwendung , den Benutzer zu verfolgen, wenn dies der Fall ist. Dies erfolgt mithilfe einer Sitzungs-ID . Beispiel: Melden Sie sich sicher bei einer Bank oder einer anderen sicheren Site an, klicken Sie auf einige Links, deaktivieren Sie dann Ihre Nic-Karte, aktivieren Sie sie und klicken Sie auf einen anderen Link. Sie werden weiterhin angemeldet, da Ihre Sitzungs-ID anhand ihrer Links verfolgt wird Anwendung.
dan