HTTP2,apache2,带有 certbot

Posted

技术标签:

【中文标题】HTTP2,apache2,带有 certbot【英文标题】:HTTP2, apache2, with certbot 【发布时间】:2017-07-22 05:23:48 【问题描述】:

我正在尝试使用 apache2 和 certbot-auto 设置 HTTP2,事实是我有另一台使用 HTTP2+ Apache2 + 使用letsencrypt 证书的工作服务器,HTTP2 在这台服务器上运行良好。我在两台服务器上都有这个:

SSLHonorCipherOrder     on

SSLProtocol             all -SSLv3
SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

SSLOpenSSLConfCmd DHParameters "/etc/ssl/private/dhparams_4096.pem"

我尝试使用以下命令重新生成两个 dhparams 密钥:

openssl dhparam -out /etc/ssl/private/dhparams_4096.pem 4096

重启apache,同样的问题,服务器1在工作,服务器2没有。

在 ssllabs.com 我有 chrome、FF、...:

Server negotiated HTTP/2 with blacklisted suite

如果我测试:

openssl s_client -host 127.0.0.1 -port 443

在我的工作服务器上:

Server Temp Key: ECDH, P-256, 256 bits
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256

在不工作的服务器上:

Server Temp Key: DH, 4096 bits
Cipher    : DHE-RSA-AES128-GCM-SHA256

我知道它应该是一个 ECDH 密钥才能工作,但我不知道为什么它不能工作,因为所有服务器都具有完全相同的配置!

我总是使用:certbot-auto --apache -d mydomain.com 来生成证书,我在第一台服务器上使用 HTTP2,而不是在第二台服务器上(错误安全性不足,并回退到 http1.1)

你能帮帮我吗?我想要一个具有 apache2 和 SSL/HTTP2 的工作配置,我不需要非常旧的浏览器兼容性。或者,如果您知道一个非常好的工作教程来做到这一点。

Apache 2.4.25 并在两台服务器上打开 ssl 1.0.2k。

【问题讨论】:

我做了一些测试:ECDHE-ECDSA-AES128-GCM-SHA256 在配置中,但服务器不接受它,如果我只输入这个密码,我会握手失败。我不知道如何安装 ECDHE-ECDSA-AES128-GCM-SHA256 密码,apache? openssl ? With : openssl ciphers -v 'ALL:eNULL' ECDHE-RSA-AES128-GCM-SHA256 在列表中。为什么 apache 不接受它? 我们需要查看服务器证书。命令openssl s_client -host 127.0.0.1 -port 443 可能不正确。 "HIGH:!kRSA:!aNULL:!MD5:!RC4" 的密码套件字符串应该适合您。它将通过 SSL Labs 审核,并且 ChaCha20/Poly1305 将优先用于 TLS 1.3(当它可用时)。另请参阅 OpenSSL 问题跟踪器上的 Issue 963: TLS 1.3 support。 Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops? 【参考方案1】:

我刚刚(重新)出现了具有完全相同编译标志的 apache 2.4.25,它现在可以工作了!也许一些密码库是在较新的 openssl 之前编译的。我在gentoo上。

【讨论】:

以上是关于HTTP2,apache2,带有 certbot的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apache 2.4.23 在 CentOs Server 中实现 http2 (h2)?

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

带有 CURL 的 HTTP2 给出“不支持的协议”

如何将网站升级到 http2 php 应用程序

“文件上传”功能在带有 HTTP2 采样器的 Jmeter 中不起作用 [使用所有版本的 JMETER]

Apache HTTP2 h2c 模式无法正常工作