openssl - OpenSSL 证书错误

标签 openssl ssl-certificate x509certificate stunnel

我正在尝试制作一个假 CA 并用它签署一个证书以与 stunnel 一起使用(这似乎只是调用 OpenSSL 例程,因此您可能不需要了解该程序来提供帮助:)。然而,stunnel 一直拒绝我的证书,说它没有使用正确的 key 签名!

这就是我使用 OpenSSL 生成 key 和证书的方式:

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“ key 与证书不匹配”错误:

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. 您拥有自签名的“CA”证书。
  2. 您拥有自签名的 MPS_cert。
  3. 您使用 CA key 签署了 MPS_cert。

如果您阅读 OpenSSL 的 x509 命令 ( http://openssl.org/docs/apps/x509.html ) 的引用,您将看到 -signkey 参数指示 OpenSSL 使用给定的私钥对提供的证书进行自签名。这不是您想要的。

您想要做的是创建一个自签名 CA,然后使用它来签署您的 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

这应该会生成一个由您的 CA 签名的证书,该证书本身是自签名的。

关于openssl - OpenSSL 证书错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1402699/

相关文章:

tomcat - 什么决定了 SSL/TLS 交换中的有效密码?

linux - SSL 库错误 : error: SSL routines:ssl3_get_client_hello:no shared cipher - Too restrictive SSLCipherSuite or using DSA server certificate

ssl - 如何刷新1337端口代理服务器的SSL证书?

php - ZF2 LDAP SSL 证书不受信任

ios - 如何为 AFNetworking 创建 .cer 文件以在 iOS 应用程序包中使用

iphone - 如何: iPhone Web Service call to WCF Service with Certificate Authentication

node.js 加密签名和 openssl 签名不匹配

android - openSSL使用Android的NDK问题

ssl - `openssl genrsa` 和 `openssl genpkey -algorithm rsa` 之间的区别?

c++ - x509 证书主题备用名称