繁体   English   中英

模拟用户对由Python脚本运行的子进程的输入

[英]Emulating user input to the child process run by Python script

我正在运行一个脚本,该脚本应使用标准的opensl应用程序通过cron创建自签名SSL证书。 问题在于应用程序假设用户交互,例如等待用户输入。 我的目标是使此过程完全自动化。

假设我是从Python脚本生成RSA私钥和CSR(证书签名请求)的

p = Popen(['openssl', 'genrsa', '-des3', '-out', 'server.key', '1024'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)

openssl要求用户输入密码并进行验证,即两次输入相同的密码。 如果我们将密码短语保存在脚本中,则将密码传递给标准输入的代码应如下所示(提供的代码不起作用,这只是我的实验之一)

p.communicate(input=b'passphrase\npassphrase\n')[0]

Python 3.6.5,Windows 7

完成bash脚本以实现自动化

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

使用openssl.cnf的更新解决方案也表示赞赏

我设法仅使用bash脚本创建了无人值守的解决方案(尽管我更喜欢使用Python来实现完全的可移植性,并且最初的问题与答案相距甚远,尽管我无法对其进行编辑)

openssl genrsa -out server.key 1024
openssl req -new -sha256 -key server.key -out server.csr -subj "/C=NL/ST=Amsterdam/L=Amsterdam/O=Mycompany/OU=IT/CN=signature.mycompany.com"
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM