我们有一个运行 Plesk 的 GoDaddy 专用服务器,需要 SSL。
我已经生成了证书文件并创建了一个 vhost_ssl.conf(因为我无法编辑默认的 plesk apache 配置 http.include,vhost_ssl.conf 被包含到 httpd.include),它告诉 apache 在哪里可以找到证书文件:
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 中的原因。
所以我被困住了,这超出了我微薄的管理技能。希望知道他在做什么的人告诉我发生了什么。
提前致谢。
它与 Plesk 无关。问题在于 SSL 和 HTTP 的工作方式。基本上,SSL 在启动之前并不知道您的服务器的名称,因此 Apache 无法选择要使用的证书集。请参阅http://www.modssl.org/docs/2.8/ssl_faq.html#ToC47了解有关此先有鸡还是先有蛋的问题的更多详细信息。
根据我使用 Plesk 的经验,与手动编辑配置文件相比,当我使用 Plesk Admin 站点来管理我的站点时,事情通常会变得更好。Plesk 对 SSL 证书的内置支持非常好——您可以轻松添加从第三方获得的证书并将其与您在 Plesk 中配置的站点之一相关联。
如果您选择直接修改配置文件,我在您的帖子中看到的危险信号是您正在尝试将两个不同的证书应用于同一个虚拟主机。根据我的经验,SSL 证书通常仅在 IP 地址和 SSL 证书之间存在 1:1 关系时才有效。我的建议是删除其中一个 SSL 证书,或者将虚拟主机分成不同 IP 地址上的两个独立站点。