web-dev-qa-db-fra.com

Encryptons-nous, Apache2 - Éditer correctement les hôtes virtuels

Quelle est la bonne façon de modifier /etc/Apache2/sites-enabled lorsqu'il y a example.com.conf et example.com-le-ssl.conf?

Devrais-je éditer les deux fichiers en changeant quelque chose? Ou un seul, puis forcer d'une manière ou d'une autre certbot-auto à le réparer?

3
Ondrej Vrabel

Je ne sais pas quelle est la bonne réponse à votre question, mais je vous suggérerais la simplification suivante:

1. Forcer tous les utilisateurs à utiliser HTTPS. La définition de HTTP VirtualHost devrait ressembler à ceci:

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

De cette manière, vous ne devrez gérer que la configuration de HTTPS VirtualHost.

2. Dès que vous générez "Encryptons" les fichiers de certificat ssl, décrivez-les manuellement dans la définition du 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. Insérez les définitions des deux VirtualHosts dans un seul fichier de configuration:

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

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

Ce fichier pourrait être /etc/Apache2/sites-available/example.com.conf.

4. N'oubliez pas de a2dissite hôtes virtuels inutiles (respectivement a2ensite ceux qui sont nécessaires) et redémarrez Apache.

5. Modifiez la crontab de la racine et ajoutez un travail qui tentera de renouveler les certificats, chaque semaine par exemple. Tapez Sudo crontab -e et ajoutez cette ligne en bas:

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

C'est ça.

3
pa4080