Não sei qual é a resposta certa para a sua pergunta, mas sugiro a seguinte simplificação:
1. Força todos os usuários a usar HTTPS. A definição do HTTP VirtualHost deve ficar assim:
<VirtualHost *:80>
ServerName example.com
# Redirect Requests to SSL
Redirect permanent / https://example.com/
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
</VirtualHost>
Desta forma, você precisará manter apenas a configuração do VirtualHost HTTPS.
2. Assim que você gerar os arquivos de certificado SSL "Vamos criptografar", descreva-os manualmente na definição do VirtualHost HTTP S :
<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. Insira as definições de ambos os VirtualHosts em um único arquivo de configuração:
<VirtualHost *:80>
# etc...
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
# etc...
</VirtualHost>
</IfModule>
Este arquivo pode ser /etc/apache2/sites-available/example.com.conf
.
4. Não se esqueça de a2dissite
VirtualHosts desnecessários (respectivamente a2ensite
o necessário) e reinicie o Apache.
5. Edite o crontab do root e adicione um trabalho que tentará renovar os certificados toda semana, por exemplo. Digite sudo crontab -e
e adicione esta linha na parte inferior:
0 3 * * 0 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.week-$(date +%W).log 2>&1
É isso.