Ubuntu 14.04 Apache 2.4.7 mit mod_ssl
Ich versuche, ein (einzelnes) Domänenzertifikat zu installieren. Aus irgendeinem Grund akzeptiert Apache es nicht und weigert sich, zu starten, wenn die entsprechende Website aktiviert ist. Trotz intensiven Googelns kann ich die Fehlermeldungen nicht verstehen. Warum wird angezeigt, dass kein Zertifikat konfiguriert ist? Es ist im virtuellen Host festgelegt und verweist 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:
- doppelte Überprüfung der Virtualhost-Syntax und des Pfads zu Zertifikat und Schlüssel
- Das doppelt geprüfte Zertifikat hat den CHMOD 644 und der Schlüssel den CHMOD 600
- doppelt überprüftes Zertifikat ist gültig. Von meinem Provider erneut heruntergeladen. Im Editor geöffnet
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>
Irgendein Vorschlag, was falsch sein könnte?
Antwort1
Ich denke, eltrai ist auf dem richtigen Weg, aber ich würde den ersten Block entfernen und im zweiten <VirtualHost>
verwendenServerAlias
<VirtualHost _default_:443>
ServerAdmin admin@localhost
ServerName domain.tld
ServerAlias www.domain.tld
Sie können RedirectMatch
später im selben Block Ihre Weiterleitung von www auf non hinzufügen.
Antwort2
Es muss noch etwas überprüft werden, das in den vorherigen Antworten nicht erwähnt wurde.
Wenn Sie irgendwo in Ihrer globalen Konfiguration (also irgendwo außerhalb des VirtualHost und ähnlicher Blöcke) „SSLEngine aktiviert“ haben und keine SSLCertificateFile-Direktive global definiert haben, gerät Apache daran ins Stocken, bevor es überhaupt den virtuellen Host erreicht, und Sie erhalten diesen Fehler.
Die Fehlermeldung ist zwar korrekt, erwähnt aber nicht, WELCHER Server kein Zertifikat hat.
Antwort3
Auf Ihrem ersten virtuellen Host (für die TLD www.domain.tld) ist SSL nicht aktiviert, obwohl es sich auf Port 443 befindet.
Sie müssen SSLEngine, SSLCertificateFile, … wie im zweiten hinzufügen, sonst ist kein https-Zugriff für www.domain.tld möglich.
Ich bin mir jedoch nicht sicher, ob es zu einer völligen Startverweigerung führen sollte ...