wget, selbstsignierte Zertifikate und eine benutzerdefinierte HTTPS-Server
-
10-07-2019 - |
Frage
Aus verschiedenen Gründen habe ich einen einfachen HTTP-Server erstellt und hinzugefügt SSL-Unterstützung über OpenSSL. Ich bin mit selbst signierten Zertifikaten. IE, Firefox und Chrome glücklich laden Inhalt solange ich die CA an die vertrauenswürdigen Stammzertifizierungsstellen hinzufügen.
Allerdings wget (auch bei Verwendung des --no-check-certificate
Flag) berichtet:
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Wenn ich den OpenSSL-Client gegen meinen Server ausgeführt werden:
openssl s_client -connect dnvista:82 -debug
ich zurück: Fehler überprüfen: num = 19: selbst signiertes Zertifikat in Zertifikatskette überprüfen Rückkehr: 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:
wget Sich und das OpenSSL-Client einfach nicht mit selbst signierten Zertifikaten arbeiten?
UPDATE:
Für alle, die sich entlang kommt später, das Hinzufügen dieser Code half mit dem OpenSSL-Client und Firefox:
EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
SSL_CTX_set_tmp_ecdh(ctx, ecdh);
EC_KEY_free(ecdh);
Lösung
überprüfte ich die Manpage von wget
und --no-check-certificate
scheint nur das Serverzertifikat beeinflussen . Sie müssen vor Ort, um sich selbst signiertes Zertifikat als ein gültiges CA-Zertifikat angeben.
Um dies zu tun, geben Sie das Zertifikat als --ca-certificate=...
in wget
und -CAfile
im s_client
Fall.
Andere Tipps
Sie können auch größte Root-CA-Zertifikate in OpenSSL in einem von einer Reihe von Möglichkeiten, installieren
- Legen Sie Ihr CA-Zertifikat in / etc / pki / tls / certs oder gleichwertigem Verzeichnis, dann einen Link auf dem Zertifikat-Hash erstellen basiert. Siehe http://gagravarr.org/writing/openssl-certs/others. shtml # ca-openssl .
- Fügen Sie Ihr CA-Zertifikat /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem oder gleichwertigen CA-Bundle.