问题描述
我必须创建一个本地证书并使用本地 CA.key 对其进行签名。 在我的文件夹中,我有 CA.key、CA.crt、CA.srl,我必须创建自己的 client.crt 和 client.key 文件。 我愿意:
def create_cert():
with open("ca.key",'r') as f:
CAprivatekey = crypto.load_privatekey(crypto.FILETYPE_PEM,f.read())
with open("ca.srl",'r') as f:
deviceCsr = crypto.load_certificate_request(crypto.FILETYPE_PEM,f.read())
with open("ca.crt",'r') as f:
caCert = crypto.load_certificate(crypto.FILETYPE_PEM,f.read())
cert = crypto.X509()
cert.get_subject().C = "IT"
cert.get_subject().ST = "Brescia"
cert.get_subject().L = "Brescia"
cert.get_subject().O = "Dummy Company Ltd"
cert.get_subject().OU = "Dummy Company Ltd"
cert.get_subject().CN = gethostname()
cert.set_serial_number(1000)
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(10*365*24*60*60)
cert.set_issuer(caCert.get_subject())
cert.set_subject(deviceCsr.get_subject())
cert.set_pubkey(deviceCsr.get_pubkey())
cert.sign(CAprivatekey,'sha1')
return cert
但是当我运行我的函数时,我得到:
OpenSSL.crypto.Error: [('PEMroutines','get_name','no start line')]
在实践中,我会在 python 函数中复制这个命令:
openssl genrsa -out client.key 2048
openssl req -new -out client.csr -key client.key -subj "/C=RO/ST=H/L=Home/O=MQTT Client/OU=MQTT Client/CN=Thing01"
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365
openssl rsa -in client.key -out client.key
非常感谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)