我正在运行一个 Ubuntu 10.04 LTS 服务器,到目前为止,该服务器一直使用自签名证书运行 Apache2。我终于购买了一个真正的证书,但我无法安装它。我从提供商那里收到了三个文件:
AddTrustExternalCARoot.crt
mynewdomain_com.crt
PositiveSSLCA2.crt
目前,在我的 sites-enabled/ssl 中,我有这个作为我的自签名证书:
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/cert.pem
因此我在 Google 上搜索了如何将 crt 文件转换为 pem,它看起来只是所有 crt 文件的组合。 这是我找到的与我使用的最匹配的指南(我现在使用 namecheap 作为我的 DNS)。所以我创建了我的新 pem 文件,并将我的配置指向它。当我运行
service apache2 restart
守护进程无法启动。我想我一定是把 crts 的顺序搞错了,但它仍然无法启动。我做错了什么?我该如何使用我的新证书?
至于密钥文件,我生成了一个名为 server.key 的文件(用于创建我的 csr)。它现在位于 /etc/apache2/server.key
启动 Apache 时出现以下错误:
[Sat Mar 17 13:44:43 2012] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Sat Mar 17 13:44:43 2012] [warn] RSA server certificate CommonName (CN) `PositiveSSL CA 2' does NOT match server name!?
[Sat Mar 17 13:44:43 2012] [error] Unable to configure RSA server private key
[Sat Mar 17 13:44:43 2012] [error] SSL Library Error: 185073780 error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
答案1
您能提供有关如何生成证书的信息吗?
.key
您缺少用于生成发送给证书颁发机构的文件的私钥(可能是文件) .csr
。Apache 需要该特定私钥才能使用您获得的公钥。
编辑:
使用该密钥文件,您将需要将如下内容添加到您的配置中:
SSLCertificateKeyFile /etc/apache2/server.key
确保将文件设置为某种权限模式,使服务器上的所有内容都无法查看该文件 - 模式 600 应该不错。
如果添加后仍无法启动,请告诉我出现了什么错误(在控制台上或 Apache 错误日志中)。
通过.crt
连接在一起的文件,你的 Apache 服务器应该可以正确发送完整的证书链;你可以验证它是否正常工作openssl s_client -connect localhost:443 -showcerts
。
答案2
RSA server certificate is a CA certificate
意味着您已指定 CA 的证书作为证书文件,而不是您自己的证书(由 CA 签名)。
您可能想要尝试替换SSLCertificateFile
由 CA 签名的 crt 的路径,而不是 CA 证书本身。
更新:更详细的解释:
你应该有 3 个文件:
密钥(通常以 .key 为扩展名)。这是最重要的一个。您应该保密,并且永远不要将其发送给任何人。此文件实际上用于加密数据。您应该在
SSLCertificateKeyFile
指令中指定此文件的路径。您的 CA 证书。这是您用来签署公钥的证书颁发机构的公共证书。您应该在
SSLCACertificateFile
指令中指定此文件的路径。已签名的公钥。这是您从密钥文件(以证书请求的形式)中提取的密钥的公共部分,并发送给 CA 进行签名。您应该在
SSLCertificateFile
指令中指定此文件的路径。
答案3
我从未从“真正的”CA 请求证书,在我的测试中我也创建了 CA。
但是,在 apache2 配置中,我还配置了 CA 证书的路径,您可以检查一下,以防万一。