【发布时间】:2017-09-17 01:52:39
【问题描述】:
使用我要创建的 pyOpenSSL
- 自签名密钥对
- 证书签名请求 (csr)
- 自签名证书
当我使用 openSSL 命令行工具时,我使用了以下命令:
-
用于自签名的密钥对
openssl genrsa -out pkey.pem 2048openssl rsa -in pkey.pem -out public-pkey.pem -outform PEM -pubout -
证书签名请求 (csr)
openssl req -new -key pkey.pem -subj "/C=US/O=XXX/CN=XXX" -days 365 -out csrrequest.csr -
自签名证书
openssl x509 -in csrrequest.csr -req -signkey pkey.pem -days 365 -set_serial 0x12345 -sha256 -out selfsignedcert.pem
这可行!服务器接受自签名证书并返回服务器签名证书。
对于 pyOpenSSL,我使用以下代码:
-
用于自签名的密钥对
psec = crypto.PKey()psec.generate_key(crypto.TYPE_RSA, 2048) -
证书签名请求 (csr)
csrrequest = crypto.X509Req()csrrequest.get_subject().C = "US"csrrequest.get_subject().O = "XXX"csrrequest.get_subject().CN = "XXX"csrrequest.set_pubkey(psec) -
自签名证书
selfsignedcert = crypto.X509()selfsignedcert.set_serial_number(12345)selfsignedcert.gmtime_adj_notBefore(0)selfsignedcert.gmtime_adj_notAfter(365*24*60*60)selfsignedcert.set_subject(csrrequest.get_subject())selfsignedcert.set_issuer(selfsignedcert.get_subject())selfsignedcert.set_pubkey(csrrequest.get_pubkey())selfsignedcert.sign(psec, "sha256")
这不起作用! 服务器不接受自签名证书。服务器无法签署并返回服务器签署的证书。
但是,通过使用 pyOpenSSL,我错过了 openssl x509 -in csrrequest.csr -req 用于创建自签名证书的输入...
我的错在哪里?有谁知道我做错了什么??
谢谢!
【问题讨论】:
-
参见How do you sign Certificate Signing Request with your Certification Authority 和How to create a self-signed certificate with openssl? 您还需要将自签名证书放在适当的信任库中。但是,我不确定如何使用 pyOpenSSL。
标签: ssl openssl tls1.2 csr pyopenssl