Let's Encrypt是一个免费的证书颁发机构,可以为网站提供HTTPS加密,以确保网站的安全性。本文介绍如何使用Let's Encrypt生成通配符HTTPS证书的详细步骤。
1. 安装Let's Encrypt客户端
需要安装Let's Encrypt客户端,以便可以与Let's Encrypt服务器交互,申请证书。Let's Encrypt客户端可以在GitHub上获得,也可以使用其它的客户端,比如Certbot。
$ git clone https://github.com/letsencrypt/letsencrypt $ cd letsencrypt $ ./letsencrypt-auto --help
2. 生成私钥和CSR
需要生成一个私钥和一个证书签名请求(CSR),以便Let's Encrypt可以签发证书。可以使用OpenSSL命令行工具来生成私钥和CSR:
$ openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr
3. 申请证书
可以使用Let's Encrypt客户端来申请证书,使用通配符证书,可以使用以下命令:
$ ./letsencrypt-auto certonly --manual --preferred-challenges dns --email user@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.example.com
上面的命令中,--manual参数表示使用手动模式,--preferred-challenges dns表示使用DNS挑战验证,--email参数指定用户的邮箱,--server参数指定Let's Encrypt服务器,--agree-tos参数表示同意Let's Encrypt的服务条款,-d参数指定要申请证书的域名,*.example.com表示要申请的是一个通配符证书,可以用于example.com的所有子域名。
4. 验证域名所有权
Let's Encrypt会要求验证域名的所有权,使用DNS挑战验证,需要在DNS服务器上添加一个TXT记录,记录的值是Let's Encrypt给出的值,在Let's Encrypt客户端的提示下,可以添加TXT记录,完成域名所有权的验证。
5. 签发证书
当域名所有权验证通过后,Let's Encrypt就会签发证书,生成的证书文件位于/etc/letsencrypt/live/example.com/目录下,可以使用以下命令查看证书文件:
$ ls -l /etc/letsencrypt/live/example.com/ total 4 -rw-r--r-- 1 root root 1071 Dec 9 18:29 cert.pem -rw-r--r-- 1 root root 1675 Dec 9 18:29 chain.pem -rw-r--r-- 1 root root 1704 Dec 9 18:29 fullchain.pem -rw-r--r-- 1 root root 1675 Dec 9 18:29 privkey.pem
其中,cert.pem是证书文件,chain.pem是中级证书文件,fullchain.pem是证书文件和中级证书文件的合并文件,privkey.pem是私钥文件。
6. 配置Web服务器
需要将证书文件配置到Web服务器中,以便Web服务器可以使用HTTPS协议进行通信。比如,在Apache Web服务器中,可以将证书文件配置到VirtualHost中:
ServerName example.com 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 # other directives
上面的配置中,SSLCertificateFile指定证书文件,SSLCertificateKeyFile指定私钥文件,SSLCertificateChainFile指定中级证书文件。
7. 更新证书
Let's Encrypt的证书有效期只有90天,90天后就需要更新证书,可以使用Let's Encrypt客