gpt4 book ai didi

python-2.7 - 在 python 中使用 CA 根证书从客户端签署 CSR

转载 作者:行者123 更新时间:2023-12-02 23:23:48 24 4
gpt4 key购买 nike

我是Python新手,仍在学习它,所以我的问题可能有点天真。请耐心等待;)

问题是客户端将发送 CSR,我想用我的 CA 根证书对其进行签名,并将签名的证书返回给客户端。

我一直在使用这个命令来使用命令行来完成它

openssl x509 -req -in device.csr -CA root.pem -CAkey root.key -CAcreateserial -out device.crt -days 500

我想用Python实现同样的事情。我遇到过 openssl 的 python 库 pyopenssl

可以使用这个库吗?如何 ?或者我应该选择 M2Crypto ?

最佳答案

您确实可以使用 pyOpenSSL。正如您所说,您已经拥有 CA 根证书和私钥,并且 CSR 将由客户端发送,然后您可以使用加密功能从文件中读取所有这些( CA 证书、私钥和设备 CSR )或设法拥有它们在缓冲区中。

首先使用以下函数。检查dir(crypto) and crypto.function_name.__doc__有关更多信息,请参阅 python 解释器:) 您需要从 pyOpenSSL 导入加密

  1. crypto.load_certificate_request() - 获取设备 CSR 对象
  2. crypto.load_privatekey() - 获取 CA 私钥的私钥 obj
  3. crypto.load_certificate() - 获取 CA 根证书

然后你可以编写简单的函数来返回证书

def create_cert():
cert = crypto.X509()
cert.set_serial_number(serial_no)
cert.gmtime_adj_notBefore(notBeforeVal)
cert.gmtime_adj_notAfter(notAfterVal)
cert.set_issuer(caCert.get_subject())
cert.set_subject(deviceCsr.get_subject())
cert.set_pubkey(deviceCsr.get_pubkey())
cert.sign(CAprivatekey, digest)
return cert

其中 caCertdeviceCsrCAprivatekey 是来自上述三个函数的值。现在您已拥有证书,您可以使用 crypto.dump_certificate(crypto.FILETYPE_PEM, cert) 将其写入文件使用您选择的文件名。

您可以根据您的要求修改此功能。之后,您可以使用 openssl 命令验证生成的设备证书与 CA 根证书,例如openssl verify -CApath <CA cert path> <name of device cert file>

您还可以查看 github 上的一些示例。 M2Crypto Example , pyOpenSSL example

希望这能让您了解实现

关于python-2.7 - 在 python 中使用 CA 根证书从客户端签署 CSR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23103878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com