# 使用acme.sh申请和安装SSL证书教程 ## 1. 安装acme.sh ```bash # 安装所需工具 apt update apt install -y socat curl wget # 安装acme.sh curl https://get.acme.sh | sh -s email=mall@niusenyun.com # 重新加载环境变量 source ~/.bashrc ``` ## 2. 清除已存在的证书 ```bash # 删除已存在的证书文件 rm -f /root/frp/cert.pem /root/frp/key.pem # 移除acme.sh中的证书记录 acme.sh --remove -d niusenyun.com acme.sh --remove -d "*.niusenyun.com" # 清除acme.sh的域名配置 rm -rf ~/.acme.sh/niusenyun.com rm -rf ~/.acme.sh/*.niusenyun.com ``` ## 3. 申请证书 ### 3.1 设置腾讯云DNS API ```bash # 设置腾讯云API密钥(需要先在腾讯云控制台获取SecretId和SecretKey) export DP_Id="82be64b0a33311efbcaf475f4b5bfbc8" export DP_Key="d2087abec1f643329e6b7e0635043705" # 设置腾讯云DNS API的标识符 userId:67371376616d0500c5162a87 secretId:82be64b0a33311efbcaf475f4b5bfbc8 secretKey:d2087abec1f643329e6b7e0635043705 ``` ### 3.2 查看DNS解析记录 ```bash # 使用腾讯云API获取解析记录 curl -X POST https://dnspod.tencentcloudapi.com \ -H "Authorization: SECRET_ID" \ -H "Content-Type: application/json" \ -d '{ "Domain": "niusenyun.com", "Subdomain": "_acme-challenge" }' # 或者使用dig命令查询 dig TXT _acme-challenge.niusenyun.com @8.8.8.8 # 等待解析生效检查 nslookup -type=TXT _acme-challenge.niusenyun.com ``` ### 3.3 验证DNS记录 在申请证书之前,可以先验证DNS记录是否正确设置: ```bash # 手动添加DNS TXT记录 # 主域名验证 记录类型: TXT 主机记录: _acme-challenge 记录值: uF1OMd8vv7Yfvn5lxmR328NyXT1yzEDD0h8C8dwmOkw # 泛域名验证 记录类型: TXT 主机记录: _acme-challenge 记录值: uF1OMd8vv7Yfvn5lxmR328NyXT1yzEDD0h8C8dwmOkw # 验证DNS记录是否生效 dig _acme-challenge.niusenyun.com TXT # 等待DNS记录生效(通常需要等待1-5分钟) ``` ### 3.4 网络配置(Ubuntu 24.04) ```bash # 查看网卡状态 ip addr # 重启网卡方法1(使用netplan) sudo netplan apply # 重启网卡方法2(使用systemd) sudo systemctl restart systemd-networkd # 重启网卡方法3(针对特定网卡) sudo ip link set dev [网卡名] down sudo ip link set dev [网卡名] up # 验证网络连接 ping -c 4 niusenyun.com ``` ### 3.5 申请证书 ```bash # 使用DNS方式验证域名所有权(腾讯云DNS) acme.sh --issue --dns dns_dp -d niusenyun.com -d '*.niusenyun.com' --force # 说明:dns_dp 是腾讯云DNS API的标识符 # --force 参数用于强制重新申请证书 ``` ## 4. 安装证书到frp指定目录 ```bash # 创建证书存放目录 mkdir -p /root/frp # 安装证书到指定目录(PEM格式) acme.sh --install-cert -d niusenyun.com \ --key-file /root/frp/key.pem \ --fullchain-file /root/frp/cert.pem \ --reloadcmd "systemctl restart frpc" ``` ## 5. 验证证书 ```bash # 查看证书内容 openssl x509 -in /root/frp/cert.pem -text -noout # 验证私钥 openssl rsa -in /root/frp/key.pem -check ``` ## 6. 自动更新 acme.sh会自动创建一个cron任务,每天检查并在需要时自动更新证书,无需手动操作。 可以通过以下命令查看cron任务: ```bash crontab -l ``` ## 注意事项 1. 已配置域名为:niusenyun.com(包含泛域名 *.niusenyun.com) 2. 替换`your-secret-id`和`your-secret-key`为腾讯云API密钥(在腾讯云控制台 -> 访问密钥 -> API密钥管理中获取) 3. 确保域名已正确解析到服务器IP 4. DNS记录生效可能需要一些时间,如果证书申请失败,请等待几分钟后重试 ## 故障排查 如果遇到问题,可以查看以下日志: ```bash # 查看acme.sh日志 acme.sh --log # 检查证书权限 ls -l /root/frp/cert.pem /root/frp/key.pem # 检查DNS记录 dig _acme-challenge.niusenyun.com TXT