利用C#调用cmd执行OpenSSL申请私钥

问题

在利用OpenSSL申请私钥的时候,我遇到一个问题:在cmd窗口中手动输入执行指令 

openssl.exe genrsa -aes256 -out C:\\test\\key.pem 4096

之后会有一个等待输入密码和验证密码的过程,但是在利用C#调用进程执行指令的时候并不能捕获到此输入的标志

解决

解决1:

openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [numbits]

openssl的使用参数:a.pass:password   :password表示传递的明文密码 在原有指令上加上此参数即可省去密码设置和验证的步骤,实现如下

openssl.exe genrsa -aes256 -passout pass:123456 -out C:\\test\\key.pem 4096

解决2:

写一个python脚本来执行这一步动作

import wexpect

cmd = "C:\\OpenSSL\\bin\\openssl.exe genrsa -aes256 -out {0}\\key.pem 4096".format(target_path)
child = wexpect.spawn(cmd)
print('Start apply key.pem')
child.expect('phrase')
time.sleep(1)
print(child.before,end='')
print(child.after,end='')
child.sendline(password)
child.expect('phrase')
time.sleep(1)
print(child.before,end='')
print(child.after,end='')
child.sendline(password)
print(child.before,end='')
print()

(人懒,没有截完整的,但是可以借鉴)

posted @ 2022-05-07 15:10  shakeL  阅读(427)  评论(0)    收藏  举报