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



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

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

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

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

p.communicate(input=b'passphrasenpassphrasen')[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

最新更新