我想使用openssl和python子进程生成2个证书,key.pem
和cert.pem
并使用以下命令来执行此操作。
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
这个命令在从termnial执行时工作得很好,但是当它在python子进程的帮助下从python脚本执行时它只能在所需的目录中输出key.pem
文件而不是cert.pem
文件。
下面是python脚本的代码片段:
tempdirname = 'temp_cert/'
keyname = 'key.pem'
certname = 'cert.pem'
expiration_period = '500'
cmd = ['openssl', 'req', '-newkey', 'rsa:2048', '-nodes', '-keyout', tempdirname+keyname, '-x509', '-days', expiration_period, '-out', tempdirname+certname]
p = subprocess.Popen(
cmd,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=False
)
out, err = p.communicate('\n')
我还希望cert.pem
文件是同一个目录。我该怎么办?
我正在使用python 2.7
答案 0 :(得分:0)
使用以下方法解决问题:
p = subprocess.Popen(
cmd,
stdin=subprocess.PIPE,
shell=False
)
#taking input like this
p.stdin.write("n")
out, err = p.communicate('\n')
删除了以下行并开始工作:
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,