OpenSSL在PKCS12导出期间因“将'屏幕'加载到随机状态”而挂起


73

我正在使用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'

第一个命令运行成功完成。但是第二个卡住了

正在将“屏幕”加载到随机状态-

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

澄清:问题如何在openssl解决“无法写入'随机状态'”,这描述了不同的问题-写入.rnd文件的问题。这里的问题似乎是生成随机状态。(并且仅在第二个命令中。)


您是否尝试过使用另一版本的OpenSSL(它们具有独立的版本)?
Iansus 2015年

否。(最后,我改用了MakeCert。)
TN。

1
在openssl如何修复“无法写入'随机状态'”的可能重复项。此外,Windows上还有一些错误。请参阅随机数| OpenSSL Wiki上的Windows问题。最后,/CN=myhost可能是错误的;请参阅如何使用openssl创建自签名证书?
jww 2015年

Answers:


224

请尝试winpty在oppenssl之前添加:

winpty openssl ...

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

winpty bash

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

winpty 帮助我在这种环境下运行openssl:

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

1
此答案和@Duncan Smart的答案可以互换。导出PFX文件时,OpenSSL会提示您输入密码,但显然Windows的Git终端无法处理此I / O,因此该命令只是挂起。在命令之前加上命令会winpty包装命令,以便I / O正常工作,而传递则-passout意味着OpenSSL不再需要输入密码。
Rabadash8820 '20

64

我发现我需要在命令行上使用-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

9
拯救了我的生命
GojiraDeMonstah '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.