必要条件
一个域名,能对该域名进行解析配置(以
*.test.com
为例)一个linux环境,可访问外网(以
ubuntu 22.04
为例)
操作步骤
1.安装Certbot
# 更新apt库
sudo apt update
# 安装certbot
sudo apt install certbot
2.发起申请
sudo certbot certonly --preferred-challenges dns --manual -d test.com -d *.test.com --server https://acme-v02.api.letsencrypt.org/directory
这里--manual
表示手动验证域名,待会要给域名做一个txt类型解析记录,以验证你是这个域名的拥有者。
然后-d
的值如果只写*.test.com
,那么最后得到的证书可以覆盖任意xxx.test.com
域名,比如www.test.com | a.test.com | hello.test.com
等,但却覆盖不到test.com
本身这个无前缀域名,所以这里-d
要写两个。
后面--server
是Let's Encrypt官方接口地址列表。
执行以上命令,按提示进行操作,直到出现如下提示信息。
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.test.com.
with the following value:
t16A5zqMYw9TWEHOgMe_TYYdgXSieLNMQ51U5iC6m2M
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
其中_acme-challenge.test.com.
和t16A5zqMYw9TWEHOgMe_TYYdgXSieLNMQ51U5iC6m2M
后面需要用到。
3.域名解析添加TXT记录
这一步需要进入域名管理平台,看你的域名是在哪个平台申请的,是阿里云还是腾讯云,还是其他什么平台。
给域名解析添加一条TXT记录,主机记录为_acme-challenge
,记录类型为TXT
,记录值为t16A5zqMYw9TWEHOgMe_TYYdgXSieLNMQ51U5iC6m2M
。
添加完记录之后,会有一段生效时间,略等一两分钟,再回到刚才Press Enter to Continue
的地方,按回车继续。
如果不放心,也可以通过Google工具箱验证解析有没有生效,生效后再继续。
Google工具箱
https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.test.com.
4.得到证书文件
按回车之后,如果不出意外,会看到如下提示信息。
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/test.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/test.com/privkey.pem
This certificate expires on 2024-11-29.
These files will be updated when the certificate renews.
恭喜你成功获得证书。
其中fullchain.pem
是证书文件,privkey.pem
是私钥文件,根据需要进行使用即可。
另外,此方法获得的证书到期后不会自动更新,可以在到期前手动重复执行以上过程,即可更新证书。