在PKCS12导出过程中,OpenSSL挂起,"加载'屏幕'进入随机状态"

TN.*_*TN. 60 windows ssl openssl

我正在使用OpenSSL(而不是makecert)生成自签名SSL证书,以便在IIS中使用.

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj '//CN=myhost'
Run Code Online (Sandbox Code Playgroud)

(双斜杠是正确的.没有它,上面的命令不起作用.)

openssl pkcs12 -export -out key.pfx -inkey key.pem -in cert.pem -name 'myhost'
Run Code Online (Sandbox Code Playgroud)

第一个命令运行成功完成.然而第二次陷入困境

将"屏幕"加载到随机状态 -

我正在使用Git for Windows(2.6.3)附带的OpenSSL(1.0.2d).有人遇到同样的问题吗?

澄清:问题如何在openssl修复"无法写入'随机状态'"描述了与写入.rnd文件有关的问题.这里的问题似乎是产生随机状态.(仅在第二个命令中.)

Sla*_*ski 183

请尝试在oppenssl之前添加winpty:

winpty openssl ...
Run Code Online (Sandbox Code Playgroud)

或者你可以运行winpty包裹的新丛林:

winpty bash
Run Code Online (Sandbox Code Playgroud)

在Windows控制台中,终端输入/输出存在一些问题,因此如果某些软件需要winpty终端行为,winpty可以提供帮助.

unix 帮我在环境中运行openssl:

git version 2.7.3.windows.1
OpenSSL 1.0.2g  1 Mar 2016
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于Windows上的git bash (6认同)
  • 这个答案和@Duncan Smart的答案是可以互换的。导出 PFX 文件时,OpenSSL 会提示输入密码,但显然 Windows 版 Git 中的终端无法处理此 I/O,因此命令只是挂起。在命令前面加上 `winpty` 会包装命令,以便 I/O 正常工作,而传递 `-passout` 意味着 OpenSSL 不再需要输入密码。 (3认同)

Dun*_*art 50

我发现我需要在命令行上使用指定PFX密码-passout pass:SomePassword- 例如:

openssl pkcs12 -export -out foo_example_com.pfx -inkey foo_example_com.key -in foo_example_com.crt -passout pass:Pa55w0rd
Run Code Online (Sandbox Code Playgroud)

  • 以此拯救了我的生命 (2认同)