微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python openSSL 从本地 ca.key 创建 X.509 证书签名

如何解决Python openSSL 从本地 ca.key 创建 X.509 证书签名

我必须创建一个本地证书并使用本地 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 举报,一经查实,本站将立刻删除。