2009-10-29 9 views
10

Aus verschiedenen Gründen habe ich einen einfachen HTTP-Server erstellt und SSL-Unterstützung über OpenSSL hinzugefügt. Ich verwende selbstsignierte Zertifikate. IE, Firefox und Chrome laden gerne Inhalte, solange ich die CA den vertrauenswürdigen Stammzertifizierungsstellen hinzufüge.wget, selbstsignierte Zertifikate und ein benutzerdefinierter HTTPS-Server

jedoch wget (auch wenn die --no-check-certificate Flag verwendet) berichtet:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 

Wenn ich den OpenSSL-Client gegen meinen Server mit ausführen:

openssl s_client -connect dnvista:82 -debug 

ich zurück: Fehler überprüfen: num = 19: selbstsigniertes Zertifikat in der Zertifikatskette überprüfen zurück: 0 und dann

5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40 
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188: 

Funktionieren wget und der OpenSSL-Client nicht mit selbstsignierten Zertifikaten?

UPDATE:

Für alle, die sich entlang kommt später, das Hinzufügen dieser Code mit dem OpenSSL-Client und Firefox geholfen:

EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); 
SSL_CTX_set_tmp_ecdh(ctx, ecdh); 
EC_KEY_free(ecdh); 

Antwort

11

ich den Mann Seite von wget geprüft und --no-check-certificate nur scheint Auswirkungen auf das Serverzertifikat . Sie müssen Ihr selbstsigniertes Zertifikat lokal als gültiges CA-Zertifikat angeben.

Um dies zu tun, geben Sie das Zertifikat als --ca-certificate=... in wget und -CAfile im s_client Fall.

+5

Hallo. Ich habe viele Kommentare wie diese, "Turn the check-off" in so vielen Wörtern gesehen. Es ist eine ** wirklich _BAD_ Idee **. Ein bisschen wie Straßenrennen mit kahlen Reifen auf nassen Straßen. Ich bin enttäuscht, dass diese Antwort ein "Häkchen" erhielt. – will

+5

wird: Ich stimme zu, eine Überprüfung ist in der Regel eine schlechte Idee. Meine Antwort schlägt eine Möglichkeit vor, das CA-Zertifikat dem Client bekannt zu machen, damit die Überprüfung korrekt durchgeführt werden kann. –

5

Sie können auch in einem von einer Reihe von Möglichkeiten, vertrauenswürdige Root-CA-Zertifikate in OpenSSL installieren:

  • Ihr CA-Zertifikat Legen Sie in/etc/pki/tls/certs oder gleichwertigem Verzeichnis, und dann eine Verbindung auf Basis auf dem Zertifikat-Hash. Details finden Sie unter http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl.
  • Fügen Sie Ihr CA-Zertifikat an /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem oder ein gleichwertiges CA-Paket an.
+0

Ich habe eine Frage gestellt: [Ruby OpenSSL-Einrichtung oder -Konfiguration für Ihren Anwendungscode] (http://stackoverflow.com/questions/5233169/ruby-openssl-set-up-or-configuration-for-your-application- code), um _HOW_ Ruby zu bitten, dass die PEM- oder CRT-Ressourcen die Host-Verifizierung durchführen. Ich habe erschöpfend nach einem Modul gesucht, das Umgebungs- oder Konfigurationsinformationen mit rekursiven ** grep ** Scans lädt - Kein Glück (außer in Test und Proben). – will

Verwandte Themen