在 Linux 上使用 OpenSSL 续期证书,本质上就是用原来的私钥和 CSR(或重新生成 CSR)再签发一次证书。是否“真正续期”取决于你的证书是自签名、内部 CA 签发还是公网 CA(如 Let’s Encrypt)。
下面按常见场景说明。
如果你还保留着原来的:
example.keyexample.csr直接重新签发:
openssl x509 -req \
-in example.csr \
-signkey example.key \
-out example.crt \
-days 365
✅ 私钥不变,证书更新
用私钥重新生成 CSR:
openssl req -new \
-key example.key \
-out example.csr
再签发:
openssl x509 -req \
-in example.csr \
-signkey example.key \
-out example.crt \
-days 365
重新生成一套:
openssl genrsa -out example.key 2048
openssl req -new -key example.key -out example.csr
openssl x509 -req -in example.csr -signkey example.key -out example.crt -days 365
⚠️ 客户端需要重新信任新证书
假设你有:
ca.keyca.crtopenssl x509 -req \
-in example.csr \
-CA ca.crt \
-CAkey ca.key \
-CAcreateserial \
-out example.crt \
-days 365
如果你只有旧证书,可以用它生成新 CSR:
openssl x509 -x509toreq \
-in example.crt \
-signkey example.key \
-out example.csr
然后按上面方式签发。
❌ 不要用 OpenSSL 续 Let’s Encrypt
正确方式:
certbot renew
或指定域名:
certbot renew --cert-name example.com
openssl x509 -in example.crt -noout -dates
查看:
notBeforenotAftersystemctl restart nginx
systemctl restart apache2
如果你愿意,可以告诉我:
我可以给你精确命令。