我是第一次在 Apache(Windows 服务器)中手动创建 CSR,以及安装生成的证书。不过,以下是我所做的。
首先,我使用以下命令生成 CSR...
openssl req -new -newkey rsa:2048 -nodes -keyout [domainname].key -out [domainname].csr -config "C:\Apache24\conf\openssl.cnf"
然后我逐步回答提示。我没有输入任何密码短语,我只是按回车键跳过了它。不确定这是否是导致我遇到的问题的原因。
生成 CSR 后,我将其上传到我的 SSL 供应商,然后下载生成的证书 .zip 文件。但是 .zip 文件只包含 2 个文件。一个是随机字符串文件名 .crt,另一个是捆绑文件名 .crt 文件。zip 中根本没有 .key 文件。
然后,我将以下行添加到 Apache 中的 VirtualHosts 文件中。
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot "c:/sites/mydomain.com"
ServerName mydomain.com
ServerAlias www.mydomain.com
SSLEngine on
SSLCertificateFile "c:\ssl\mydomain.com\randomstringfilename.crt"
SSLCACertificateFile "c:\ssl\mydomain.com\bundlefilename.crt"
</VirtualHost>
但是当我尝试启动 Apache 服务时,它崩溃了,并且在 error.log 文件中出现了以下内容。
[Tue Nov 21 12:13:08.096246 2017] [ssl:emerg] [pid 10496:tid 500] AH02577: Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file C:/ssl/mydomain.com/randomstringfilename.crt)
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] AH02564: Failed to configure encrypted (?) private key mydomain.com:443:0, check C:/ssl/mydomain.com/randomstringfilename.crt
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=RSA)
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Tue Nov 21 12:13:08.097246 2017] [ssl:emerg] [pid 10496:tid 500] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=PKCS8_PRIV_KEY_INFO)
我认为这与我没有 private.key 文件来添加到带有 SSLCertificateKeyFile 语句的 VirtualHosts 有关,但我不确定,因为我以前从未这样做过。
我需要做什么?
谢谢你!
答案1
openssl 要求-新...-keyout [域名].key...
当您运行创建 CSR 的命令时,它会创建一个密钥,[domainname].key
希望您仍然在某个地方保存它。如果没有,只需重新生成一个新的 CSR,然后重新密钥。大多数 CA 都会允许您生成新的密钥/证书,而无需支付任何额外费用。这次请密切注意您的密钥和 csr 保存到哪里。