it-swarm-eu.dev

Was ist der Unterschied zwischen einem X.509 "Client-Zertifikat" und einem normalen SSL-Zertifikat?

Ich richte einen Webdienst ein, über den mein Unternehmen mit einer Reihe von Geschäftskundenservices spricht. Wir werden Informationen über SOAP austauschen. Ich würde gerne die Authentifizierung mit SSL-Zertifikaten durchführen, die von beiden Parteien bereitgestellt werden, aber ich bin ein bisschen verloren, ob es einen grundlegenden Unterschied zwischen den Zertifikatstypen gibt.

Wenn Leute über HTTPS sprechen, sprechen sie davon, ein SSL-Zertifikat von Verisign oder einer anderen Behörde zu erhalten. Wenn sie über clientseitige Authentifizierung sprechen, sprechen sie über das Erhalten eines X.509-Zertifikats. Sind diese beiden Wörter für dasselbe, kann eines in das andere verwandelt werden, oder ist es ein anderer Unterschied, den ich nicht verstehe?

97

Ein X509-Zertifikat ist eine Art öffentlicher Schlüssel in einem öffentlichen/privaten Schlüsselpaar. Diese Schlüsselpaare können für verschiedene Zwecke verwendet werden, z. B. für die Verschlüsselung über SSL oder zur Identifizierung. SSL-Zertifikate sind eine Art X509-Zertifikat. SSL verschlüsselt den Datenverkehr und überprüft die Partei (Verisign vertraut darauf, dass diese Website so ist, wie sie sich ausgibt, daher könnten Sie dies wahrscheinlich auch). Verisign fungiert als Zertifizierungsstelle (CA). Der Zertifizierungsstelle wird vertraut, dass alles, was sie sagt, als wahr angesehen werden sollte (das Ausführen einer Zertifizierungsstelle erfordert wichtige Sicherheitsaspekte). Wenn Ihnen eine Zertifizierungsstelle ein Zertifikat ausstellt, das besagt, dass Sie wirklich Sie sind, verfügen Sie über ein Benutzerzertifikat/Clientzertifikat.

Einige dieser Arten von Zertifikaten können allgemein verwendet werden, andere können nur für bestimmte Aktivitäten verwendet werden.

Wenn Sie ein Zertifikat in Windows öffnen (in IE und überprüfen Sie die Zertifikateigenschaften) zu etwas über SSL navigieren oder certmgr.msc ausführen und ein Zertifikat anzeigen, klicken Sie auf die Registerkarte Details> Schlüsselverwendung. Das bestimmt, wofür das Zertifikat verwendet werden darf.

Für SOAP kann das Zertifikat für zwei Zwecke verwendet werden: Identifizierung und Verschlüsselung. Nun, drei, wenn Sie Nachrichtensignaturen einschließen (Nachrichten-Hashing).

Client-Zertifikate identifizieren den anrufenden Client oder Benutzer. Wenn die Anwendung eine SOAP - Anfrage stellt, übergibt sie das Zertifikat an den Webdienst, um ihm mitzuteilen, wer die Anfrage stellt.

65
Steve

In TLS muss der Server über einen privaten Schlüssel und ein Zertifikat verfügen (manchmal auch als Serverzertifikat bezeichnet). Das Serverzertifikat identifiziert und authentifiziert den Server. Der Client kann optional auch über einen eigenen privaten Schlüssel und ein eigenes Zertifikat verfügen (normalerweise als Client-Zertifikat bezeichnet). Wenn ein Client-Zertifikat verwendet wird, identifiziert und authentifiziert es den Client.

Im Web verfügt der Server bei HTTPS normalerweise über ein Serverzertifikat, Client-Zertifikate werden jedoch nicht verwendet. Dies bedeutet, dass der Client authentifizieren kann, mit welchem ​​Server er spricht, der Server jedoch nicht authentifizieren kann, welcher Client eine Verbindung zu ihm herstellt.

