/etc/apache2/sites-enabled
当有example.com.conf
和时,正确的编辑方法是什么example.com-le-ssl.conf
?
当我更改某些内容时,我应该同时编辑两个文件吗?还是只编辑一个文件,然后以某种方式强制certbot-auto
修复?
答案1
我不确定您的问题的正确答案是什么,但我建议您进行以下简化:
1.强制所有用户使用 HTTPS。HTTP VirtualHost 的定义应如下所示:
<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>
这样,您只需要维护 HTTPS VirtualHost 的配置。
2.只要你产生“Let's Encrypt” ssl 证书文件,手动将其描述到 HTTP 定义中年代虚拟主机:
<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.将两个 VirtualHosts 的定义插入到单个配置文件中:
<VirtualHost *:80>
# etc...
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
# etc...
</VirtualHost>
</IfModule>
此文件可能是/etc/apache2/sites-available/example.com.conf
。
4.不要忘记删除a2dissite
不必要的 VirtualHosts(分别是a2ensite
必要的)并重新启动 Apache。
5.编辑 root 的 crontab 并添加一个尝试更新证书的作业,例如每周更新一次。sudo crontab -e
在底部输入并添加以下行:
0 3 * * 0 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.week-$(date +%W).log 2>&1
就是这样。