Ubuntu 14.04 Apache 2.4.7 mit mod_ssl
Ich versuche, ein (einzelnes) Domänenzertifikat zu installieren. Aus irgendeinem Grund akzeptiert Apache dies nicht und weigert sich zu starten, wenn die zugehörige Website aktiviert ist. Trotz heftigen Googelns kann ich die Fehlermeldungen nicht verstehen. Warum heißt es, dass kein Zertifikat konfiguriert ist? Es befindet sich im virtuellen Host und zeigt auf die CRT-Datei am richtigen Speicherort.
Fehlerprotokoll
[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.
Was ich versucht habe:
- doppelt überprüfte Virtualhost-Syntax und Pfad zu Zertifikat und Schlüssel
- doppelt geprüfte Zertifikate sind chmoded 644 und der Schlüssel ist chmoded 600
- doppelt geprüftes Zertifikat ist gültig. Von meinem Provider erneut heruntergeladen. Öffnete es im Editor
Hier ist der virtuelle Host
<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>
Irgendwelche Vorschläge, was falsch sein könnte?
quelle
Eine weitere Sache zu überprüfen, die in den vorherigen Antworten nicht erwähnt wurde.
Wenn Sie "SSLEngine on" irgendwo in Ihrer globalen Konfiguration haben (im Grunde irgendwo außerhalb des VirtualHost und ähnlicher Blöcke) und Sie keine SSLCertificateFile-Direktive haben, die auch global definiert ist, wird Apache daran ersticken, bevor es überhaupt zum virtuellen Host und zu Ihnen gelangt wird diesen Fehler bekommen.
Die Fehlermeldung ist tatsächlich korrekt, erwähnt jedoch nicht, WELCHER Server kein Zertifikat hat.
quelle
<VirtualHost *:443> ServerName example.com Redirect permanent / https://www.example.com/ </VirtualHost>
was den Fehler verursacht hat. Anscheinend weil neinSSLCertificateFile
oderSSLCertificateKeyFile
im Block definiert wurde.Auf Ihrem ersten virtuellen Host (für www.domain.tld) ist SSL nicht aktiviert, obwohl er sich auf Port 443 befindet.
Sie müssen SSLEngine, SSLCertificateFile, ... wie im zweiten hinzufügen, andernfalls ist für www.domain.tld kein https-Zugriff möglich.
Ich bin mir nicht sicher, ob es zu einer pauschalen Weigerung führen sollte, aber ...
quelle