Frage

Ich möchte das tun, was myopenid tut: Sobald Sie sich angemeldet haben, können Sie auf eine Schaltfläche klicken, die Ihnen ein SSL-Zertifikat generiert.Der Browser lädt dann dieses Zertifikat herunter und speichert es.Wenn Sie später zu yourid.myopenid.com zurückkehren, kann Ihr Browser sein gespeichertes Zertifikat zur Authentifizierung verwenden, sodass Sie nie ein Passwort benötigen.

Meine Frage lautet also: Was ist erforderlich, damit das funktioniert?Wie erstelle ich Zertifikate?Wie validiere ich sie, nachdem sie mir zurückgegeben wurden?

Mein Stack ist Rails auf Apache mit Passenger, aber ich bin nicht allzu wählerisch.

War es hilfreich?

Lösung

Diese werden üblicherweise als clientseitige Zertifikate bezeichnet.

Ich habe es nicht wirklich verwendet, aber eine modifizierte Version von Restful-Authentication finden Sie hier Hier Das sieht nach dem aus, wonach du suchst.

Ich habe das über gefunden DR.Nics Beitrag

Andere Tipps

Hängt vom Server ab, aber die einfachste Lösung, die ich kenne, ist die Verwendung von Apache:

FakeBasicAuth

„Wenn diese Option aktiviert ist, wird der Subject Distinguished Name (DN) des Client-X509-Zertifikats in einen HTTP-Basic-Authorization-Benutzernamen übersetzt.Dies bedeutet, dass die Standard-Authentifizierungsmethoden von Apache zur Zugriffskontrolle verwendet werden können.Der Benutzername ist nur der Betreff des X509-Zertifikats des Clients (kann durch Ausführen des OpenSSL-Befehls openssl x509 ermittelt werden):openSL x509 -noout -subject -in Zertifikat.crt).Beachten Sie, dass vom Benutzer kein Passwort eingeholt wird..."

Ich bin mir bei Rails nicht sicher, aber auf die übliche Umgebungsvariable REMOTE_USER sollte auf irgendeine Weise zugegriffen werden können.

Wenn Sie Zertifikate generieren möchten, müssen Sie den Client veranlassen, ein Schlüsselpaar zu generieren und Ihnen mindestens den öffentlichen Schlüssel zu senden.Sie können dies in Firefox über einen Javascript-Aufruf tun crypto.generateCRMFRequest.Ich vermute, dass auch in anderen Browsern browserspezifische Methoden verfügbar sind.Zunächst müssen Sie jedoch herausfinden, wie Sie ein Zertifikat ausstellen, sobald Sie einen öffentlichen Schlüssel erhalten.

Sie könnten mit OpenSSL etwas auf dem Server skripten, aber es verfügt über eine integrierte Unterstützung für CSRs, nicht für das CRMF-Format, das Ihnen Firefox sendet.Sie müssten also Code schreiben, um das CRMF in ein CSR umzuwandeln, was eine Art DER-Verarbeitungsfähigkeit erfordert … Ich kratze hier nur an der Oberfläche – der Betrieb einer CA, selbst für eine Spielzeuganwendung, ist nicht trivial.

SSO-Lösungen wie OpenId und PKI-Lösungen überschneiden sich, und PKI hat eine gewisse Eleganz.Aber der Teufel steckt im Detail, und es gibt gute Gründe, warum es diesen Ansatz schon seit langem gibt, sich aber erst bei staatlichen und militärischen Anwendungen durchgesetzt hat.

Wenn Sie daran interessiert sind, stellen Sie uns anschließend einige Fragen speziell zu der Plattform, auf der Sie Ihren CA-Service entwickeln möchten.

Mit browserspezifischem Code können Sie im Browser des Clients ein Zertifikat generieren.Sehen diese Frage

Sie können SSL-Client-Zertifikate auch serverseitig mit OpenSSL in Ruby generieren (siehe dieses q).(Dies funktioniert in jedem Browser ohne browserspezifischen Code, aber Ihr Server hat den privaten Schlüssel des Clients generiert, was für Krypto-Puristen nicht ideal ist.)

Unabhängig davon, welche Methode Sie zum Generieren verwenden, müssen Sie anschließend Ihren Webserver so konfigurieren, dass er die Client-Zertifikate benötigt.Sehen die Apache-Dokumente zum Beispiel.

Ich habe an einer Lösung für dieses Problem gearbeitet.Ich wollte das Gleiche tun und weiß, dass viele andere Websitebesitzer diese Funktion wünschen, mit oder ohne Drittanbieter.

Ich habe das notwendige Server-Setup und ein Firefox-Plugin erstellt, um die zertifikatbasierte Authentifizierung durchzuführen.Gehen Sie zu mypassfree.com, um das kostenlose Firefox-Plugin zu erhalten.Schicken Sie mir eine E-Mail (Link auf dieser Seite), um Informationen zum Server-Setup zu erhalten, da ich es noch nicht mit einem netten Installationsprogramm gepackt habe.

Das Server-Setup ist Apache2 + OpenSSL + Perl (Sie können die Perl-Skripte jedoch in jeder beliebigen Sprache umschreiben).

Jonathan

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