Python子进程问题

2024-09-27 00:12:27 发布

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

我正在编写一个用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进程。如有任何帮助,将不胜感激。在

我想做的是:

^{pr2}$

但是它不起作用,脚本只是冻结,永远不会超过第一个communication语句。在


Tags: 脚本truestdoutshelloutpem私钥popen
2条回答

你试过Pexpect模块了吗?在

import pexpect

child = pexpect.spawn(keycmd)
child.expect("Enter pass phrase")
child.sendline("password")

child.expect("Verifying - Enter pass phrase")
child.sendline("password")

将选项-passout stdin添加到openssl genrsa命令中,它将从标准输入中读取密码短语。这样您就可以通过communicate发送它。在

您可以向-passout选项提供其他几个值,以从其他源获取密码短语。有关详细信息,请参阅OpenSSL man page。在

相关问题 更多 >

    热门问题