# 使用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=xiaoding@kbbei.com # 重新加载环境变量 source ~/.bashrc ``` ## 2. 清除已存在的证书 ```bash # 删除已存在的证书文件 rm -f /root/frp/cert.pem /root/frp/key.pem # 移除acme.sh中的证书记录 acme.sh --remove -d kbbei.com acme.sh --remove -d "*.kbbei.com " # 清除acme.sh的域名配置 rm -rf ~/.acme.sh/kbbei.com rm -rf ~/.acme.sh/*.kbbei.com ``` ## 3. 申请证书 ### 3.1 设置腾讯云DNS API ```bash # 设置腾讯云API密钥(需要先在腾讯云控制台获取SecretId和SecretKey) export DP_Id="bfa2b440b09d11ef8f4fdb396f4b4302" export DP_Key="81847f1a22e040e7b405708f51bf41d8" # 设置腾讯云DNS API的标识符 https://console.cloud.tencent.com/taidc/api secretId:bfa2b440b09d11ef8f4fdb396f4b4302 secretKey:81847f1a22e040e7b405708f51bf41d8 userId:674d952860db7708b27658ad ``` ### 3.2 查看DNS解析记录 ```bash # 或者使用dig命令查询 dig TXT _acme-challenge.kbbei.com @8.8.8.8 # 等待解析生效检查 nslookup -type=TXT _acme-challenge.kbbei.com ``` ### 3.3 验证DNS记录 在申请证书之前,可以先验证DNS记录是否正确设置: ```bash # 验证DNS记录是否生效 dig _acme-challenge.kbbei.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 kbbei.com ``` ### 3.5 申请证书 ```bash apt-get install idn ``` ```bash # 使用DNS方式验证域名所有权(腾讯云DNS) # 先清理已有证书 acme.sh --remove -d kbbei.com acme.sh --remove -d "*.kbbei.com" rm -rf ~/.acme.sh/kbbei.com* # 重新申请证书(添加debug参数) acme.sh --issue --dns dns_dp -d kbbei.com -d "*.kbbei.com" --force # 说明: # dns_dp 是腾讯云DNS API的标识符 # --force 参数用于强制重新申请证书 # --debug 参数用于显示详细的调试信息 ``` ### 3.6 根据提示操作 Adding TXT value: KXPGUraeHDzW0v4MuJ4pwmIbzo6RYz1uyI0E4Tou1bA for domain: _acme-challenge.kbbei.com ## 4. 安装证书到frp指定目录 ```bash # 创建证书存放目录 mkdir -p /root/frp # 安装证书到指定目录(PEM格式) acme.sh --install-cert -d kbbei.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. 已配置域名为:kbbei.com (包含泛域名 *.kbbei.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.kbbei.com TXT