我正在尝试使用 OpenSSL(Apache 2.2 + mod_ssl 附带的版本)创建自签名 SSL 证书。OpenSSL 二进制文件位于C:\Web\Apache2.2\bin
,我正在使用的配置文件是C:\Web\Apache2.2\conf\openssl.cnf
。我已执行以下命令:
(我将使用换行符来使其更具可读性。)
openssl req -config ..\conf\openssl.cnf -new -out ..\conf\eduardo.csr
-keyout ..\conf\eduardo.pem
# Then I entered country code, province, city, etc.
# This step worked correctly.
openssl rsa -in ..\conf\eduardo.pem -out ..\conf\eduardo.key
# Then I entered my pass phrase.
openssl x509 -in ..\conf\eduardo.csr -out ..\conf\eduardo.cert
-req -signkey ..\conf\eduardo.key -days 1000000
并且,在执行最后一步时,我得到了以下输出:
Loading 'screen' into random state - done
Signature ok
subject=/C=PE/ST=Lima/L=Lima/...
Getting Private Key
unable to write 'random state' <--
这个错误是什么意思?我该如何修复它?
答案1
openssl 尝试将“随机状态”写入文件,但其使用的目录的权限不允许创建该文件。请参阅:
答案2
- 首先,您需要以管理员模式打开命令提示符。
然后执行以下操作,
- cd 到证书路径文件夹
- 设置OPENSSL_CONF =“C:\OpenSSL-Win32\bin\openssl.cfg”
设置 RANDFILE="D:\path_to_certs\.rnd" 在这里如果你设置 RANDFILE 路径而不提及 .rnd 那么它会给出消息“无法写入随机状态”并且 openssl 不会为文件创建 .rnd 随机状态。
目录:\OpenSSL-Win32\bin\openssl.exe
- OpenSSL> genrsa -out ca.key
它对我有用。
答案3
对我来说,在 Windows Server 上,解决此问题的方法只是确保通过“以管理员身份运行”打开命令提示符