我绝不是这个领域的专家,所以如果这个问题很愚蠢,我深表歉意。我正在更新客户网站上的 SSL 证书,但在更新 conf 文件后,服务器宕机了。Apache 无法启动。我只能通过恢复对 conf 文件的更改来解决问题。
以下是我在 conf 文件中写的内容(为了保护隐私,网站名称已隐藏):
# SSLCertificateFile /etc/ssl/certs/XXXX_XXXX_exp-6-29-25.csr
# SSLCertificateKeyFile /etc/ssl/private/XXXX_exp-6-29-25.key
# SSLCertificateChainFile /etc/ssl/certs/XXX.XXXX.org.pem
error.log 中有以下几个内容:
[Fri Jun 10 15:49:29.281400 2022] [ssl:emerg] [pid 5958] AH02561: Failed to configure certificate XXXX.XXXX.org:443:0, check /etc/ssl/certs/XXXX_XXXX_exp-6-29-25.csr
[Fri Jun 10 15:49:29.281458 2022] [ssl:emerg] [pid 5958] SSL Library Error: error:0909006C:PEM routines:get_name:no start line (Expecting: CERTIFICATE) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
[Fri Jun 10 15:49:29.281470 2022] [ssl:emerg] [pid 5958] SSL Library Error: error:140AD009:SSL routines:SSL_CTX_use_certificate_file:PEM lib
我使用的文件类型是否错误?显然我无法发布实际的证书,但如果您有任何想法,请告诉我要检查什么。
谢谢你!
Ubuntu 版本 18.04
Apache2 版本 2.4.29
答案1
如果你只有证书签名请求( .csr
) 则您没有证书。您必须将 CSR 发送至认证机构(CA)进行签名并使用您收到的证书(.crt
有时.cer
).pem
,作为您的SSLCertificateFile
指示。这对于内部 CA 和公共 CA 来说都是正确的工作流程,尽管验证的具体程序有很大差异。
您可以通过检查 PEM 编码文件的第一行来区分 CSR 和证书:
- A证书签名请求以。。开始:
-----BEGIN CERTIFICATE SIGNING REQUEST-----
或者-----BEGIN CERTIFICATE REQUEST-----
- 证书以 开头
-----BEGIN CERTIFICATE-----
。