Kann Https ohne Zertifikat funktionieren?

9

Kürzlich hat unser Infrastruktur-Team unserem Entwicklungsteam mitgeteilt, dass Sie kein Zertifikat für https benötigen. Sie erwähnten, dass der einzige Vorteil des Kaufs eines Zertifikats darin bestand, dem Verbraucher die Gewissheit zu geben, dass er eine Verbindung zur richtigen Website herstellt.

Dies widerspricht allem, was ich über https angenommen habe.

Ich habe Wikipedia gelesen und es wird erwähnt, dass Sie entweder ein vertrauenswürdiges Zertifikat oder ein selbstsigniertes Zertifikat benötigen, um https zu konfigurieren.

Ist es möglich , zu konfigurieren , ohne auf https reagiert IIS jedes Zertifikat?

Kennzeichen
quelle
7
Möglicherweise ist dies nur ein Kommunikationsproblem. Ihr Server verfügt wahrscheinlich über selbstsignierte Zertifikate. Diese Warnung vermeiden Sie übrigens, indem Sie ein öffentliches vertrauenswürdiges Zertifikat verwenden: m86security.com/kb/article.aspx?id=13446 Dies kann in Ihrer Umgebung akzeptabel sein oder auch nicht. Ich würde sagen, es ist mehr als nur Seelenfrieden - auf einer öffentlichen Website ist es ein Zeichen von Professionalität!
Dan
5
Selbstsignierte Zertifikate bieten Ihnen Verschlüsselung, können jedoch nicht vor Angriffen durch Menschen in der Mitte schützen, da Sie für selbstsignierte Zertifikate dieselben Warnungen über ungültige oder nicht überprüfte Zertifikate erhalten wie für jemanden, der den Datenverkehr abfängt und entschlüsselt. Stehlen Sie die Daten und verschlüsseln Sie sie erneut, um zum Client zurückzukehren.
Bart Silverstrim
1
"Selbstsignierte Zertifikate bieten Ihnen Verschlüsselung, können jedoch nicht vor Angriffen durch Menschen in der Mitte schützen [...]", es sei denn, der Benutzer kann diesen selbstsignierten Zertifikaten explizit durch einen Out-of-Band-Mechanismus vertrauen Nur realistisch möglich für eine kleine Benutzerbasis, die Sie über einen solchen Out-of-Band-Mechanismus kennt. In der Tat unwahrscheinlich.
Bruno
Oder wenn sie es beim ersten Mal vertrauen, werden sie gewarnt, wenn es sich in Zukunft ändert. Genau wie SSH-Signaturen.
Mfinni
1
Technisch SSL / TLS nicht benötigte Zertifikate einen Kommunikationskanal zu sichern. Tatsächlich kann SSL / TLS andere Mechanismen zum Sichern des Kanals verwenden: PgP-Zertifikate, Benutzername / Passwort, vorinstallierte Schlüssel oder "anonym" (überhaupt keine Authentifizierung). In ähnlicher Weise garantiert SSL / TLS keine Verschlüsselung, es gibt viele verschiedene Verschlüsselungen, einschließlich "null" (überhaupt keine Verschlüsselung). Und es gibt ähnliche Optionen für die Digest-Authentifizierung. Das ist alles großartig, aber welche Programme verwenden irgendetwas davon: im Grunde genommen überhaupt keine, definitiv keine große Server- oder Browsersoftware (alle erfordern Zertifikate).
Chris S

Antworten:

24

Nein, Sie müssen ein Zertifikat haben. Es kann selbstsigniert sein, es muss jedoch ein öffentliches / privates Schlüsselpaar vorhanden sein, um den sitzungssymmetrischen Schlüssel zwischen Server und Client auszutauschen und Daten zu verschlüsseln.

Driftbauer
quelle
Anonymes Diffie-Hellman erlaubte, wie in einer anderen Antwort erwähnt, eine Verbindung ohne Zertifikat - aber moderne OpenSSL-Versionen werden normalerweise ohne Unterstützung für ADH kompiliert.
Brandon Rhodes
12

Kurz gesagt, nein, aber es kann subtile Fälle geben, je nachdem, wie Sie das System bereitstellen möchten.

