# 使用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@xiaodingyun.cn

# 重新加载环境变量
source ~/.bashrc
```

## 2. 清除已存在的证书

```bash
# 删除已存在的证书文件
rm -f /root/frp/cert.pem /root/frp/key.pem

# 移除acme.sh中的证书记录
acme.sh --remove -d xiaodingyun.cn  
acme.sh --remove -d "*.xiaodingyun.cn  "

# 清除acme.sh的域名配置
rm -rf ~/.acme.sh/xiaodingyun.cn  
rm -rf ~/.acme.sh/*.xiaodingyun.cn  
```

## 3. 申请证书

### 3.1 设置腾讯云DNS API

```bash
# 设置腾讯云API密钥（需要先在腾讯云控制台获取SecretId和SecretKey）
export DP_Id="9ec5c5a0a57611ef9fa21fb4ee2b819c"
export DP_Key="84d361f9997546c5b16e821121a3337f"
# 设置腾讯云DNS API的标识符
https://console.cloud.tencent.com/taidc/api
userId:673adf0c2ab3a41d61c2f385
secretId:9ec5c5a0a57611ef9fa21fb4ee2b819c
secretKey:84d361f9997546c5b16e821121a3337f
```

### 3.2 查看DNS解析记录

```bash
# 或者使用dig命令查询
dig TXT _acme-challenge.xiaodingyun.cn   @8.8.8.8

# 等待解析生效检查
nslookup -type=TXT _acme-challenge.xiaodingyun.cn  
```

### 3.3 验证DNS记录

在申请证书之前，可以先验证DNS记录是否正确设置：

```bash
# 验证DNS记录是否生效
dig _acme-challenge.xiaodingyun.cn   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 xiaodingyun.cn  
```

### 3.5 申请证书
```bash
apt-get install idn
```

```bash
# 使用DNS方式验证域名所有权（腾讯云DNS）
# 先清理已有证书
acme.sh --remove -d xiaodingyun.cn 
acme.sh --remove -d "*.xiaodingyun.cn"
rm -rf ~/.acme.sh/xiaodingyun.cn*

# 重新申请证书（添加debug参数）
acme.sh --issue --dns dns_dp -d xiaodingyun.cn  -d "*.xiaodingyun.cn" --force

# 说明：
# dns_dp 是腾讯云DNS API的标识符
# --force 参数用于强制重新申请证书
# --debug 参数用于显示详细的调试信息
```

### 3.6 根据提示操作

Adding TXT value: KXPGUraeHDzW0v4MuJ4pwmIbzo6RYz1uyI0E4Tou1bA for domain: _acme-challenge.xiaodingyun.cn
 

## 4. 安装证书到frp指定目录

```bash
# 创建证书存放目录
mkdir -p /root/frp

# 安装证书到指定目录（PEM格式）
acme.sh --install-cert -d xiaodingyun.cn   \
--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. 已配置域名为：xiaodingyun.cn  （包含泛域名 *.xiaodingyun.cn  ）
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.xiaodingyun.cn   TXT