我正在运行 Apache2 版本:
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2018-04-25T11:38:24
我想启用 TLSv1.3,但如果我输入文件,我会在 Apache2 中收到以下SSLProtocol TLSv1.2 TLSv1.3
错误ssl.conf
:
# apachectl configtest
AH00526: Syntax error on line 79 of /etc/apache2/mods-enabled/ssl.conf:
SSLProtocol: Illegal protocol 'TLSv1.3'
Action 'configtest' failed.
The Apache error log may have more information.
是否可以在 Apache2 中启用 TLSv1.3(还)?
我知道 Nginx 可以做到,但这个问题针对的是 Apache2。
Debian Buster = 支持 TLSv1.3
在 Debian Buster(目前正在测试中)中,已经支持 TLSv1.3。
以下信息的日期为:
2019-02-24
Apache2版本:
服务器版本:Apache/ 2.4.38 (Debian)
服务器构建时间: 2019-01-31 T20:54:05
在哪里启用
全球范围内:
本地:
您的虚拟主机位于:
如何启用
迄今为止,TLSv1.1 最终已被弃用。因此,您只需要 TLSv1.2 和 TLSv1.3。
为此,请将此行放入上述文件中:
密码套件
密码套件现在分为 2 类,即
SSL
(低于 TLSv1.3)和TLSv1.3
,您可能想使用自己的一组密码,仅以此为例:曲线
最后的一个重要说明:
您可以/应该启用一条新曲线:X25519。
例如,您可以这样做,再次仅作为示例:
SSLLabs 上的示例域测试
使用 OpenSSL 1.1.1 Source的 Apache2 版本 2.4.36 现在支持 TLSv1.3 。
Apache 2.4 尚不支持 TLSv1.3。
当 OpenSSL 支持它时(参见这里的信息),Apache 2.4 也应该有它。
编者注
请注意,至少根据我的经验,使用 PPA 可能会破坏您的系统,至少会破坏未来的发行版升级。
如果你准备好冒险...
你可以使用这个 PPA,这个命令可以毫不费力地将它添加到你的系统中:
在撰写本文时,当前版本是:
该版本支持 TLSv1.3。
要为所有虚拟主机全局启用它,请找到您的
ssl.conf
并设置:然后重新启动 Apache2,它应该可以进行测试了,特别是在这些站点上:
https://www.ssllabs.com/ssltest/
https://www.htbridge.com/ssl/
我的示例结果 = 启用了 TLSv1.3
事实证明,对 OpenSSL 1.1.1 的更新还不够。Apache 也必须改变。该更改已向后移植到版本 2.4.29 。因此,从星期一开始使用2.4.29-1ubuntu4.12,Ubuntu 18.04 LTS 现在支持 TLS 1.3 开箱即用。那是原海报提到的配置。
正如最近在 Stack Exchange 上弃用 TLS 1.0 所显示的那样,TLS 版本、密码套件和曲线仍然是一个热门争论。testssl.sh 3.0 对 Apache 2.4.29 和 OpenSSL 1.1.1 的默认设置非常满意。因此,您应该仔细检查您是否无意中禁用了较新的技术,例如曲线 X448 或 TLS 1.3。例如,如果您使用
SSLProtocol -all
,您将禁用所有即将发布的协议版本。例如,如果您使用SSLOpenSSLConfCmd Curves
,您将禁用所有即将出现的曲线。因此,我不确定将这些默认值调整一次然后忘记它们是否是个好主意。相反,对于那些喜欢更改默认值、寻找维护配置的人,我使用 Mozilla生成器作为起点。在今天结束时——所以明天再检查一下——并且感谢已经提到的配置曲线的方法,我完全选择了SSL_Conf_Cmd API:
如果您使用基于 ECDSA+RSA 的双证书安装,例如 Sectigo 的 ECC 和 RapidSSL 的 RSA,则上述满足安全级别 3,即使与非常旧的客户端仍然向后兼容。