在Apache上无法安装SSL证书

我们有专门的服务器与运行Plesk需要SSL的GoDaddy。

我已经生成了证书文件,并且创build了一个vhost_ssl.conf(因为我不能编辑默认的plesk apacheconfigurationhttp.include,vhost_ssl.conf被包含到httpd.include中),它告诉apache在哪里可以find证书文件:

SSLCertificateFile /usr/local/psa/var/certificates/domain.com.crt SSLCertificateKeyFile /usr/local/psa/var/certificates/domain.com.key SSLCertificateChainFile /usr/local/psa/var/certificates/sub.class1.server.ca.pem 

当我停止/启动apache时,它拒绝启动。 error_log没有任何东西(这很奇怪)。

然后我打开httpd.include,发现这个位:

 <VirtualHost 208.xxx.xxx.xxx:443> ServerName domain.com:443 ServerAlias www.domain.com UseCanonicalName Off SSLEngine on SSLVerifyClient none SSLCertificateFile /usr/local/psa/var/certificates/certagC9054 Include /var/www/vhosts/domain.com/conf/vhost_ssl.conf 

然后我注意到了

  SSLCertificateFile /usr/local/psa/var/certificates/certagC9054 

(这是plesk的SSL证书),并重新启动apache,它工作得很好。

似乎Apache不喜欢同一个VirtualHost指令中的多个SSLCertificateFile?

任何使用plesk的人都知道,我不能只删除httpd.include中的SSLCertificateFile指令,因为当有人使用它时,plesk会覆盖我的更改 – 这就是为什么它在vhost_ssl.conf中的原因。

所以我被卡住了,这超出了我微薄的pipe理技能。 希望有人知道他正在做什么来告诉我发生了什么事情。

提前致谢。

在我使用Plesk的经验中,当我使用Plesk Admin网站来pipe理我的网站时,事情总的来说效果更好,而不是手动编辑configuration文件。 Plesk对SSL证书的内置支持非常好 – 您可以轻松地添加从第三方获取的证书,并将其与您在Plesk中configuration的其中一个站点相关联。

如果您select直接修改configuration文件,我在您的文章中看到的红色标志是您试图将两个不同的证书应用于同一个虚拟主机。 根据我的经验,SSL证书通常只在IP地址和SSL证书之间存在1:1的关系时才起作用。 我的build议是删除一个SSL证书,或将虚拟主机分成两个不同IP地址的单独站点。

这与Plesk无关。 问题在于SSL和HTTP的工作方式。 基本上,SSL在启动之前并不知道服务器的名称,所以Apache不能select使用哪一组证书。 请参阅http://www.modssl.org/docs/2.8/ssl_faq.html#ToC47了解更多关于这个鸡与鸡蛋问题的细节&#x3002;