Ubuntu 14.04 Apache 2.4.7 с mod_ssl
Я пытаюсь установить (одиночный) сертификат домена. По какой-то причине apache не принимает его и отказывается запускаться, если соответствующий веб-сайт включен. Несмотря на интенсивный поиск в Google, я не могу понять сообщения об ошибках. Почему написано, что сертификат не настроен? Он установлен на виртуальном хосте и указывает на файл crt в нужном месте.
Журнал ошибок
[Tue May 19 18:11:08.123857 2015] [ssl:emerg] [pid 10040:tid 140146576725888] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)
[Tue May 19 18:11:08.123894 2015] [ssl:emerg] [pid 10040:tid 140146576725888] AH02312: Fatal error initialising mod_ssl, exiting.
Что я пробовал:
Вот виртуальный хост
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.domain.tld
RedirectMatch (.*) https://domain.tld$1
</VirtualHost>
<VirtualHost _default_:443>
ServerAdmin admin@localhost
ServerName domain.tld
DocumentRoot /home/user/www/domain.tld/public
# SSL CERTIFICATES
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain.tld.crt
SSLCertificateKeyFile /etc/ssl/private/domain.tld.key
SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem
SSLVerifyClient None
# SSLProtocol all -SSLv2 -SSLv3
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
<Directory /home/user/www/domain.tld/public>
Require all granted
</Directory>
LogLevel error
ErrorLog ${APACHE_LOG_DIR}/user-eu-error.log
CustomLog ${APACHE_LOG_DIR}/user-eu-access.log combined
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/user/www/domain.tld/public/$1
ErrorDocument 404 /missing.php
# Mod_status
<location /server-status>
SetHandler server-status
Order Allow,Deny
Allow from all
</location>
</VirtualHost>
</IfModule>
Любое предложение относительно того, что может быть не так?
Я думаю, что eltrai находится на правильном пути, но я бы удалил первый <VirtualHost>
блокировать и использовать ServerAlias
во-вторых
<VirtualHost _default_:443>
ServerAdmin admin@localhost
ServerName domain.tld
ServerAlias www.domain.tld
Вы можете добавить свой RedirectMatch
позже в том же блоке для перенаправления с www на non.
Еще одна вещь, которую нужно проверить, о которой не упоминалось в предыдущих ответах.
Если у вас есть "SSLEngine on" где-нибудь в вашей глобальной конфигурации (в основном где угодно за пределами VirtualHost и подобных блоков), и у вас нет директивы SSLCertificateFile, также определенной глобально, apache задохнется от этого, прежде чем он даже дойдет до виртуального хоста, и вы получит эту ошибку.
Сообщение об ошибке действительно правильное, но не упоминает, КАКОЙ сервер не имеет сертификата.
На вашем первом виртуальном хосте (для www.domain.tld) не включен SSL, хотя он находится на порте 443.
Вам нужно добавить SSLEngine, SSLCertificateFile, ... как во втором, иначе доступ по https для www.domain.tld будет невозможен.
Однако я не уверен, что это должно вызвать категорический отказ от запуска ...