
VmShell INC 手动 DNS 泛域名证书申请工具,适用于需要为主域名及其所有下级域名申请 SSL/TLS 泛域名证书的服务器环境。该工具基于 acme.sh 证书申请程序,通过手动添加 DNS TXT 验证记录完成域名所有权验证,适合宝塔面板、LNMP、Nginx、Apache 以及普通 Linux 服务器使用。
使用前,请确保服务器已经安装 Linux 系统,并具备正常的网络连接。同时,用户需要拥有目标域名的 DNS 管理权限,可以登录域名注册商或 DNS 服务商后台添加 TXT 记录。服务器建议使用 root 用户或具有 sudo 权限的用户执行脚本。
不要直接使用以下方式执行:
bash https://linuxword.com/wp-content/uploads/SoftWare/vmshellssl.sh
因为 bash 会把网址当作本地文件名处理。正确方式是先将脚本下载到服务器,再进行查看和执行。
首先执行下载命令:
curl -fL 'https://linuxword.com/wp-content/uploads/SoftWare/vmshellssl.sh' -o /tmp/vmshellssl.sh
下载完成后,建议先查看脚本内容,确认脚本来源和操作范围:
less /tmp/vmshellssl.sh
确认无误后执行:
bash /tmp/vmshellssl.sh
如果当前用户没有足够权限,可以使用:
sudo bash /tmp/vmshellssl.sh
脚本启动后,会要求用户输入需要申请证书的域名。例如输入:
example.com
输入时只填写主域名,不需要添加 http://、https://,也不要填写具体路径。脚本通常会自动申请以下两个域名:
example.com
*.example.com
其中,主域名证书可以用于访问 example.com,泛域名证书可以用于访问 www.example.com、api.example.com、mail.example.com 等一级子域名。
生成 DNS 验证信息后,脚本会显示需要添加的 TXT 记录。用户需要登录域名 DNS 管理后台,新建 TXT 类型记录。记录名称通常为:
_acme-challenge
部分 DNS 服务商要求填写完整名称:
_acme-challenge.example.com
记录值必须完整复制脚本显示的内容,不能增加引号、空格或其他字符。如果脚本显示多个 TXT 验证值,应全部添加,不能删除旧记录。DNS 记录添加后,可以使用以下命令检查是否已经生效:
dig TXT _acme-challenge.example.com
也可以使用:
nslookup -type=TXT _acme-challenge.example.com
确认查询结果中已经出现脚本要求的 TXT 内容后,返回脚本界面,按照提示输入确认信息,继续执行证书申请。DNS 记录传播可能需要几分钟,个别 DNS 服务商可能需要更长时间。如果验证失败,请检查记录名称、记录类型、记录值以及 DNS 服务商是否保存成功。
证书申请成功后,脚本会显示证书保存目录,通常包含以下文件:
fullchain.cer
example.com.key
ca.cer
其中,fullchain.cer 是网站使用的证书文件,私钥文件通常以 .key 结尾。配置 Nginx 或宝塔面板时,应分别填写证书文件和私钥文件。私钥文件属于敏感信息,不要通过公共聊天、邮件或网页公开传输。
如果脚本要求输入证书迁移目录,可以填写目标目录,例如:
/www/server/panel/vhost/cert/example.com
脚本会将本次申请生成的证书文件复制或迁移到指定目录。迁移完成后,应在宝塔面板或 Nginx 配置中加载证书,并重新加载 Web 服务。证书部署后,可以通过浏览器访问网站,检查 HTTPS 是否正常,也可以使用 SSL 检测工具确认完整证书链是否正确。
证书申请成功后,请保留 acme.sh 的配置目录和证书记录,以便后续自动续期。泛域名证书通常有有效期限制,续期时仍可能需要重新添加 DNS 验证记录。生产环境执行脚本前,建议先备份现有证书和 Nginx 配置。VmShell INC 建议用户仅在本人拥有管理权限的域名和服务器上使用本工具。