域名证书怎么查看(免费拿到泛域名证书从申请到自动续期完整教程)

域名证书怎么查看(免费拿到泛域名证书从申请到自动续期完整教程)

admin 2025-11-18 主营业务 4 次浏览 0个评论

本文演示如何使用 Let’s Encrypt 通过 DNS 验证申请免费泛域名(wildcard)证书,并示范如何使用腾讯 DNSPod API 自动完成 DNS 验证以实现证书自动续期。还包含在 Ubuntu 上部署、调试和定时自动执行的实用建议。

一、如何申请免费的泛域名证书1. 环境准备确保你的域名管理控制台可操作 DNS 记录(可以添加/删除 TXT 记录)。服务器能访问外网,并安装了 Certbot。如果你打算自动续期并使用 DNS API(如 DNSPod),需要在 DNS 服务商处创建 API 密钥并妥善保存。2. 安装Certbot

确保在您的服务器上安装了Certbot。以下是在Ubuntu上的安装命令:

sudo apt update sudo apt install certbot3. 使用DNS验证方法申请泛域名证书

Let's Encrypt支持多种验证方法,但由于泛域名证书的要求,您需要使用DNS验证方法。以下是步骤:

1)申请证书

运行以下命令,使用DNS验证请求泛域名证书(在命令中用您的实际域名替换example.com):

sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d "example.com"-d "*.example.com":表示您要申请泛域名证书。-d "example.com":这也是您的主域名(需要同时申请)。

2) 添加DNS TXT记录

Certbot会提示您添加一条DNS TXT记录以进行验证。您将看到类似以下内容:

Please deploy a DNS TXT record under the name _acme-challenge.example.com with the following value: <some_random_value>

根据提示,登录到您的域名注册商或DNS提供商的控制面板,添加上述TXT记录。请注意:可能需要一些时间让DNS记录生效,您可以使用dig或nslookup命令来检查TXT记录是否已正确添加。

3) 完成验证过程

添加了DNS TXT记录后,返回到命令行并按Enter键继续。Certbot将验证DNS记录并颁发SSL证书。

4) 配置和安装证书

Let's Encrypt证书通常会存储在如下路径中:

/etc/letsencrypt/live/example.com/fullchain.pem(证书)/etc/letsencrypt/live/example.com/privkey.pem(私钥)

您可以将这两个文件配置到您的Web服务器(如Nginx或Apache)中。

二、自动续期-dnspod(腾讯)

手动每次添加 TXT 记录很不方便,推荐用 DNS 服务商的 API 自动完成 DNS 验证。下面以 DNSPod 为例说明自动化流程。

1、获取 DNSPod API 密钥

登录 DNSPod 控制台(https://console.dnspod.cn/)-> “我的账号” -> “API 密钥”,获取 SecretId/SecretKey(或 DNSPod 的 token,视版本与控制台而定)。妥善保管这些密钥,不要泄露。

2、准备 Python 虚拟环境(可选,但推荐)

在虚拟环境中安装运行依赖,避免污染系统 Python。示例:python3 -m venv /home/youruser/myenvsource /home/youruser/myenv/bin/activate

(参考零错配置 Python 虚拟环境:venv/virtualenv 教程 + 常见问题与快速入门 - 水元素的文章 - 知乎

零错配置 Python 虚拟环境:venv/virtualenv 教程 + 常见问题与快速入门)pip install tccli

tccli 是腾讯云命令行工具,可以操作 DNSPod(参考:https://cloud.tencent.com/document/product/440/34012)。也可以使用官方 SDK 或其他第三方脚本(如 acme-dns、lexicon)来操作 DNS。

3、虚拟环境中安装tcclipip install tccli

命令行工具 TCCLI 配置方法_腾讯云 //tccli使用方法

4、编写续期脚本

供certbot回调的脚步dnspod.sh

#!/bin/bashsource /home/hewuli/myenv/bin/activate RECORD_FILE="/tmp/_acme-challenge.${CERTBOT_DOMAIN}_${CERTBOT_VALIDATION}" if ! command -v tccli >/dev/null; then echo "TCCLI is required: https://cloud.tencent.com/document/product/440" 1>&2 exit 1fi if [ "$1" = "clean" ]; then # 删除 DNS TXT 记录 RECORD_ID=$(cat ${RECORD_FILE}) if [ -n "${RECORD_ID}" ]; then tccli dnspod DeleteRecord --cli-unfold-argument \ --Domain ${CERTBOT_DOMAIN} \ --RecordId ${RECORD_ID} \ >/dev/null fi rm -f ${RECORD_FILE}else # 创建 DNS TXT 记录 RECORD_ID=$( tccli dnspod CreateRecord --cli-unfold-argument \ --Domain ${CERTBOT_DOMAIN} \ --SubDomain _acme-challenge \ --RecordType TXT \ --RecordLine 默认 \ --Value ${CERTBOT_VALIDATION} \ --TTL 600 \ | grep "RecordId" | grep -Eo "[0-9]+" ) echo ${RECORD_ID} > ${RECORD_FILE} sleep 20 # 等待 DNS 记录传播fi

编写certbot续签脚本update_cert.sh

#!/bin/bashsudo certbot renew --manual --preferred-challenges=dns --manual-auth-hook "./dnspod.sh" --manual-cleanup-hook "./dnspod.sh clean" --deploy-hook "ls"

5、定期执行update_cert.sh

我们使用常用的方法cron

编辑 root 的 crontab(如果需要 root 权限):bashsudo crontab -e

添加一行(每天 03:30):

30 3 * * * /usr/local/bin/update_cert.sh >> /var/log/update_cert.log 2>&1

说明:重定向日志到 /var/log/update_cert.log,有助于排错。确保脚本可执行并在脚本顶部指定 PATH 或在 crontab 中设置 PATH,例如:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin30 3 * * * /usr/local/bin/update_cert.sh >> /var/log/update_cert.log 2>&1

三、宝塔申请证书和自动续签-dnspod(方便)1. 申请证书流程

打开宝塔面板,点击“网站”菜单后,点击"未部署"

免费拿到泛域名证书:从申请到自动续期完整教程

申请证书

免费拿到泛域名证书:从申请到自动续期完整教程

免费拿到泛域名证书:从申请到自动续期完整教程

免费拿到泛域名证书:从申请到自动续期完整教程

申请成功

免费拿到泛域名证书:从申请到自动续期完整教程

免费拿到泛域名证书:从申请到自动续期完整教程

2. 设置脚本自动续签免费拿到泛域名证书:从申请到自动续期完整教程

当前的证书有效期是3个月,可以设置2个月自动更新一次

免费拿到泛域名证书:从申请到自动续期完整教程

3. 证书保存路径

路径如下:

/www/server/panel/vhost/letsencrypt/*.http://xxx.cn/

可以查看一下:

免费拿到泛域名证书:从申请到自动续期完整教程

四、示例资源和参考Certbot 官方文档:https://certbot.eff.org/DNSPod API / tccli 文档:命令行工具 TCCLI 配置方法_腾讯云acme.sh 项目:https://github.com/acmesh-official/acme.sh

转载请注明来自海坡下载,本文标题:《域名证书怎么查看(免费拿到泛域名证书从申请到自动续期完整教程)》

每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,4人围观)参与讨论

还没有评论,来说两句吧...