wget, certificados autofirmados y un servidor HTTPS personalizado
-
10-07-2019 - |
Pregunta
Por varias razones, creé un servidor HTTP simple y agregué soporte SSL a través de OpenSSL. Estoy usando certificados autofirmados. IE, Firefox y Chrome cargan felizmente el contenido siempre que agregue la CA a las CA raíz de confianza.
Sin embargo, wget (incluso cuando se usa el indicador --no-check-certificate
) informa:
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Si ejecuto el cliente OpenSSL en mi servidor usando:
openssl s_client -connect dnvista:82 -debug
Vuelvo: error de verificación: num = 19: certificado autofirmado en la cadena de certificados verificar devolución: 0 y luego
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 y el cliente OpenSSL simplemente no funcionan con certificados autofirmados?
UPDATE:
Para cualquiera que aparezca más tarde, agregar este código ayudó con el cliente OpenSSL y 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);
Solución
Revisé la página de manual de wget
, y --no-check-certificate
solo parece afectar el certificado del servidor . Debe especificar su certificado autofirmado como un certificado de CA válido localmente.
Para hacer esto, especifique el certificado como --ca-certificate = ...
en wget
y -CAfile
en el
Otros consejos
También puede instalar certificados de CA raíz de confianza en OpenSSL de una de varias maneras:
- Coloque su certificado CA en / etc / pki / tls / certs o directorio equivalente, luego cree un enlace basado en el hash del certificado. Ver http://gagravarr.org/writing/openssl-certs/others. shtml # ca-openssl para más detalles.
- Agregue su certificado de CA a /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem o un paquete de CA equivalente.