所以这个服务器完全混乱了,但这不是重点。
我运行了 certbot,但失败了。检查了 vhost 的 80 端口。它有全面重定向。
看起来这不会造成问题,对吧?其实是的,我将其注释掉,certbot 运行没有问题。
因此,我尝试为 certbot 创建一个新 vhost。“ServerName domain.com.well-known Directory /var/www/certbot”然后运行 certbot 并指定新目录。没有成功,它说它需要是网站的根目录。
我也尝试了其他方法,但都不起作用。我不知道该怎么办,我甚至不知道重定向是否有必要,但我真的不能乱用它。如果这是唯一的方法,那么我们必须这样做,使用年度证书并手动更改它们或做其他事情。
答案1
Certbot 不会为仅支持端口 80 的 vhost 颁发证书,因为端口 80 实际上是非安全 http 协议。
您需要将端口 443 添加到现有的 https vhost,除非您通过使用 --apache 选项调用 Certbot 来使用 Certbot Apache2 插件。
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
# ... SSL configuration goes here
</VirtualHost>
不确定是否理解您关于重定向的观点。但不要指望 certbot 会为重定向颁发证书,因为证书与主机名 (url) 相关联,并且还会在颁发证书之前跟踪路由域。
但如果你谈论的是重定向 www.example.com到https://example.com,您可以将其添加到您的 *:80 vhost。
Redirect / https://www.example.com/
忘记那些众所周知的事情,使用 certbot 指出你的根 webdir,因为没有必要。只要你想要的主机名上有 ssl 证书,你的 vhost 也应该绑定端口 *:443 参数,并且已经是一个启用了 apache2 的站点,a2enssite <your-site.conf / your-site.vhost>
Certbot 就会完成剩下的工作。
实际上我刚刚意识到,即使没有竞标 443 端口,Certbot 也有可能检测到您的 Apache2 站点并为您完成这项工作,如果我错了请纠正我,因为我已经很久没有使用它了。
但是只要您的主机名/域名/名称/url 随意调用它,可以在浏览器中访问或通过 ping 您的 url 返回 ip(在您的本地网络之外),您就不必进行任何编辑。
别忘了使用 Certbot --apache 选项。这将使任务变得更容易。您需要先安装软件包(sudo apt install python3-certbot-apache)或类似的东西。