Let's Encrypt、Apache2 - 正确编辑虚拟主机

Let's Encrypt、Apache2 - 正确编辑虚拟主机

/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

就是这样。

相关内容