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