Sind gültige digitale Zertifikate für die Clients (Java, C ++ usw.) erforderlich, um erfolgreiche HTTPS -Verbindungen herzustellen?

StackOverflow https://stackoverflow.com/questions/1001078

  •  05-07-2019
  •  | 
  •  

Frage

Ich plane, ein kleines eigenständiges Programm zu implementieren, das eine HTTPS -Anfrage an einen Server stellt. Benötigt das ein gültiges SSL -Zertifikat im Client? Wie funktioniert der SSL -Handschlag in diesem Fall? Gibt es Sicherheitsprobleme im Kunden, das kein SSL -Zertifikat hat?

War es hilfreich?

Lösung

Abgesehen vom Verschlüsseln des Netzwerkverkehrs wird HTTPS normalerweise zur Authentifizierung des Servers verwendet. Um Clients beruhigende Informationen darüber zu geben, wer den Server gehört, muss der Client die Vertrauenskette im vom Server veröffentlichten Zertifikat inspizieren. Damit dies automatisch geschieht, sollte der Client -Computer ein Zertifikat installiert haben, in dem eine Zertifizierungsbehörde beschrieben wird, die das Serverzertifikat ausgestellt hat. Normalerweise befinden sich solche Zertifikate auf Ihrem Computer in einem Geschäft namens "Trusted Root Certification Behörden" und die meisten Betriebssysteme sind mit einer Reihe von bereits installierten CAS ausgestattet.

Darüber hinaus bieten viele Webserver eine Funktion an, in der sich der Client mit dem Server authentifizieren kann, indem er ein Client -Zertifikat bereitstellt. Der Webserver kann das vom Client stammende Zertifikat inspizieren und auf eine Reihe von Berechtigungen auf dem Server nachordnen. Diese "Client -Authentifizierung" ist für eine funktionierende HTTPS -Sitzung nicht erforderlich, sondern nur eine Option.

Kurz gesagt, Sie nicht eigentlich nicht brauchen Jedes Zertifikat über den Kunden, aber Sie werden es wahrscheinlich wollen Um ein Root CA -Zertifikat zu haben, um die Identität des Servers zu validieren. Wenn Sie dieses Zertifikat nicht haben, ist es Ihnen unmöglich, dem Server zu vertrauen (es sei denn, Sie haben einen weiteren guten Grund dafür), aber Sie könnten trotzdem dafür entscheiden, Daten damit auszutauschen.

Andere Tipps

Wenn Sie mehr über den HTTPS -Handshake und das, was verhandelt wird

http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html

Ein Client -Zertifikat ist nur erforderlich, wenn der Server eine benötigt. Ein Client -Zertifikat ermöglicht dem Server, den Client zu authentifizieren. Dies ist jedoch nur dann nützlich, wenn der Server über eine Liste aller autorisierten Clients verfügt. Dies ist im Allgemeinen bei einem Webserver im Allgemeinen nicht der Fall, daher ist es ziemlich selten, dass sie Clientzertifikate benötigen.

Bei der vorliegenden Prämie wirkt sich das clientseitige Zertifikat nicht auf die Festlegung des sicheren Kanals aus. (Dazu ist nur das Zertifikat des Servers erforderlich, und das Hinzufügen eines Client -Zertifikats in den Mix ändert den Prozess nicht.) Sobald ein sicherer Kanal festgelegt ist, verwendet der Server das Zertifikat des Clients den Authentifizieren des Clients (im Allgemeinen, indem der Client die Öffentlichkeit des Clients vergleicht Schlüssel oder Name mit einer Liste autorisierter Kunden).

Sie benötigen kein Zertifikat, um eine HTTPS -Verbindung herzustellen. Sie müssen jedoch wissen, mit wem Sie kommunizieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top