Certbot: Nginx 插件中的 HTTP2 支持

创建于 2016-10-17  ·  31评论  ·  资料来源: certbot/certbot

从#3640 拆分。

nginx feature request significant

最有用的评论

从 #3640

目前 nginx 插件增加了:
listen 443 ssl; # managed by Certbot

HTTP 2 的一个选项会很好,或者通过指定--http2标志或者只是检查 nginx 的兼容性。

listen 443 ssl http2;
listen [::]:443 ssl http2;

所有31条评论

从 #3640

目前 nginx 插件增加了:
listen 443 ssl; # managed by Certbot

HTTP 2 的一个选项会很好,或者通过指定--http2标志或者只是检查 nginx 的兼容性。

listen 443 ssl http2;
listen [::]:443 ssl http2;

这个问题有什么进展吗? 如果我手动添加http2 ,它会在续订时消失吗?

不会。使用certbot renew更新您的证书不会更改这些行。

刚刚检查了我的问题,发现它已在 22 小时前关闭。

我想添加该功能的消息首先会在这里发布?

令人惊讶的是, rgrep -il http2 certbot-nginx什么也没返回。 所以它仍然没有实施。

@benqzq ,是的。 任何有关这方面进展的消息都将在此处添加。 Let's Encrypt 社区论坛上的主题在 30 天无活动后自动关闭。

我建议添加一个标志--lhttpl表示“最新”),这样我们就不会将它锁定到特定版本的 http。 虽然l可能会令人困惑(也许--LH ?)。

@benqzq为什么让简单的事情变得复杂? --http2是不言自明的

  • 默认行为是关闭 http2
  • --http2 打开http2

有时它是你需要的,至少是一点点,但无论如何,我都赞成一般的符号。 恕我直言( --http2或我建议的一般符号)。

这是一个如此重要的工具,我希望有人已经添加它......

只需注意我是如何自动化的,直到一个参数可用:

sed -i "s/listen 443 ssl;/listen 443 ssl http2;/" /etc/nginx/sites-available/$domain.conf

仍然没有办法使用 certbot 启用 http2 吗? 有人有解决方法吗?

@KyleTryon我在上面给出了我的sed解决方法,但似乎仍然没有官方方法。 我无法理解。

@bendqh有人可能是你!

令人惊讶的是,仍然没有添加此功能。 :-)

@yw662 ,您有兴趣提交拉取请求吗?

这很容易解决,所以……你知道,只要我有时间。 我认为这是问题所在。 解决方法很简单,但更改脚本并不容易:-)。

为 2019 年加油。

0 0,12 * * * certbot renew --quiet
1 0,12 * * * sed -i "s/listen 443 ssl;/listen 443 ssl http2;/" /etc/nginx/sites-available/default
2 0,12 * * * sed -i "s/443 ssl ipv6only=on;/443 ssl http2 ipv6only=on;/" /etc/nginx/sites-available/default
3 0,12 * * * systemctl nginx reload

--http2似乎要容易得多...

@rowan-OzRunways 这不是https://github.com/certbot/certbot/issues/3646#issuecomment -323814774 对你有效吗? 只需手动附加http2一次,它不应该被触及renew

嗯,我以为它清除了。 它确实清除了一次,但那可能是certbot-auto谢谢我会检查的。

:+1: :+1: :+1: 碰撞
今天是我的生日,请添加这个谢谢

令人惊讶的是,有多少开发人员依赖于模棱两可的(自动)配置,而不是手动请求证书并根据他们的需要定制 Nginx 服务器块......

默认行为是关闭 http2
--http2 打开http2

这是一个坏主意,因为它会变成多年的在线复制粘贴教程,假设默认情况下不支持 HTTP/2,最终不可避免地会支持(然后是 HTTP/3)......如果有的话,反过来可能更有意义,通过标志禁用 HTTP/2 等。如果您依赖“愚蠢”配置自动化,则没有理由添加短暂相关的命令标志。

“解决方法”是手动请求证书:

certbot certonly --noninteractive --agree-tos --expand -m ${SSL_EMAIL} -d ${SITE_DOMAIN_ONE} -d ${SITE_DOMAIN_TWO} --webroot -w /var/www/html/

参考: https ://github.com/littlebizzy/slickstack/blob/master/ss-encrypt.txt

...然后使用自定义 Nginx 服务器块,例如:

server {
listen                 443 ssl http2;
listen                 [::]:443 ssl http2 ipv6only=on;
server_name            @DOMAIN;
    if ($http_host != "@DOMAIN") {
        return 301            $scheme://@DOMAIN$request_uri;
    }

参考: https ://github.com/littlebizzy/slickstack/blob/master/nginx/default-single-site.txt
参考: https ://github.com/littlebizzy/slickstack/blob/master/nginx/nginx-conf.txt

我们的 nginx 插件目前不支持启用 HTTP/2 支持,即使带有--http2标志也是如此。 这就是问题所跟踪的内容。

至于我们的默认行为,我们过去对--redirect之类的标志所做的是最初实现隐藏在标志后面的支持并鼓励我们的用户尝试它。 在经过充分测试后,我们可以考虑将其设为所有用户的默认行为,并确保这样做不会破坏(m)任何配置。

@jessuppi

令人惊讶的是,有多少开发人员依赖于模棱两可的(自动)配置,而不是手动请求证书并根据他们的需要定制 Nginx 服务器块......

你完全没有抓住重点。 当然,您可以自己做,但 certbot 客户端附带的功能需要改进。 您是否应该让 certbot 配置您的网络服务器完全超出了此问题的范围。

这个问题现在有4 年了。 我认为人们并不在乎他们是否必须使用--http2--no-http2标志,只要 certbot 自动为我们做了。

@bmw与过去 4 年中已经实施的所有重大变化相比,为什么应该在相对简单的事情上出现如此长的延迟? 当然,certbot 团队必须同意对 HTTP2 的较新版本的适当支持也很重要......

实际上有一个公开的 PR: https ://github.com/certbot/certbot/pull/7113

@bmw为什么在应该相对简单的事情上会有这么长时间的延迟

因为有很多 Certbot 问题,而且我们是一个小团队,所以我们必须优先处理事情。 我同意这很有价值,我们只是还没有达到它。

我将为这个问题添加一个优先级标签,以便我们在未来寻找新项目时更容易看到它。

你好呀。 我假设即使为 certbot 提供了支持http2 NGINX 配置的修复程序,这也无法解决 Boundler 仍然无法针对 HTTP/2 连接执行 webroot 检查的事实,对吧? 参看。 这个链接

这是关于未加密端口上的 http2。 这不是一个真正的问题。 我们只想将 http2 选项添加到端口 443 上的listen指令中并进行加密。

@cperrin88当然可以,但要记住的是, NGINX 无法执行 HTTP/1.1 -> HTTP/2 h2c 协议升级,因此,当使用 webroot 验证时,使用 let'sencrypt 执行的服务器 Boundler挑战交换,只能假设服务器说 HTTP/1.1 并抱怨错误:“服务器正在通过 HTTP 说 HTTP/2”,否则。

因此,当此问题的补丁生效时,请记住这一点 恕我直言 :)

无论如何,此更改不应将 http2 添加到未加密的端口。 但我们应该牢记这一点。

此页面是否有帮助?
0 / 5 - 0 等级