如何使用pyOpenSSL在Python中从CSR和根CA创建证书?

2024-03-29 06:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用OpenSSL的Python中,如果我有一个自签名的根CA和一个证书签名请求(CSR),那么如何从根CA签名的CSR创建证书?(我说得对吗?)

from OpenSSL import crypto, SSL

# create a self-signed root CA cert
rootkey = crypto.PKey()
rootkey.generate_key(crypto.TYPE_RSA, 2048)
rootca = crypto.X509()
rootca.get_subject().CN = "my_root_ca"
rootca.gmtime_adj_notBefore(10)
rootca.gmtime_adj_notAfter(10*365*24*60*60)
rootca.set_issuer(rootca.get_subject())
rootca.set_pubkey(rootkey)
rootca.sign(rootkey, 'sha256')

# create a CSR with a code in CN
csrkey = crypto.PKey()
csrkey.generate_key(crypto.TYPE_RSA, 2048)
csr = crypto.X509Req()
csr.get_subject().CN = '4854996413a0bcffb73b956d63f728d10e6d97bb'
csr.set_pubkey(csrkey)
csr.sign(csrkey, 'sha256')

# save files
open('rootCA.pem', 'wb').write(crypto.dump_certificate(crypto.FILETYPE_PEM, rootca))
open('rootCA.key', 'wb').write(crypto.dump_privatekey(crypto.FILETYPE_PEM, rootkey))
open('verificationCert.csr', 'wb').write(crypto.dump_certificate_request(crypto.FILETYPE_PEM, csr))

现在如何在python中使用根ca对CSR进行签名?
(同样,如果白话不正确,很抱歉,请随时更正)

下面是我尝试在Python中复制的等效命令行:

openssl x509 -req -in verificationCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out verificationCert.pem -days 500 -sha256

谢谢大家!


Tags: keygetopencncryptocasubjectset