certificado OpenSSL Bad
-
05-07-2019 - |
Pergunta
Eu estou tentando fazer uma CA falso e assinar um certificado com ele para usar com stunnel (que apenas parece estar chamando rotinas OpenSSL, então você provavelmente não precisa saber o programa de ajuda :). No entanto, stunnel mantém rejeitando meu certificado dizendo que não é assinado com a chave certa!
Isto é como eu estou gerando minhas chaves e certificados com 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
Então meu stunnel.conf tem essas entradas:
CAfile = ca_cert.pem
key = MPS_key.pem
cert = MPS_cert.pem
Quando tento iniciar stunnel Recebo o OpenSSL genérico "chave não corresponde ao certificado" erro:
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
Eu fiz algo errado na geração de meus arquivos?
Solução
Vou resumir o que você tem a configuração:
- Você tem um certificado "CA", que é auto-assinado.
- Você tem MPS_cert, que é auto-assinado.
- Você assinou MPS_cert usando a chave CA.
Se você ler a referência para o comando x509 do OpenSSL ( http://openssl.org/docs /apps/x509.html ), você verá que o que -signkey parâmetro instrui o OpenSSL auto-assinar o certificado fornecido com a chave privada dado. Esta é não que você quer.
O que você quer fazer é criar uma CA auto-assinado e, em seguida, usar isso para assinar o seu CSR e gerar um 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
As opções relevantes são -CA, -CAkey e -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
Isso deve resultar em um certificado que é assinado pelo seu CA, que em si é auto-assinado.