OpenSSL 在 PKCS12 导出期间挂起 "Loading 'screen' into random state"

OpenSSL hangs during PKCS12 export with "Loading 'screen' into random state"

我正在使用 OpenSSL(不是 makecert)生成一个自签名 SSL 证书,用于 IIS。

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj '//CN=myhost'

(双斜杠是正确的。如果没有双斜杠,上面的命令将不起作用。)

openssl pkcs12 -export -out key.pfx -inkey key.pem -in cert.pem -name 'myhost'

第一个命令运行成功。但是第二个卡在

Loading 'screen' into random state -

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

澄清: 问题 How to fix "unable to write 'random state' " in openssl 描述了不同的 -- 写入 .rnd 文件的问题。这里的问题似乎是生成随机状态。 (并且仅在第二个命令中。)

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

openssl pkcs12 -export -out foo_example_com.pfx -inkey foo_example_com.key -in foo_example_com.crt -passout pass:Pa55w0rd

请尝试在oppenssl前加上winpty:

winpty openssl ...

或者您可以 运行 由 winpty 包装的新 bash:

winpty bash

在 windows 控制台中,终端 input/output 存在一些问题,因此如果某些软件需要 unix 终端行为,winpty 可以提供帮助。

winpty 帮助我 运行 openssl 在这个环境中:

git version 2.7.3.windows.1
OpenSSL 1.0.2g  1 Mar 2016

最近,当 运行 在天蓝色 ubuntu 虚拟机中通过 ssh 从 windows 10 笔记本电脑打开 openssl 时,我遇到了同样的问题。我还从 windows 命令提示符和 powershell 尝试了 windows 的 openssl。这背后的根本原因似乎是在 windows 命令提示符下使用时 openssl 的终端兼容性。

我发现基于 wsl (windows-subsystem-linux) 的 shell 似乎不错,命令通过正确的提示而不是似乎挂起。这里的步骤将是

  1. 安装ubuntu on windows
  2. 启动 windows 命令提示符。使用 wsl 命令启动 bash shell.
  3. openssl 工具已在此 shell 中可用。它应该给出密码并验证密码提示。