Apache - 创建 CSR 导致 SSL 证书没有 .key

Apache - 创建 CSR 导致 SSL 证书没有 .key

我是第一次在 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 保存到哪里。

相关内容