【问题标题】:Emulating user input to the child process run by Python script模拟用户对 Python 脚本运行的子进程的输入
【发布时间】:2018-10-23 05:07:04
【问题描述】:

我正在运行一个脚本,它应该使用标准的 openssl 应用程序通过 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 的更新解决方案也值得赞赏

【问题讨论】:

    标签: python subprocess stdin


    【解决方案1】:

    我设法仅使用 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
    

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 2023-03-20
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      相关资源
      最近更新 更多