2009-10-29 19 views
10

Por diversas razones, he creado un servidor HTTP simple y he agregado soporte SSL a través de OpenSSL. Estoy usando certificados autofirmados. IE, Firefox y Chrome cargan contentos contenido siempre que agregue CA a las CA raíz confiables.wget, certificados autofirmados y un servidor HTTPS personalizado

Sin embargo, wget (incluso cuando se utiliza la bandera --no-check-certificate) informa:

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

Si funciono el cliente OpenSSL contra mi servidor usando:

openssl s_client -connect dnvista:82 -debug 

regrese: verificar error: 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: 

¿La aplicación y el cliente OpenSSL simplemente no funcionan con certificados autofirmados?

ACTUALIZACIÓN:

Para cualquier persona que se presente más adelante, añadiendo 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); 

Respuesta

11

Revisé la página del manual de wget, y --no-check-certificate sólo parece afectar el certificado de servidor . Debe especificar su certificado autofirmado como un certificado de CA válido localmente.

Para ello, especifique el certificado como --ca-certificate=... en wget y -CAfile en el caso s_client.

+5

Hola. He visto muchos comentarios como estos, "Turn the check-off" en tantas palabras. Es una ** realmente _BAD_ idea **. Un poco como las carreras callejeras con neumáticos calvos en carreteras mojadas. Estoy decepcionado de que esta respuesta tenga una marca 'tic'. – will

+5

: Acepto, pasar el cheque generalmente es una mala idea. Mi respuesta sugiere una forma de que el cliente conozca el certificado de CA, para que la verificación se pueda realizar correctamente. –

5

También puede instalar certificados de CA raíz de confianza en OpenSSL en una de varias maneras:

  • Ponga su certificado de CA en/etc/pki/tls/certs o directorio equivalente, a continuación, crear un vínculo basado en el certificado hash. Vea 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 CA equivalente.
+0

He publicado una pregunta: [Configuración o configuración de Ruby OpenSSL para su código de aplicación] (http://stackoverflow.com/questions/5233169/ruby-openssl-set-up-or-configuration-for-your-application- código), para preguntar _HOW_ Ruby obtiene los recursos de PEM o CRT para hacer la verificación de host. Busqué exhaustivamente un módulo que cargue información de entorno o configuración con escaneos recursivos ** grep ** - Sin suerte (excepto en pruebas y muestras). – will

Cuestiones relacionadas