Keygen-Tag in HTML5

75

Also bin ich auf dieses neue Tag in HTML5 gestoßen <keygen>. Ich kann nicht genau herausfinden, wofür es ist, wie es angewendet wird und wie es das Browserverhalten beeinflussen könnte.

Ich verstehe, dass dieses Tag für die Formularverschlüsselung vorgesehen ist, aber was ist der Unterschied zwischen <keygen>und einem SSL-Zertifikat für Ihre Domain? Was ist das challengeAttribut?

Ich habe nicht vor, es zu verwenden, da es bei weitem nicht in einer akzeptablen Reihe von Browsern implementiert ist, aber ich bin gespannt, was genau dieses Tag bewirkt. Alles, was ich finden kann, ist eine vage Dokumentation des Ausstechers ohne echte Anwendungsbeispiele.


Bearbeiten:

Ich habe hier ein SEHR informatives Dokument gefunden . Dies durchläuft sowohl die clientseitige als auch die serverseitige Implementierung des keygen-Tags.

Ich bin immer noch gespannt, welchen Nutzen dies gegenüber einem Domain-SSL-Zertifikat haben würde.

Craige
quelle
Hier ist eine gute Dokumentation.
Deniz Dogan
1
Außerdem gibt Mark Pilgrim hier eine kurze Erklärung: blog.whatwg.org/this-week-in-html5-episode-35 mit einer Menge Links.
Kai
Ein Teil Ihrer Frage scheint nicht beantwortet zu sein. Die mit dem <keygen>Element verbundene Herausforderung kann verwendet werden, um eine Passphrase mit dem Element bereitzustellen SPKAC. Sobald die Clientzertifikatsignaturanforderung von der Zertifizierungsstelle verarbeitet und das resultierende Clientzertifikat im Benutzerbrowser eingerichtet wurde, kann die Herausforderung als Identitätsprüfung verwendet werden, ähnlich wie es ein typisches Kennwort bei freigegebenen oder mehreren Benutzern auf demselben Computer tut Terminal.
Jas-
Kann ich <keygen>in meinem HTML formohne SSL-Zertifikat verwenden?
151291

Antworten:

32

Bei SSL geht es um "Serveridentifikation" oder "Server- UND Clientauthentifizierung (gegenseitige Authentifizierung)".

In den meisten Fällen legt nur der Server während des SSL-Handshakes sein Serverzertifikat vor, damit Sie sicherstellen können, dass dies wirklich der Server ist, zu dem Sie voraussichtlich eine Verbindung herstellen. In einigen Fällen möchte der Server auch überprüfen, ob Sie wirklich die Person sind, für die Sie sich ausgeben. Dazu benötigen Sie ein Client-Zertifikat.

Das <keygen>Tag generiert ein öffentliches / privates Schlüsselpaar und erstellt dann eine Zertifikatanforderung. Diese Zertifikatanforderung wird an eine Zertifizierungsstelle (CA) gesendet. Die Zertifizierungsstelle erstellt ein Zertifikat und sendet es an den Browser zurück. Jetzt können Sie dieses Zertifikat für die Benutzerauthentifizierung verwenden.

Duddex
quelle
1
Kann ich <keygen>in meinem HTML formohne SSL-Zertifikat verwenden?
151291
24

Ihnen fehlt etwas Geschichte. keygenwurde zuerst von Netscape unterstützt, als es noch ein relevanter Browser war. IE, OTOH, unterstützte dieselben Anwendungsfälle über seine ActiveX-APIs. Opera und WebKit (oder sogar KHTML), die nicht bereit sind, die gesamte Win32-API zurückzuentwickeln, wurden keygenstattdessen rückentwickelt.

Es wurde in Web Forms 2.0 (das jetzt in die HTML-Spezifikation integriert wurde) angegeben, um die Interoperabilität zwischen den Browsern zu verbessern, die es implementiert haben.

