Плохой сертификат OpenSSL - PullRequest
       56

Плохой сертификат OpenSSL

4 голосов
/ 10 сентября 2009

Я пытаюсь создать поддельный ЦС и подписать с ним сертификат для использования с stunnel (который, похоже, вызывает подпрограммы OpenSSL, поэтому вам, вероятно, не нужно знать программу, которая поможет :) Тем не менее, stunnel продолжает отклонять мой сертификат, говоря, что он не подписан правильным ключом!

Вот как я генерирую свои ключи и сертификаты с 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

Тогда мой stunnel.conf имеет следующие записи:

CAfile = ca_cert.pem
key = MPS_key.pem
cert = MPS_cert.pem

Когда я пытаюсь запустить stunnel, я получаю общую ошибку OpenSSL "ключ не соответствует сертификату":

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

Я что-то не так сделал при создании моих файлов?

1 Ответ

4 голосов
/ 30 сентября 2009

Я подведу итог, что у вас есть настройки:

  1. У вас есть сертификат "CA", который является самоподписанным.
  2. У вас есть MPS_cert, который самоподписан.
  3. Вы подписали MPS_cert с помощью ключа CA.

Если вы прочитаете ссылку на команду OpenSSL x509 (http://openssl.org/docs/apps/x509.html), вы увидите, что параметр -signkey указывает OpenSSL самостоятельно подписывать предоставленный сертификат с заданным закрытым ключом. Это not что хочешь.

То, что вы хотите сделать, - это создать самозаверяющий ЦС, а затем использовать его для подписи своего CSR и создания действительного сертификата.

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

Соответствующие опции: -CA, -CAkey и -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

Это должно привести к получению сертификата, подписанного вашим ЦС, который сам является самоподписанным.

...