我正在运行一个Ubuntu 10.04 LTS服务器,它至今一直在运行带有自签名证书的Apache2。 我终于买了一个真正的证书,但我无法安装它。 我收到来自提供者的三个文件:
AddTrustExternalCARoot.crt mynewdomain_com.crt PositiveSSLCA2.crt
目前在我的网站启用/ SSL我有这个我的自签名证书:
SSLEngine On SSLCertificateFile /etc/apache2/ssl/cert.pem
所以我googled如何将crt文件转换为pem,它只是看起来是所有crt文件的连接。 这是我发现的指南,主要是匹配我使用的(我现在使用namecheap为我的DNS)。 所以我创build了我的新的Pem文件,并指出我的configuration。 当我跑步
service apache2 restart
守护进程无法启动。 我觉得我一定是把错误的顺序放进去了,但是还是没有开始。 我究竟做错了什么? 我怎样才能使用我的新证书?
至于密钥文件,我生成了一个名为server.key(用于创build我的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
你能否提供你如何生成证书的信息?
您错过了用于生成发送给证书颁发机构的.csr文件的私钥(可能是.key文件)。 Apache需要特定的私钥才能使用您提供的公钥。
编辑:
用这个密钥文件,你需要添加到你的configuration文件中:
SSLCertificateKeyFile /etc/apache2/server.key
确保文件被设置为一个权限模式,在服务器上的所有内容都无法查看 – 模式600应该是好的。
如果在添加之后无法启动,请告诉我出现了哪些错误(在控制台或Apache错误日志中)。
通过将您连接在一起的.crt文件连接在一起,您的Apache服务器应该正确地发送完整的证书链; 你可以validation它是使用openssl s_client -connect localhost:443 -showcerts 。
RSA server certificate is a CA certificate意味着您已将CA的证书指定为证书文件,而不是您的(由CA签名)。
您可能想尝试将SSLCertificateFilepathreplace为由CA签署的crt,而不是CA cert本身。
更新:有点更详细的解释:
你应该有3个文件:
密钥(通常用.key扩展名)。 这是最重要的一个。 你应该保密,永远不要发送给任何人。 这个文件实际上是用来encryption数据的。 您应该在SSLCertificateKeyFile指令中指定此文件的path。
你的CA的证书。 这是您用来签署公钥的审批机关公证书。 您应该在SSLCACertificateFile指令中指定此文件的path。
签名的公钥。 这是您从密钥文件(以证书请求的forms)提取的密钥的公共部分,并发送给CA进行签名。 您应该在SSLCertificateFile指令中指定此文件的path。
我从来没有要求从“真正的”CA证书,在我的testing中,我也创build了CA.
但是,在apache2configuration中,我还configuration了哪个path是CA证书,您可以检查一下,以防万一。