In vielen programmatischen Kontexten möchten Sie jedoch normalerweise, dass sich beide Endpunkte gegenseitig authentifizieren. Daher sollten Sie sowohl Server- als auch Client-Zertifikate verwenden.

In TLS sind alle Zertifikate X.509-Zertifikate. X.509 ist nur das Format der Daten.

Zertifikate enthalten einen öffentlichen Schlüssel und eine Signatur einer Zertifizierungsstelle (CA). Im Web verfügen Websites normalerweise über ein Serverzertifikat, das von Verisign oder einer anderen bekannten Zertifizierungsstelle ausgestellt (signiert) wird. Webbrowser enthalten eine Liste mit fast 100 verschiedenen vorinstallierten Zertifizierungsstellen. Die am häufigsten verwendeten Websites verfügen über ein Serverzertifikat, das von einer dieser Zertifizierungsstellen ausgestellt wird. Beispielsweise ist Verisign eine der Zertifizierungsstellen in der Standardliste der Zertifizierungsstellen jedes Browsers. Verisign berechnet Ihnen Geld, wenn Sie ein Zertifikat erhalten sollen.

Die Alternative zum Signieren Ihres Zertifikats durch eine Standardzertifizierungsstelle besteht darin, dass Sie ein selbstsigniertes Zertifikat verwenden können: ein Zertifikat, das nicht von einer der Standardzertifizierungsstellen ausgestellt wird, sondern von Ihnen selbst (oder von jedem, den Sie möchten). Dies wird im Web nicht besonders häufig verwendet, da selbstsignierte Serverzertifikate dazu führen, dass Browser dem Benutzer Warndialogfelder anzeigen, die die meisten Websites zu vermeiden versuchen. Für programmatische Zwecke können selbstsignierte Zertifikate jedoch einwandfrei funktionieren. Und wenn Sie selbstsignierte Zertifikate verwenden, müssen Sie kein Verisign-Geld bezahlen. Hier finden Sie Tutorials zur Verwendung der OpenSSL-Befehlszeilentools zum Erstellen eigener selbstsignierter Zertifikate.

SSL ist ein Synonym für TLS. (Technisch gesehen ist SSL der Name, der mit mehreren älteren Versionen des Standards verwendet wurde, und TLS ist ein neuer Name für mehrere neuere Versionen der Standards. Allerdings verwenden viele Leute die beiden Begriffe austauschbar.)

Ich empfehle Ihnen, den Wikipedia-Artikel zum Public-Key-Zertifikat zu lesen, um weitere nützliche Hintergrundinformationen zu erhalten.

36
D.W.

"Normale" SSL-Zertifikate normalerweise sind X.509-Zertifikate.
Diese können jedoch nur für die Serverauthentifizierung und -verschlüsselung verwendet werden: Eines der Attribute von Zertifikaten ist der festgelegte Zweck, und Sie können ihn normalerweise nicht für einen anderen Zweck verwenden.
Davon abgesehen ist ein Client-Zertifikat jedoch ziemlich identisch mit einem Server-Zertifikat, das nur als "Client-Authentifizierung" bezeichnet wird.

Funktionell werden Sie häufig feststellen, dass einige Systeme nur eine Teilmenge von Client-Zertifikaten akzeptieren, z. diejenigen, die von ihrer eigenen Zertifizierungsstelle ausgestellt wurden.

15
AviD

Funktionell sind sie identisch - ein öffentlicher RSA-Schlüssel und identifizierende Informationen, die von einer Behörde signiert wurden. In der Regel werden Ihre Serverschlüssel mit einem allgemeinen Namen eingerichtet, der die betreffende Domäne identifiziert (z. B. * .wikimedia.org). Ich glaube nicht, dass Sie durch irgendetwas daran gehindert werden, ein selbst erstelltes Zertifikat zu verwenden, solange es den Authentifizierungsanforderungen der anderen Partei entspricht.

4
Jeff Ferland