执行sudo certbot delete删除证书后重启Nginx报错如何解决
修复Certbot删除证书后Nginx启动报错方案
报错原因
删除Certbot签发的证书后,Nginx配置文件中仍保留了该证书的引用路径,启动时读取不到已删除的证书文件就会触发该报错:
nginx: [emerg] cannot load certificate "/etc/letsencrypt/live/fishymine.xyz/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/fishymine.xyz/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
修复步骤
- 第一步:定位引用无效证书的Nginx配置文件
执行如下命令扫描所有Nginx配置,找到对应配置文件位置:sudo grep -r "fishymine.xyz/fullchain.pem" /etc/nginx/
扫描结果一般会输出对应配置路径,通常位于/etc/nginx/sites-available/目录下的站点配置文件,或者主配置/etc/nginx/nginx.conf中。 - 第二步:修改对应配置文件
根据实际需求选择操作:- 无需继续提供该域名HTTPS服务:删除配置中对应的
ssl_certificate、ssl_certificate_key配置行,以及listen 443 ssl相关的HTTPS监听配置;如果整个站点已经不需要,可以直接删除该站点配置文件,并删除/etc/nginx/sites-enabled/目录下对应的软链接。 - 仍需提供该域名HTTPS服务:重新通过Certbot申请对应域名的有效证书,申请完成后Certbot会自动更新配置中的证书路径,也可以手动将新生成的证书路径替换到配置对应的位置。
- 无需继续提供该域名HTTPS服务:删除配置中对应的
- 第三步:校验Nginx配置合法性
执行命令验证配置是否正确:sudo nginx -t
输出包含syntax is ok和test is successful则代表配置无错误。 - 第四步:重启Nginx生效
执行如下命令重启Nginx即可:sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者user16761779
相关产品推荐
相关产品推荐

