Skip to content

Certbot安装证书速通

https://blog.csdn.net/Richardlcx/article/details/132282722

sudo apt install certbot

使用 DNS 验证

shell
certbot certonly --manual --preferred-challenges dns -d *.demo.com -d demo.com

使用 Standalone 验证

停止现有的 web 服务器程序,如 nginx 或 apache。这样可以避免端口冲突(视实际情况而定)。

sudo certbot certonly --standalone -d example.com -d www.example.com

Certbot 会把证书生成到系统默认路径,如 nginx 的 /etc/letsencrypt/live/example.com/

可能的报错

1. Problem binding to port 80: Could not bind to IPv4 or IPv6.

根据这个错误信息,问题出在Certbot自动验证过程中启动的临时web服务器未能成功绑定80端口。可能原因有:

80端口被其它进程占用了,需要关闭其他正在使用80端口的程序。可以用netstat -ntlup来检查。

Certbot默认使用80端口。如果想使用其他端口,可以添加--http-01-port 8080参数来指定端口。

防火墙阻止了80端口访问。可以添加规则放行80端口或关闭防火墙测试。

服务器上存在多个网卡或IP地址,Certbot绑定了错误的地址。可以用--preferred-challenges http参数来强制使用80端口。

权限不足,需要以root账户运行certbot或使用sudo

2. live directory exists for example.com

根据您的命令输出,使用端口8080避免了前面的80端口冲突问题,Certbot验证过程继续进行了下去。但在最后一个步骤时报错显示live目录已存在。这表示您之前已经为example.com生成过证书,并存在默认的证书文件目录/etc/letsencrypt/live/example.com。

出现这个问题的原因可能有:

你之前使用certbot或者其他工具已经获取过example.com的证书了,现在会冲突。

上次获取证书过程中失败或被中断,留下了残余文件。

certbot的证书存储路径被修改或指向了自定义目录。

不同的certbot版本或模式导致了live目录存放路径不一致。

解决方法是:

检查默认目录,删除或备份 existing 现有的证书文件。

使用 certbot delete 删除现有证书。

指定不同的 --cert-path 来改变新证书的存储位置。

加上 --force-renewal 参数来强制重载证书。

在清理已存在的旧证书后,就可以重试命令获取新的证书了。也可以考虑切换到 certbot 的 certonly 模式避免冲突。