Client-SSL mit selbstsignierter CA funktioniert nicht

8

Ich habe seit mehr als einem Monat mit einem SSL-Problem zu kämpfen.

Wir haben mit openssl unsere eigenen CA-, Server- und Client-Zertifikate generiert. Wir haben auch Aktivieren Sie "SSLrequire" auf dem Apache - Webserver (in htaccess ist dies möglicherweise falsch), was bedeutet, dass jeder, der sich über https auf dem Der Server muss ein gültiges Zertifikat vorlegen

Der Schritt ist wie folgt;

  • generiert den CA-Schlüssel
  • Generieren Sie die CA CSR
  • Unterschreiben Sie die CA CSR mit dem CA-Schlüssel

Wir haben also eine eigene CA, die unsere Server- und Client-Zertifikate signiert.

nächster Schritt

  • Generiere Serverschlüssel
  • generieren Server-CSR
  • Server-CSR mit CA-Schlüssel signieren

Also haben wir unser Serverzertifikat & amp; Server privater Schlüssel, den wir erfolgreich auf dem Server installiert haben

Weiter wir

  • generieren Clientschlüssel
  • generieren Client-CSR
  • Client-CSR mit CA-Schlüssel signieren

Wir verteilen das Client-Zertifikat dann zusammen mit dem CA-Zertifikat an unsere Benutzer. Beide wurden in ihren Browsern installiert.

Beim Versuch, eine Verbindung herzustellen, haben wir den "Peer erkennt die Zertifizierungsstelle, die Ihr Zertifikat ausgestellt hat, nicht an und vertraut ihr nicht. "Fehler.

Wir haben festgestellt, dass das selbstsignierte CA-Zertifikat nicht auf dem Server installiert ist. Normalerweise der Server zeigt dem Gerät eine Liste der vertrauenswürdigen CA an, die versucht, eine Verbindung zu ihm herzustellen, und das Gerät muss ein Zertifikat senden Das wurde von einer der CAs, die der Server präsentiert hat, signiert. Aber seit unserem selbst signierten CA-Zertifikat Wurde auf dem Server nicht installiert, könnte der Browser ein Zertifikat darstellen, das von der Server.

Also haben wir das CA-Zertifikat auf dem Server installiert - Systemsteuerung Hsphere.

Wir haben den Inhalt des ca-Zertifikats genommen und in das Textfeld "Certificate Authority File" auf dem Server kopiert und der Server würde es nicht jedes Mal akzeptieren, wenn er sich beschweren wollte "SSL Config Different key and certificate konnte nicht aktualisiert werden"

Das CA-Zertifikat wurde von sich selbst signiert, also wie kann der Server sagen, dass das Zertifikat und der Schlüssel unterschiedlich sind.

Wir haben auch versucht, den Inhalt sowohl der CA-Zertifikatsdatei als auch der CA-Schlüsseldatei in das "Certificate Authority File" -Textarea zu kopieren, aber das würde auch nicht funktionieren.

Wie gesagt, damit haben wir seit mehr als einem Monat zu kämpfen. Wenn jemand helfen kann, wäre das sehr geschätzt. Wenn wir für den Service bezahlen müssen, lassen Sie es uns bitte wissen.

Vielen Dank im Voraus.

    
icarus 13.08.2010, 11:21
quelle

1 Antwort

13

(Vielleicht wäre Ссылка ein besserer Ort für diese Frage.)

Hier sind einige Optionen, die Sie in der Apache Httpd-Konfiguration verwenden können (ich bin mir nicht sicher, wie dies Ihrem Konfigurationsfenster zugeordnet ist).

%Vor%

SSLCertificateFile und SSLCertificateKeyFile sind die grundlegenden Voraussetzungen, um SSL auf Ihrem Server zu aktivieren.

Da Sie eine Clientzertifikatauthentifizierung benötigen, müssen Sie eines von SSLCACertificatePath (für ein Verzeichnis) oder SSLCACertificateFile (für eine Datei) konfigurieren, um anzugeben, welchen CAs Sie vertrauen möchten. Fügen Sie Ihr CA-Zertifikat dort hinzu. Dies sollten Dateien im PEM-Format sein. Jedes darin enthaltene Zertifikat wird als vertrauenswürdig betrachtet (obwohl es möglicherweise die CA-Grundbedingung haben muss, kann ich mich nicht erinnern, das ist ziemlich Standard, wenn Sie selbst ein Stammzertifizierungsstellenzertifikat selbst erzeugt haben).

Zusätzlich können Sie Zertifikate in SSLCADNRequestFile setzen. Dies sollte nicht notwendig sein, da es automatisch von den SSLCACertificatePath - oder SSLCACertificateFile -Zertifikatsdirektiven ausgefüllt wird. Wenn Sie jedoch mehr Kontrolle über die Liste der CAs haben wollen, die der Server anerkennt, kann er dies akzeptieren. Nur um zu verdeutlichen, das ist nicht das, was das Vertrauen in Client-Zertifikate verwaltet, sondern genau das, worauf der Server wirbt, dem er vertrauen kann, so dass Sie immer noch SSLCACertificatePath oder SSLCACertificateFile benötigen. Vielleicht steuert Ihre "Certificate Authority File" Option in Ihrem Konfigurationsfenster diese und nicht eine der beiden anderen Optionen.

Eine Möglichkeit, dies zu debuggen, ist dies über die Befehlszeile zu tun:

%Vor%

Dies sollte die Zertifikatskette auflisten, die Sie zuerst präsentieren (es wäre gut, wenn Sie die gesamte Kette der CA präsentieren würden, da einige Clients es manchmal zu brauchen scheinen, soweit ich mich erinnere). Anschließend sollte es die Zertifizierungsstellen auflisten, die es für die Clientzertifikatauthentifizierung akzeptieren möchte, oder andernfalls werden keine Clientzertifikat-CA-Namen gesendet (in diesem Fall liegt ein Problem mit einer der oben genannten Anweisungen vor). Dies gibt Ihnen zumindest einen Hinweis darauf, wie SSLCADNRequestFile oder SSLCACertificatePath / SSLCACertificateFile konfiguriert wurden (obwohl es die letzten beiden sind).

    
Bruno 13.08.2010 11:52
quelle

Tags und Links