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?

Foi útil?

Solução

Vou resumir o que você tem a configuração:

  1. Você tem um certificado "CA", que é auto-assinado.
  2. Você tem MPS_cert, que é auto-assinado.
  3. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top