ECS 宝塔更新 Let's Encrypt 证书失败
码不停提
未能成功修复宝塔Let's Encrypt, 改为手动更新证书
码不停提
未能成功修复宝塔Let's Encrypt, 改为手动更新证书
如果 certbot 总是出现网络问题,acme.sh 是更好的选择:
# 安装 acme.sh
curl https://get.acme.sh | sh
# 使用 webroot 方式签发证书
~/.acme.sh/acme.sh --issue -d example.domain.com --webroot /www/wwwroot/example.domain.com
# 查看证书位置
~/.acme.sh/acme.sh --info -d example.domain.com
证书生成后,在宝塔面板手动导入:
/root/.acme.sh/example.domain.com/example.domain.com.cer/root/.acme.sh/example.domain.com/example.domain.com.keycertbot 命令(第一个代码块),看看是否还有网络错误acme.sh(终极方案),这个工具更轻量,受 Python 环境影响更小acme.sh 也不行,最后用宝塔面板的 【DNS 验证(手动)】 方式先试第一个命令,告诉我结果!
如果证书文件不存在或已经过期,执行以下命令强制重新签发:
bash
# 先注册账号(如果还没注册)
~/.acme.sh/acme.sh --register-account -m 82294148@qq.com
# 强制重新签发证书
~/.acme.sh/acme.sh --issue -d example.domain.com --webroot /www/wwwroot/example.domain.com --force
一旦确认证书有效,在宝塔面板中导入:
example.domain.com → 【SSL】密钥(KEY):
bash
cat /root/.acme.sh/example.domain.com_ecc/example.domain.comkey
证书(PEM格式):
bash
cat /root/.acme.sh/example.domain.com_ecc/example.domain.com.cer
根证书(CA):
bash
cat /root/.acme.sh/example.domain.com_ecc/ca.cer
确认 cron 任务已配置:
bash
crontab -l | grep acme
如果输出类似以下内容,说明自动续期已配置:
text
0 0 * * * /root/.acme.sh/acme.sh --cron --home /root/.acme.sh > /dev/null
先执行第一组命令(查看证书详情和到期时间),告诉我输出结果。如果证书有效,就直接在宝塔面板导入;如果证书有问题,我们用 --force 重新签发。
~/.acme.sh/acme.sh --issue -d zf.rx.sc.cn --webroot /www/wwwroot/zf.rx.sc.cn --force
[Sun Jul 19 03:40:07 PM CST 2026] Using CA: https://acme.zerossl.com/v2/DV90
[Sun Jul 19 03:40:07 PM CST 2026] Creating domain key
[Sun Jul 19 03:40:07 PM CST 2026] The domain key is here: /root/.acme.sh/zf.rx.sc.cn_ecc/zf.rx.sc.cn.key
[Sun Jul 19 03:40:07 PM CST 2026] Single domain='zf.rx.sc.cn'
[Sun Jul 19 03:41:18 PM CST 2026] Getting webroot for domain='zf.rx.sc.cn'
[Sun Jul 19 03:41:18 PM CST 2026] Verifying: zf.rx.sc.cn
[Sun Jul 19 03:41:26 PM CST 2026] Processing. The CA is processing your order, please wait. (1/30)
[Sun Jul 19 03:41:36 PM CST 2026] Success
[Sun Jul 19 03:41:36 PM CST 2026] Verification finished, beginning signing.
[Sun Jul 19 03:41:36 PM CST 2026] Let's finalize the order.
[Sun Jul 19 03:41:36 PM CST 2026] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/XSr3EZbjd1PfqmERnhTVlg/finalize'
[Sun Jul 19 03:41:49 PM CST 2026] Order status is 'processing', let's sleep and retry.
[Sun Jul 19 03:41:49 PM CST 2026] Sleeping for 15 seconds then retrying
[Sun Jul 19 03:42:05 PM CST 2026] Polling order status: https://acme.zerossl.com/v2/DV90/order/XSr3EZbjd1PfqmERnhTVlg
[Sun Jul 19 03:42:08 PM CST 2026] Downloading cert.
[Sun Jul 19 03:42:08 PM CST 2026] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/cz9RbbqCva5bZ4sRQva88g'
[Sun Jul 19 03:42:20 PM CST 2026] Cert success.
-----BEGIN CERTIFICATE-----
MIIDezCCAyGgAwIBAgIRAP1VHRSUqiGTd46kpzOBEk8wCgYIKoZIzj0EAwIwRjEL
MAkGA1UEBhMCQVQxFTATBgNVBAoTDFplcm9TU0wgR21iSDEgMB4GA1UEAxMXWmVy
b1NTTCBFQ0MgRFYgU1NMIENBIDIwHhcNMjYwNzE5MDAwMDAwWhcNMjYxMDE3MjM1
OTU5WjAWMRQwEgYDVQQDEwt6Zi5yeC5zYy5jbjBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABLa+ar5GX+bWAmh1F2/dfkzrUib5oc5sabweOxO1aEE5GS1Uq1BA1sT8
jW0feL1TppGXKZbyQhtTMrY9G0uFJ9OjggIeMIICGjAfBgNVHSMEGDAWgBSURZ/a
UUdx1XOurB2rCHISba18YjAdBgNVHQ4EFgQUESizslRumEo+55fKUT0cnhfGyjMw
DgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUH
AwEwEwYDVR0gBAwwCjAIBgZngQwBAgEwbgYIKwYBBQUHAQEEYjBgMDkGCCsGAQUF
BzAChi1odHRwOi8vY3J0LnNlY3RpZ28uY29tL1plcm9TU0xFQ0NEVlNTTENBMi5j
cnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMIIBBgYKKwYB
BAHWeQIEAgSB9wSB9ADyAHcA1219ENGn9XfCx+lf1wC/+YLJM1pl4dCzAXMXwMjF
aXcAAAGfeVMLhQAABAMASDBGAiEA57ctOhBIMGTxUDOvIALQscjSBOgj6bGUwGD+
+H68/iMCIQCCLJOUxc8U6F+O8slPPdSwqcgJ4RE7NPcYfKV84TiKmAB3AMijxH/H
s625NWsBP2p6Em3jOk5DpcZG+ZetOXWZHc+aAAABn3lTC4YAAAQDAEgwRgIhAKcW
XWub5eumO4gPdhLAGYg/XcbkJuE7teEeazGToLxLAiEA2KgNEV1kq8qm60bSCKYO
4LEEsKAEi8Shh5Nix2JjN78wFgYDVR0RBA8wDYILemYucnguc2MuY24wCgYIKoZI
zj0EAwIDSAAwRQIgIR9ptM4+IrBU6epa7Kc9ZtIyoD1W8RZ1K2Q86WaOXt4CIQDQ
x28OKl0wvBoV4890/jxfXzDIidOT3euoUv/Q9XGO1Q==
-----END CERTIFICATE-----
[Sun Jul 19 03:42:20 PM CST 2026] Your cert is in: /root/.acme.sh/zf.rx.sc.cn_ecc/zf.rx.sc.cn.cer
[Sun Jul 19 03:42:20 PM CST 2026] Your cert key is in: /root/.acme.sh/zf.rx.sc.cn_ecc/zf.rx.sc.cn.key
[Sun Jul 19 03:42:20 PM CST 2026] The intermediate CA cert is in: /root/.acme.sh/zf.rx.sc.cn_ecc/ca.cer
[Sun Jul 19 03:42:20 PM CST 2026] And the full-chain cert is in: /root/.acme.sh/zf.rx.sc.cn_ecc/fullchain.cer
^C
把 KEY 和 PEM 配置到的站点后台.
本地通过 curl -I https://your.domain.com 测试的时候, 本地电脑上测试是正常的, 然后在服务器上测试会返回 curl: (60) SSL certificate problem: unable to get local issuer certificate
解决办法:
让服务器上所有工具(包括 curl)都能正确验证证书。你需要找到 curl 默认查找的根证书文件并确保它存在且完整。
首先,检查 curl 的默认配置:
bash
curl -v https://home.git.saya.cloud 2>&1 | grep "CAfile"
这会显示类似 CAfile: /etc/ssl/certs/ca-certificates.crt 的信息。
然后,将 acme.sh 生成的完整证书链,追加到 curl 使用的那个根证书文件里:
bash
cat /root/.acme.sh/home.git.saya.cloud_ecc/fullchain.cer >> /etc/ssl/certs/ca-certificates.crt
重要提醒:请先备份你的
/etc/ssl/certs/ca-certificates.crt文件,以防操作失误。
最后,再次测试: bash
curl -I https://home.git.saya.cloud
现在应该会成功。
PS: 服务器上如果有 Go, Python 常驻内存的程序, 需要重启进程才会生效.
暂无目录