申请 Let’s Encrypt 通配符 HTTPS 证书,并配置 Apache2

3月中旬, Let’s Encrypt 终于正式发布通配符 HTTPS 证书了,赶紧去申请一个玩玩(然而我的网站暂时还不支持加SSL,只能先在VPS上试试了 /(ㄒoㄒ)/)。

1. 安装 Let’s Encrypt 客户端

系统为 Ubuntu 16.04,参照 Certbot 官网的教程,运行以下命令安装(我这里由于是用 root 用户,所以非 root 请自行加 sudo):

# apt-get update
# apt-get install software-properties-common
# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install python-certbot-apache

2. 获取通配符证书

先查看 certbot 的版本是否 > 0.22,否则不支持通配符证书:

# certbot --version
certbot 0.22.2

自带的 –apache 模式似乎并不能处理通配符证书的情况,所以需要手动获取。

在对应的 support 页面[1]中,了解到还需要手动指定服务器,执行:

# certbot -d *.xxxx.com --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory certonly

之后按提示操作,并添加自己的域名的 TXT 记录,以通过 ACME 认证。完成后,可在 /etc/letsencrypt/live/xxxx.com/ 下看到几个 .pem 文件。

3. 在 Apache2 中配置 SSL

首先启用 SSL,Apache2 提供了一些工具,可以不用手动配置文件链接:

# a2ensite default-ssl
# a2enmod ssl

修改 /etc/apache2/sites-available/default-ssl.conf :

添加一行你的域名
ServerName xxx.xxxx.com:443

证书的路径修改一下
SSLCertificateFile	/etc/letsencrypt/live/xxxx.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xxxx.com/privkey.pem

保存文件,# service apache2 restart 重启,浏览器打开 https://yourdomainxxxx.com 看一下?

4. HTTP -> HTTPS

开启 Apache2 的 rewrite:

# a2enmod rewrite

修改 apache2.conf:

# nano /etc/apache2/apache2.conf

<Directory /var/www/>  # 找到这里
        Options Indexes FollowSymLinks
        AllowOverride ALL        # 把它改为 ALL
        Require all granted
</Directory>

# service apache2 restart

添加 .htaccess[2]

# nano /var/www/html/.htaccess

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)$  https://%{SERVER_NAME}/$1 [L,R]

5. 更新证书

由于是手动操作获取证书的,所以自动更新的 certbot renew 不能用。更新证书的方法不太复杂:再次执行第2步的那串比较长的命令,按照操作就可以了。

相关参考

1. https://community.letsencrypt.org/t/how-to-issue-acmev2-wildcard-with-certbot-0-22-0/55657
2. https://blog.csdn.net/mgsky1/article/details/53844332


发表评论