Seitdem hat das IE-Team seine Weigerung zur Implementierung wiederholt keygen, und die Spezifikation (um zu vermeiden, dass sie zu trockener Science-Fiction wird) wurde geändert, um keine tatsächliche Implementierung zu erfordern:

Hinweis: In dieser Spezifikation wird nicht angegeben, welche Schlüsseltypen Benutzeragenten unterstützen sollen. Es ist möglich, dass ein Benutzeragent überhaupt keine Schlüsseltypen unterstützt.

Kurz gesagt, dies ist kein neues Element, und wenn Sie den IE nicht ignorieren können, ist es wahrscheinlich nicht das, was Sie wollen.

Ms2ger
quelle
7

Wenn Sie nach "genau" suchen, würde ich empfehlen, den RFC zu lesen .

Das keygenElement dient zum Erstellen eines Schlüssels für die Authentifizierung des Benutzers, während SSL sich um die Privatsphäre der Kommunikation und die Authentifizierung des Servers kümmert. Zitat aus dem RFC:

Diese Spezifikation gibt nicht an, wie der generierte private Schlüssel verwendet werden soll. Es wird erwartet, dass der Server nach Erhalt der SPKAC-Struktur (SignedPublicKeyAndChallenge) ein Client-Zertifikat generiert und es dem Benutzer zum Download zurückgibt. Dieses Zertifikat kann nach dem Herunterladen und Speichern im Schlüsselspeicher zusammen mit dem privaten Schlüssel zur Authentifizierung bei Diensten verwendet werden, die TLS und Zertifikatauthentifizierung verwenden.

Andrew
quelle
Dann verschlüsseln beide Methoden die Kommunikation, aber bei <keygen>Schlüsseln geht es um die Benutzeridentifikation, während es bei SSL um die Serveridentifikation geht?
Craige
1
RFCs sind Veröffentlichungen der IETF. Der von Ihnen bereitgestellte Link verweist auf einen W3C-Entwurf einer Spezifikation.
Ortomala Lokni
5

Veraltet

Diese Funktion wurde aus den Webstandards entfernt. Obwohl einige Browser dies möglicherweise noch unterstützen, wird es gerade gelöscht. Vermeiden Sie die Verwendung und aktualisieren Sie den vorhandenen Code nach Möglichkeit. Beachten Sie, dass diese Funktion jederzeit nicht mehr funktioniert.

Quelle

Neri Barakat
quelle
-2

Dies kann für Websites nützlich sein, die Dienste anbieten, bei denen die Nutzer für den Dienst bezahlen müssen, z. B. Video-on-Demand oder eine Nachrichten-Website für Fachleute wie Bloomberg. Mit diesen Schlüsseln können Benutzer den Inhalt nur auf ihrem Computer und nicht auf gleichzeitigen Computern anzeigen! Sie entscheiden, wie Daten gespeichert und verarbeitet werden. Sie können eine ASP- oder PHP-Datei angeben, die die Variablen empfängt, und Ihre Datei speichert diesen Schlüssel im Benutzerprofil. Auf diese Weise können sich Ihre Benutzer nicht von einem anderen Computer aus anmelden, wenn Sie möchten. Sie können sie zwingen, ihre E-Mails zu lesen, um diesen neuen Computer zu autorisieren, genau wie Steam. Grundsätzlich ermöglicht es die Individualisierung des Servicezugriffs, wenn Ihr Lizenzmodell wie das Betriebssystem pro Computer ausgeführt wird.

Sie können die technischen Daten hier überprüfen: http://www.w3.org/TR/html-markup/keygen.html

Paulo Santos
quelle
5
Ihr Anwendungsfall funktioniert nicht wirklich. Nichts hindert Sie daran, den Schlüssel und das Zertifikat aus dem Browser zu exportieren und auf einen anderen Computer zu exportieren.
Bruno
Ich glaube nicht, dass Sie ganz verstehen, wofür dieses Element war.
Matti Virkkunen