"Server sollte SSL-fähig sein, aber kein Zertifikat konfiguriert haben"

7

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?

Pixeline
quelle

Antworten:

9

Ich denke, eltrai ist auf dem richtigen Weg, aber ich würde den ersten <VirtualHost>Block entfernen und ServerAliasim zweiten verwenden

<VirtualHost _default_:443>
    ServerAdmin admin@localhost
    ServerName domain.tld
    ServerAlias www.domain.tld

Sie können Ihre RedirectMatchspäter in demselben Block hinzufügen , um von www zu non umzuleiten.

Machavity
quelle
Danke, das hat es geschafft! Ich habe gezögert, Ihre Antwort oder die von eltrai auszuwählen, da ich denke, dass das Problem tatsächlich damit zusammenhängt, dass SSL virtualhost die SSL-Anweisungen nicht enthält, aber ich bin Ihrem Rat gefolgt, alle SSL-Anweisungen in einem virtuellen Host zu konsolidieren.
Pixeline
6

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.

BBBThunda
quelle
Vielen Dank. Ihre Antwort hat mir geholfen, die SSLEngine-Einstellung aufzuspüren, und tatsächlich ist es diejenige, die das Problem verursacht.
Sharuzzaman Ahmat Raslan
Dies war näher an meinem Problem ... Ich hatte, <VirtualHost *:443> ServerName example.com Redirect permanent / https://www.example.com/ </VirtualHost>was den Fehler verursacht hat. Anscheinend weil nein SSLCertificateFileoder SSLCertificateKeyFileim Block definiert wurde.
Jamil
Das ist das Problem, das ich habe. Ich habe Certbot verwendet, die Zertifikate gelöscht, um die Dinge zu bereinigen und neu zu beginnen. Jetzt kann ich Certbot nicht mehr verwenden, da es auch Apache neu starten muss. Müssen wir dann immer mindestens Standard-Serverzertifikate manuell erstellen?
Brian Thomas
5

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 ...

eltrai
quelle