使用我想创建的pyOpenSSL
当我使用openSSL命令行工具时,我使用了以下命令:
openssl genrsa -out pkey.pem 2048
openssl rsa -in pkey.pem -out public-pkey.pem -outform PEM -pubout
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)
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
输入.
我的错在哪里?有人知道我做错了什么吗?
谢谢!
发布于 2019-01-21 04:05:23
您需要用私钥对CSR进行签名(类似于自签名证书,但CA将在最终证书中用自己的签名替换此签名)。
试试csrrequest.sign(psec,"sha256")
发布于 2018-09-12 04:28:24
什么东西不起作用?
我注意到时间安排得不对
而不是:
selfsignedcert.gmtime_adj_notBefore(0)
selfsignedcert.gmtime_adj_notAfter(365*24*60*60)
如果你试过
current_ts = int(datetime.datetime.now().timestamp())
selfsignedcert.gmtime_adj_notBefore(current_ts)
selfsignedcert.gmtime_adj_notAfter(current_ts + 365*24*60*60)
https://stackoverflow.com/questions/43519363
复制相似问题