我可以使用 Certbot 添加 Lets Encrypt 证书作为年度续订之间的临时措施吗?

我可以使用 Certbot 添加 Lets Encrypt 证书作为年度续订之间的临时措施吗?

我的 SSL 证书上周末到期了,客户错过了续订电子邮件,而且他们显然对他们的网站显示 SSL 警告感到不高兴。

由于我现在已经在许多网站上使用 Lets Encrypt,我想知道我是否可以使用 Certbot 检查购买的证书是否过期,并在 SSL 续订之间将其替换为 Lets Encrypt 证书。有人知道这样的方法是否可行吗?我担心购买的证书的续订可能会因此而混乱,而且我不确定是否需要任何额外的设置才能让 Certbot 以这种方式工作。

有人能给出一些关于如何最好地处理 SSL 续订的建议吗?真的只需要一些指导。

答案1

是的,用 Letsencrypt 替换年度证书将避免进一步出现需要手动干预的问题。

1) 安装 Certbot 2) 颁发您的第一个证书,包括任何前置挂钩,以确保在续订时加载新证书(nginx 重启等)。将您的续订/帐户电子邮件设置为票务系统或分发列表(如果您离开,其他人会检查失败的续订)。我建议使用 webroot,那里有大量关于如何执行此操作的文档。3) 设置 croncertbot renew每隔一段时间运行一次,(在一段时间内,您可以重新启动服务而不会对用户产生负面影响,但在一段时间内,您可以快速修复出现的任何问题)。

不,Certbot 不是第三方服务的监控工具,请查看第三方服务。另外请记住,certbot 是一个 ACME 客户端,Letsencrypt 使用它。

答案2

脚本可能有错误,我没有测试过!请不要在生产环境中运行它。但我相信它应该是这样的:

#!/bin/bash
my_domain=example.com
my_ip=88.208.57.20 # could be example.com
my_port=443
seconds=86400 # 24h
cert_bot_cert="/etc/letsencrypt/live/$my_domain/fullchain.pem"
cert_bot_key="/etc/letsencrypt/live/$my_domain/privkey.pem"
native_cert="/etc/nginx/ssl/$mydomain/cert.crt"
native_key="/etc/nginx/ssl/$mydomain/key.key"  

function certrw {    
    cat $cer_bot_cert > $native_cert && cat $cert_bot_key > $native_key && nginx -t && service nginx reload
}

expire_date=$(date -d "$(echo | openssl s_client -servername $my_domain -connect $my_ip:$my_port 2>/dev/null | openssl x509 -noout -dates|grep notAfter|cut -d '=' -f2)" +%s)
today=$(date +%s)
diff=$(echo $expire_date-$today|bc)
if [ $diff -lt $seconds ];then
     certbot certonly --webroot -w /var/www/letsencrypt/ -d $my_domain && certrw
fi

相关内容