HTTPS ist HTTP über SSL / TLS, und Sie können SSL / TLS ohne Zertifikat oder mit Zertifikaten anderer Typen als X.509 verwenden .

  • Anonyme Cipher Suites: Sie können Verschlüsselung bereitstellen, jedoch ohne Authentifizierung. In Bezug auf die Sicherheit eher nutzlos ... Um RFC 4346 zu zitieren : " Anonymer Diffie-Hellman wird dringend davon abgeraten, weil er Man-in-the-Middle-Angriffe nicht verhindern kann. "
  • Pre-Shared Keys : Es verfügt über einen eigenen Mechanismus zum Überprüfen der Remote-Identität, aber die gemeinsame Natur der Schlüssel bringt seine eigenen Probleme mit sich (insbesondere eine eingeschränkte Bereitstellung).
  • Kerberos-Verschlüsselungssuiten : Der Client kann die Identität des Servers anhand des Kerberos-Prinzipalnamens überprüfen.

Genau genommen sagt die HTTP-über-TLS-Spezifikation Folgendes aus:

Im Allgemeinen werden HTTP / TLS-Anforderungen durch Dereferenzieren eines URI generiert. Infolgedessen ist der Hostname für den Server dem Client bekannt. Wenn der Hostname verfügbar ist, MUSS der Client ihn anhand der Serveridentität überprüfen, die in der Zertifikatnachricht des Servers angegeben ist, um Man-in-the-Middle-Angriffe zu verhindern.

Wenn der Client über externe Informationen zur erwarteten Identität des Servers verfügt, kann die Überprüfung des Hostnamens weggelassen werden. (Beispielsweise kann ein Client eine Verbindung zu einem Computer herstellen, dessen Adresse und Hostname dynamisch sind, der Client jedoch das vom Server vorgelegte Zertifikat kennt.) In solchen Fällen ist es wichtig, den Umfang akzeptabler Zertifikate so weit wie möglich einzuschränken um den Menschen in der Mitte Angriffe zu verhindern. In besonderen Fällen kann es angebracht sein, dass der Client die Identität des Servers einfach ignoriert. Es muss jedoch verstanden werden, dass dadurch die Verbindung für aktive Angriffe offen bleibt.

Kurz gesagt, es ist eindeutig für die Verwendung mit einem X.509-Zertifikat vorgesehen (es verweist eindeutig auf RFC 2459, das später durch RFC 3280 und 5280 ersetzt wird: PKIs mit X.509-Zertifikaten).

Wenn Sie Kerberos-Verschlüsselungssuiten verwenden, kann es zu einem Randfall kommen. Es kann sinnvoll sein, das Kerberos-Serviceticket des Servers so zu behandeln, dass es denselben Zweck wie das X.509-Zertifikat in normalem HTTPS hat, um die Identität der Remote-Partei zu überprüfen. Es passt nicht ganz in die Regeln von RFC 2818 (obwohl es möglicherweise unter " Wenn der Client externe Informationen zur erwarteten Identität des Servers hat, kann die Überprüfung des Hostnamens weggelassen werden. "), Aber dies wäre nicht der Fall völlig absurd. Abgesehen davon glaube ich nicht, dass übliche Browser TLS-Kerberos-Verschlüsselungssuiten im Allgemeinen unterstützen (eine Reihe kann Kerberos über die SPNEGO-Authentifizierung unterstützen, aber das hat nichts damit zu tun). Darüber hinaus würde dies auch nur in einer Umgebung funktionieren, in der die Verwendung von Kerberos geeignet ist.

" Den Verbrauchern die Gewissheit geben, dass sie eine Verbindung zur richtigen Website herstellen " ist tatsächlich eine der wichtigsten Voraussetzungen für die Sicherung der Kommunikation zwischen ihnen und Ihrem Server. Verwenden Sie ein Zertifikat, das sie überprüfen können, mit den entsprechenden Namenskonventionen (RFC 2818 oder neuer RFC 6125).

Bruno
quelle
1

Sie können https ohne Zertifikat NICHT verwenden. Sie müssen entweder ein vertrauenswürdiges Zertifikat kaufen oder ein selbstsigniertes Zertifikat zum Testen erstellen. Ein Teil der Konfiguration Ihres Webservers für die Verwendung von https besteht darin, ihn auf die richtigen Schlüsseldateien zu verweisen. Dies gilt natürlich für alle Webserver, nicht nur für iis.

Khaled
quelle
Um zu testen, ob Ihre OpenSSL zertifikatlose Verbindungen unterstützen kann, führen Sie openssl ciphersein ADHProtokoll aus und suchen Sie nach einem Protokoll wie ADH-AES256-SHA: Wenn ein solches Protokoll vorhanden ist, können Sie eine Verbindung technisch herstellen, ohne dass Zertifikate beteiligt sind.
Brandon Rhodes