【发布时间】:2010-08-11 17:10:31
【问题描述】:
我正在编写一个脚本以在 Python 中生成 CSR。脚本非常简单。我使用以下方法生成 RSA 私钥:
keycmd = "openssl genrsa -out mykey.pem 2048"
keyprocess = Popen(keycmd, shell=True, stdout=PIPE)
csrcmd = "openssl req -new -key mykey.pem -subj "+ subj + " -out mycsr.csr"
reqprocess = Popen(csrcmd, shell=True, stdout=PIPE)
但是,我想添加使用密码加密私钥的功能,这是用户的愿望。这通常通过在 genrsa 命令中包含选项“-des3”来完成,但我不知道如何将字符串从 Python 标准输入通过管道传输到 OpenSSL 进程。任何帮助将不胜感激。
我想做的是:
keycmd = "openssl genrsa -des3 -out mykey.pem 2048"
keyprocess = Popen(keycmd, shell=True, stdin=PIPE, stdout=PIPE)
keyprocess.communicate("password")
keyprocess.communicate("password")
但是它不起作用,脚本只是冻结并且永远不会超过第一个通信语句。
【问题讨论】:
-
您是否尝试过我在之前的类似问题中建议的解决方案? (m2crypto 或 python-nss)。 stackoverflow.com/questions/3215780/generating-a-csr-in-python/…
-
我宁愿不必下载外部库。我正在编写的代码是可移植的,我不希望人们必须下载除 OpenSSL 之外的任何东西。不过谢谢