wget, certificati autofirmati e un server HTTPS personalizzato
-
10-07-2019 - |
Domanda
Per vari motivi ho creato un semplice server HTTP e aggiunto il supporto SSL tramite OpenSSL. Sto usando certificati autofirmati. IE, Firefox e Chrome caricano felicemente il contenuto purché aggiunga la CA alle CA radice attendibili.
Tuttavia, wget (anche quando si utilizza il flag --no-check-certificate
):
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Se eseguo il client OpenSSL sul mio server usando:
openssl s_client -connect dnvista:82 -debug
Torno indietro: errore di verifica: num = 19: certificato autofirmato nella catena di certificati verifica ritorno: 0 e poi
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 e il client OpenSSL semplicemente non funzionano con certificati autofirmati?
UPDATE:
Per chiunque accada in seguito, l'aggiunta di questo codice ha aiutato con il client OpenSSL e 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);
Soluzione
Ho controllato la pagina man di wget
e --no-check-certificate
sembra influenzare solo il certificato del server . È necessario specificare il certificato autofirmato come certificato CA valido localmente.
Per fare ciò, specificare il certificato come --ca-certificate = ...
in wget
e -CAfile
nel case s_client
.
Altri suggerimenti
È inoltre possibile installare certificati CA radice attendibili in OpenSSL in diversi modi:
- Inserisci il tuo certificato CA in / etc / pki / tls / certs o directory equivalente, quindi crea un collegamento basato sull'hash del certificato. Vedi http://gagravarr.org/writing/openssl-certs/others. shtml # ca-openssl per i dettagli.
- Aggiungi il tuo certificato CA a /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem o bundle CA equivalente.