У нас есть выделенный сервер GoDaddy, на котором работает Plesk, требующий SSL.
Я сгенерировал файлы сертификатов и создал vhost_ssl.conf (поскольку я не могу редактировать конфигурацию Apache Plesk по умолчанию 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
(это SSL-сертификат Plesk) и перезапустил Apache, и все заработало отлично.
Похоже, Apache не любит несколько SSLCertificateFile в одной директиве VirtualHost?
Как знает любой, кто работал с Plesk, я не могу просто удалить директиву SSLCertificateFile в httpd.include, поскольку Plesk перезапишет мои изменения, когда кто-то ее использует — именно поэтому она находится в vhost_ssl.conf.
Итак, я застрял, и это выходит за рамки моих скудных навыков администратора. Буду признателен, если кто-то, кто знает, что он делает, расскажет мне, что происходит.
Заранее спасибо.
решение1
По моему опыту с Plesk, все обычно работало лучше, когда я использовал сайт Plesk Admin для управления своими сайтами, а не вручную редактировал файл конфигурации. Встроенная поддержка сертификатов SSL в Plesk довольно хороша — вы можете легко добавить сертификат, полученный от третьей стороны, и связать его с одним из сайтов, которые вы настроили в Plesk.
Если вы решите напрямую изменить файлы конфигурации, красный флаг, который я вижу в вашем сообщении, заключается в том, что вы пытаетесь применить два разных сертификата к одному и тому же виртуальному хосту. По моему опыту, сертификаты SSL обычно работают только при наличии отношения 1:1 между IP-адресом и сертификатом SSL. Я бы посоветовал удалить один из сертификатов SSL или разбить виртуальный хост на два отдельных сайта на разных IP-адресах.
решение2
Это не имеет никакого отношения к Plesk. Проблема в том, как работают SSL и HTTP. По сути, SSL не знает имени вашего сервера до его запуска, и поэтому Apache не может выбрать, какой набор сертификатов использовать. Смотритеhttp://www.modssl.org/docs/2.8/ssl_faq.html#ToC47для более подробной информации об этой проблеме курицы и яйца.