ssl.md 3.8 KB

使用acme.sh申请和安装SSL证书教程

1. 安装acme.sh

# 安装所需工具
apt update
apt install -y socat curl wget

# 安装acme.sh
curl https://get.acme.sh | sh -s email=mall@niusenyun.com

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

2. 清除已存在的证书

# 删除已存在的证书文件
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

# 设置腾讯云API密钥(需要先在腾讯云控制台获取SecretId和SecretKey)
export DP_Id="82be64b0a33311efbcaf475f4b5bfbc8"
export DP_Key="d2087abec1f643329e6b7e0635043705"
# 设置腾讯云DNS API的标识符
userId:67371376616d0500c5162a87
secretId:82be64b0a33311efbcaf475f4b5bfbc8
secretKey:d2087abec1f643329e6b7e0635043705

3.2 查看DNS解析记录

# 使用腾讯云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记录是否正确设置:

# 手动添加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)

# 查看网卡状态
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 申请证书

# 使用DNS方式验证域名所有权(腾讯云DNS)
acme.sh --issue --dns dns_dp -d niusenyun.com -d '*.niusenyun.com' --force

# 说明:dns_dp 是腾讯云DNS API的标识符
# --force 参数用于强制重新申请证书

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

# 创建证书存放目录
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. 验证证书

# 查看证书内容
openssl x509 -in /root/frp/cert.pem -text -noout

# 验证私钥
openssl rsa -in /root/frp/key.pem -check

6. 自动更新

acme.sh会自动创建一个cron任务,每天检查并在需要时自动更新证书,无需手动操作。

可以通过以下命令查看cron任务:

crontab -l

注意事项

  1. 已配置域名为:niusenyun.com(包含泛域名 *.niusenyun.com)
  2. 替换your-secret-idyour-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