SSL-Serverauthentifizierung

Die SSL-Serverauthentifizierung stellt sicher, dass die Websites, mit denen Sie kommunizieren, keine falsche Identität vorspiegeln. Dabei wird die Identität eines Servers mithilfe von Standardverfahren der Kryptografie mit einem öffentlichen Schlüssel geprüft, um sicherzustellen, dass der Server über ein gültiges Zertifikat und eine gültige öffentliche Kennung verfügt, die von einer Zertifizierungsstelle (Certificate Authority, CA) ausgegeben wurde, die in der Liste der anerkannten CAs im Client enthalten ist.

Die Kommunikation mit "vertrauenswürdigen" Servern, die über Authentifizierungszertifikate verfügen, die von einer Zertifizierungsstelle (Certificate Authority, CA) ausgegeben wurden, ist ein unverzichtbares Elemente zum Einrichten einer geschützten Umgebung. Authentifizierungszertifikate sind digital signierte Dokumente, die den öffentlichen Schlüssel an die Identität des Eigners des privaten Schlüssels binden. Die Authentifizierung erfolgt während der Verbindungszeit und ist unabhängig von der Anwendung bzw. dem Anwendungsprotokoll. In SSL erfolgt die Authentifizierung durch den Austausch von Zertifikaten (dabei handelt es sich um Datenblöcke in einem Format, das im Standard X.509 ITU-T beschrieben ist). X.509-Zertifikate werden von einer Zertifizierungsstelle ausgegeben und digital signiert.

Durch die Verwendung von SSL ist jedoch nicht gewährleistet, dass der Client mit dem richtigen Server kommuniziert. Als Beispiel hierfür soll das folgende Szenario dienen: Die Server "Server1" und "Server2" verfügen beide über gültige Zertifikate von einer CA, die von dem Client ("Client") anerkannt wird. Client benötigt eine sichere Sitzung mit Server1, aber Server2 will diesen Datenaustausch ausspionieren und befindet sich an einer hierfür geeigneten physischen Position.
  1. Client sendet eine Anforderung für eine SSL-Sitzung an Server1. Die Anforderung (und der nachfolgende Datenverkehr) wird über Server2 geleitet. Anstatt die Anforderung von Client an Server1 weiterzuleiten, antwortet Server2 direkt auf die Anforderung und sendet sein eigenes Zertifikat an Client.
  2. Client empfängt das Zertifikat von Server2 und prüft die Liste der sicheren CAs. Da das Zertifikat von Server2 von derselben CA signiert ist wie das Zertifikat von Server1, akzeptiert Client das Zertifikat und startet eine sichere Sitzung mit Server2.
  3. Nachdem er die sichere Sitzung mit Client eingerichtet hat, fordert Server2 eine eigene SSL-Sitzung mit Server1 an und richtet diese Sitzung ein. Von diesem Zeitpunkt an sendet Client verschlüsselte Informationen an Server2. Server2 entschlüsselt die Informationen, verschlüsselt sie erneut und sendet sie an Server1. Das Gleiche gilt für den Informationsfluss in entgegengesetzter Richtung. Dies führt dazu, dass Server2 die übertragenen Daten lesen und sogar ändern kann, obwohl alle Daten im Internet verschlüsselt übertragen werden.

Die SSL-Serverauthentifizierung soll dieses unerwünschte Ergebnis verhindern. Wenn die Serverauthentifizierung aktiviert ist, prüft Client nicht nur, ob das Zertifikat des Servers vertrauenswürdig ist, sondern auch, ob der Internetname im Zertifikat mit dem Internetnamen des Servers übereinstimmt. Wenn die Internetnamen übereinstimmen, wird die SSL-Vereinbarung fortgesetzt. Stimmen die Namen nicht überein, wird die Verbindung beendet.

Bei aktivierter Serverauthentifizierung wird das oben beschriebene Sicherheitsszenario wie folgt fortgesetzt:
  1. Client sendet eine Anforderung für eine SSL-Sitzung an Server1. Die Anforderung (und der nachfolgende Datenverkehr) wird über Server2 geleitet. Anstatt die Anforderung von Client an Server1 weiterzuleiten, antwortet Server2 direkt auf die Anforderung und sendet sein eigenes Zertifikat an Client.
  2. Client empfängt das Zertifikat von Server2 und prüft die Liste der sicheren CAs. Da das Zertifikat von Server2 von derselben CA signiert ist wie das Zertifikat von Server1, akzeptiert Client das Zertifikat und startet eine sichere Sitzung mit Server2.
  3. Nachdem die sichere Sitzung eingerichtet ist, aber vor dem Senden bzw. Empfangen der eigentlichen Daten, vergleicht Client den Internetnamen in dem Zertifikat, das er empfangen hat, mit dem Namen des Servers, mit dem kommuniziert werden soll. Da die Namen nicht identisch sind, wird die Verbindung von Client abgebrochen.