由于阿里云不再提供免费的SSL证书,提供的免费测试版证书还无法保证稳定性。我就得找一个提供免费证书的公益机构,最终我看上了普及率很高的Let’s Encrypt。该机构提供的DV证书不仅仅完全免费,还支持通配符域名,虽然它提供的证书只有90天的有效期,但它却提供了自动化证书管理功能,解决了频繁更换证书的麻烦。由于该机构的证书只提供命令行界面(CLI)管理证书,本文我就着重介绍一下如何使用Certbot手动申请证书。至于自动申请/续签证书并部署到服务器,需要借助第三方工具或者自己编写脚本实现。
Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构,由非营利组织互联网安全研究组(ISRG)运作。建议具有命令行访问权限的人使用 Certbot ACME 客户端来申请证书。
接下来介绍在Windows环境下使用Certbot,若在其他环境下使用,请参考Certbot 官网 。Certbot自从2024年2月不再提供Windows版本的客户端更新,但是我们还可以通过该客户端申请证书。若要实现在服务器上证书的自动续签和部署,可以使用 Certify 证书管理器,该管理器的免费社区版只提供一个服务器上5个域名的管理,若要更多域名签发和服务器部署,就需要付费升级版本。
certbot --help
certbot命令支持使用自定义脚本来完成dns的验证,我们也可以更进一步添加定时计划运行certbot的shell来实现证书的自动签发和部署(该方法在网上有很多)。这里我们只介绍手动验证dns的方式来申请证书。运行下边的命令后会提示让我们添加两条 _acme-challenge
txt 记录,我们要添加两条这样的记录(每次添加后等个几分钟,待记录生效后再继续运行命令)。验证成功后会在 C:\Certbot\archive\bluepost.cn
文件夹中生成证书文件,格式为pem。证书的手动续签,是再次运行该命令重新申请即可;自动续签是运行命令 certbot renew
certbot certonly -d "*.bluepost.cn" -d "bluepost.cn" --manual --preferred-challenges dns
参数解释(可以不用关心):
如果你想为多个域名申请通配符证书(合并在一张证书中,也叫做 SAN 通配符证书),直接输入多个 -d 参数即可,比如:
certbot certonly -d *.example.com -d *.example.net -d www.example.cn --manual --preferred-challenges dns
比如我们要申请根域名和二级通配符域名的证书(包含example.com和*.example.com),可以将以下代码保存一个cetbot.sh文件中并运行。
#! /bin/bash
echo -e "\nINFO: 生成 Let's Encrypt 证书"
echo "INFO: 请填写需要签名的域名"
read -p "请输入根域名(不含www),将为根域名aa.com和所有二级域名签名*.aa.com:" domain
if [ -n "$domain" ];then
echo "INFO: 签发域名 $domain"
certbot certonly -d "${domain}" -d "*.${domain}" --manual --preferred-challenges dns
fi
echo "INFO:签发完成"
read -p "Please enter any key to exit" exit_shell
转载请注明:半亩方塘 » 推荐一个完全免费又好用的SSL证书,使用Certbot获取免费SSL证书Let’s Encrypt,支持自动签发部署、支持通配符域名