Let's Encrypt已删除证书仍有效且出现名称不匹配错误如何解决?
Certbot删除证书后旧证书仍生效问题解决方案
根本原因
certbot delete命令仅会删除Certbot管理的证书文件,不会自动移除Web服务器、CDN等服务中对旧证书的引用配置,也不会自动重载服务让配置生效。
解决步骤
- 第一步:清理Web服务配置中的旧证书引用
- Nginx服务:进入
/etc/nginx/sites-available/目录,找到对应站点的配置文件,删除其中引用www.mydomain.net旧证书的ssl_certificate、ssl_certificate_key配置项,或替换为新的有效证书路径 - Apache服务:进入
/etc/apache2/sites-available/目录,找到对应站点的配置文件,删除其中引用www.mydomain.net旧证书的SSLCertificateFile、SSLCertificateKeyFile配置项,或替换为新的有效证书路径
- Nginx服务:进入
- 第二步:校验配置并重载Web服务
- Nginx执行:
sudo nginx -t && sudo systemctl reload nginx,先确认配置语法无错误再重载服务 - Apache执行:
sudo apache2ctl configtest && sudo systemctl reload apache2,先确认配置语法无错误再重载服务
- Nginx执行:
- 第三步:清理各层级缓存
- 浏览器端:清除浏览器缓存与SSL状态,Chrome可访问
chrome://net-internals/#sockets点击「Flush socket pools」,其他浏览器可直接重启后测试 - 代理节点:如果站点接入了CDN、WAF等反向代理服务,需要在对应平台后台更新证书配置后刷新节点缓存,避免边缘节点仍下发旧证书
- 浏览器端:清除浏览器缓存与SSL状态,Chrome可访问
- 第四步:本地验证证书状态
执行命令直接查询服务器返回的证书信息,确认证书已更新:openssl s_client -connect www.mydomain.net:443 -servername www.mydomain.net
异常排查
如果执行以上步骤后问题仍存在,可执行sudo netstat -tulpn | grep :443检查443端口是否被其他未更新配置的服务占用,调整对应服务的证书配置后重启即可。
内容的提问来源于stack exchange,提问作者Duddy67
相关产品推荐
相关产品推荐

