如何在 Apache 2.4.18 Server 中实现没有 ssl 的 http2

Posted

技术标签:

【中文标题】如何在 Apache 2.4.18 Server 中实现没有 ssl 的 http2【英文标题】:How to implement http2 without ssl in Apache 2.4.18 Server 【发布时间】:2016-06-30 12:07:34 【问题描述】:

我创建了一个使用 HTTP/2 协议的网站,该网站在 Apache 2.4.18 HTTP 服务器上运行。目前我已经使网站启用了 SSL,因为我在某处读到 HTTP/2 默认需要 SSL。我可能不需要确保我的网站安全,所以我不想花钱购买 SSL 证书。

有没有办法在不使用 SSL 配置的情况下实现 HTTP2 协议? 如果是,我应该在 httpd.conf 文件中写入哪些配置设置? 我是否需要更改浏览器的任何属性/设置 - Chrome/Firefox 等?

【问题讨论】:

【参考方案1】:

据我所知,如果您通过 HTTP 而不是 HTTPS 连接到网站,大多数网络浏览器都不会使用 HTTP2 协议。

有很多地方可以免费获得SSL证书,例如StartSSL、Universal SSL、Let’s Encrypt(见here)等。该证书可能不是很长一段时间,并且没有一些额外的属性,如时间戳(如here),但它仍然可以使用。您仍然可以免费使用该证书。

您可以阅读here,例如Apache HTTP Server 中HTTP2 的配置说明。最重要的是使用最新版本的OpenSSL 和最新版本的 Apache Server。我建议您阅读有关 HTTP2 的 the article,查看 the video 和相应的幻灯片 here,了解使 TLS 更快并通过 the checklist。

【讨论】:

为什么:“在您的服务器上禁用 TLS 压缩。”? TLS 压缩有什么问题? @Geremia:有很多原因。您可以找到here 和here 中最重要的描述之一。 谢谢。我试图弄清楚为什么在我使用this 配置我的 Apache SSL 设置后,我托管的 wiki 页面不再使用 HTTP/2。 不客气!首先,重要的是要了解 Apache 和 OpenSSL 的版本以及您使用的操作系统以及 TLS 的配置方式。你有服务器在线吗?它的网址是哪个? 我在 Linux 上使用 Apache 2.4.18 和 OpenSSL 1.0.2g。我是否需要 mod_http2,即使 Apache 2.4.18 应该内置 HTTP/2?我的 TLS 配置在 ssllabs.com 上获得 A+ 评级,这是我在 this 的帮助下配置的。我可以将Protocols h2 http/1.1 放入httpd.conf 并运行apachectl restart 而不会抱怨。那么,当我访问该站点时,为什么 Curl、Firefox 或 Chrome 不使用 HTTP/2?

以上是关于如何在 Apache 2.4.18 Server 中实现没有 ssl 的 http2的主要内容,如果未能解决你的问题,请参考以下文章

源码安装Apache http server

WAMPSERVER 403 禁止 Apache 2.4.18

Ubuntu 16.04 - Apache 2.4.18 - 请求 URI 太长

Centos7 Apache 2.4.18编译安装

编译安装Apache(httpd-2.4.18)

WAMP : Forbidden 您无权访问此服务器上的 /。 Apache/2.4.18 (Win64) PHP/5.6.19