在 Linux 上使用 OpenSSL 续签( renew )证书,常见有 两种场景:
下面分别说明。
续签通常 重新生成 CSR,而不是“延长原证书”。
已有文件示例:
server.key(私钥)server.csr(原请求,可选)ca.crt / ca.key(CA 证书和私钥)openssl req -new -key server.key -out server.csr
或新建私钥:
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req \
-in server.csr \
-CA ca.crt \
-CAkey ca.key \
-CAcreateserial \
-days 365 \
-sha256 \
-out server.crt
✅ 这样就完成了“续签”。
openssl x509 -in server.crt -noout -dates
openssl verify -CAfile ca.crt server.crt
如果你用的是 Let’s Encrypt:
sudo certbot renew
sudo certbot renew --force-renewal
sudo certbot certificates
Let’s Encrypt 证书有效期 90 天,建议用 cron 自动续签
续签后通常需要:
# Nginx
sudo nginx -s reload
# Apache
sudo systemctl reload apache2
❌ OpenSSL 不能直接“延长”已有证书
✅ 正确做法是 重新签发
❌ 不更新 CA
✅ 私有 CA 证书不变,只重签终端证书
如果你愿意,可以告诉我:
我可以给你一套 可直接复制执行的命令。