有一个合法的SSL证书,但我没有安装它

我正在运行一个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个文件:

  1. 密钥(通常用.key扩展名)。 这是最重要的一个。 你应该保密,永远不要发送给任何人。 这个文件实际上是用来encryption数据的。 您应该在SSLCertificateKeyFile指令中指定此文件的path。

  2. 你的CA的证书。 这是您用来签署公钥的审批机关公证书。 您应该在SSLCACertificateFile指令中指定此文件的path。

  3. 签名的公钥。 这是您从密钥文件(以证书请求的forms)提取的密钥的公共部分,并发送给CA进行签名。 您应该在SSLCertificateFile指令中指定此文件的path。

我从来没有要求从“真正的”CA证书,在我的testing中,我也创build了CA.

但是,在apache2configuration中,我还configuration了哪个path是CA证书,您可以检查一下,以防万一。