Certificado OpenSSL incorrecto
-
05-07-2019 - |
Pregunta
Estoy tratando de hacer una CA falsa y firmar un certificado para usar con stunnel (que parece estar llamando a rutinas OpenSSL, por lo que probablemente no necesite conocer el programa para ayudar :). Sin embargo, Stunnel sigue rechazando mi certificado diciendo que no está firmado con la clave correcta.
Así es como estoy generando mis claves y certificados con OpenSSL:
openssl genrsa -out ca_key.pem 1024
openssl req -config ./root2.cfg -new -sha1 -x509 -key ca_key.pem -out ca_cert.pem -subj "/CN=blah.blah.com/OU=Dev blah CA/C=CA/ST=blah/L=blah/O=Blah Software"
openssl genrsa -out MPS_key.pem 1024
openssl req -config ./MPS2.cfg -new -sha1 -key MPS_key.pem -out MPS_cert_req.pem -subj "/CN=blah.blah.com/OU=blah Certificate/C=CA/ST=blah/L=blah/O=Blah Software"
openssl x509 -req -in MPS_cert_req.pem -signkey ca_key.pem -out MPS_cert.pem -extensions MPS_ext
Entonces mi stunnel.conf tiene estas entradas:
CAfile = ca_cert.pem
key = MPS_key.pem
cert = MPS_cert.pem
Cuando intento iniciar Stunnel, obtengo la clave genérica OpenSSL " no coincide con el certificado " error:
2009.09.09 16:36:04 LOG3[492:172]: SSL_CTX_use_RSAPrivateKey_file: B080074: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
¿Hice algo mal al generar mis archivos?
Solución
Resumiré lo que ha configurado:
- Tienes un " CA " certificado, que está autofirmado.
- Tienes MPS_cert, que está autofirmado.
- Firmaste MPS_cert usando la clave CA.
Si lee la referencia para el comando x509 de OpenSSL ( http://openssl.org/docs /apps/x509.html ) verá que el parámetro -signkey le indica a OpenSSL que firme automáticamente el certificado suministrado con la clave privada dada. Esto es no lo que quieres.
Lo que desea hacer es crear una CA autofirmada y luego usarla para firmar su CSR y generar un certificado válido.
openssl verify ca_cert.pem
ca_cert.pem: /CN=blah.blah.com/OU=Dev blah CA/C=CA/ST=blah/L=blah/O=Blah Software
error 18 at 0 depth lookup:self signed certificate
OK
openssl verify MPS_cert.pem
MPS_cert.pem: /CN=blah.blah.com/OU=blah Certificate/C=CA/ST=blah/L=blah/O=Blah Software
error 18 at 0 depth lookup:self signed certificate
OK
Las opciones relevantes son -CA, -CAkey y -set_serial
openssl x509 -CA ca_cert.pem -CAkey ca_key.pem -set_serial 1 -req -in MPS_cert_req.pem -out MPS_cert2.pem -days 365
Esto debería dar como resultado un certificado firmado por su CA, que a su vez está autofirmado.