it-swarm.com.de

Lassen Sie uns verschlüsseln, Apache2 - Bearbeiten Sie vhosts richtig

Was ist der richtige Weg, um /etc/Apache2/sites-enabled zu bearbeiten, wenn example.com.conf und example.com-le-ssl.conf vorhanden sind?

Sollte ich beide Dateien bearbeiten, wenn ich etwas ändere? Oder nur eine und dann irgendwie certbot-auto zwingen, es zu beheben?

3
Ondrej Vrabel

Ich bin nicht sicher, welche Antwort auf Ihre Frage richtig ist, aber ich würde Ihnen die folgende Vereinfachung vorschlagen:

1. Alle Benutzer zur Verwendung von HTTPS zwingen. Die Definition des HTTP VirtualHost sollte folgendermaßen aussehen:

<VirtualHost *:80>

        ServerName example.com

        # Redirect Requests to HTTPS
        Redirect permanent "/" "https://example.com/"

        ErrorLog ${Apache_LOG_DIR}/example.com.error.log
        CustomLog ${Apache_LOG_DIR}/example.com.access.log combined

</VirtualHost>

Auf diese Weise müssen Sie nur die Konfiguration des HTTPS VirtualHost pflegen.

2. Sobald Sie generieren SSL-Zertifikatsdateien verschlüsseln, beschreiben Sie diese manuell in der Definition des HTTP S VirtualHost:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>

        ServerName example.com
        ServerAdmin [email protected]            

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

        ErrorLog ${Apache_LOG_DIR}/example.com.error.log
        CustomLog ${Apache_LOG_DIR}/example.com.access.log combined

        DocumentRoot /var/www/html    
        <Directory /var/www/html>
              # etc...
        </Directory>

        # etc...

    </VirtualHost>
</IfModule>

3. Fügen Sie die Definitionen beider VirtualHosts in eine einzige Konfigurationsdatei ein:

<VirtualHost *:80>
        # etc...
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        # etc...
    </VirtualHost>
</IfModule>

Diese Datei könnte /etc/Apache2/sites-available/example.com.conf sein.

4. Vergessen Sie nicht, a2dissite unnötige VirtualHosts (bzw. a2ensite die erforderlichen) und starten Sie Apache neu.

5. Bearbeiten Sie die crontab von root und fügen Sie einen Job hinzu, der beispielsweise jede Woche versucht, die Zertifikate zu erneuern. Geben Sie Sudo crontab -e ein und fügen Sie diese Zeile unten hinzu:

0 3 * * 0 /usr/bin/letsencrypt renew  >> /var/log/letsencrypt-renew.week-$(date +%W).log 2>&1

Das ist es.

3
pa4080