如何在 Apache2 中启用 TLSv1.3?

如何在 Apache2 中启用 TLSv1.3?

我正在运行 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。

答案1

Debian Buster = 支持 TLSv1.3

在 Debian Buster(目前正在测试中)中,已经支持 TLSv1.3。

以下信息的日期为:

# date -I

2019-02-24


阿帕奇2版本:

# apache2 -v

服务器版本:Apache/2.4.38(Debian)
服务器搭建: 2019-01-31时间20:54:05


在哪里启用

全球范围内:

/etc/apache2/mods-enabled/ssl.conf

本地于:

您的虚拟主机位于:

/etc/apache2/sites-enabled/

如何启用

截至目前,TLSv1.1 已最终被弃用。因此,您只需要 TLSv1.2 和 TLSv1.3。

为此,请将这一行放入上述文件中:

SSLProtocol -all +TLSv1.3 +TLSv1.2

密码套件

密码套件现在分为 2 类,即SSL(TLSv1.3 以下)和TLSv1.3,您可能想使用自己的一组密码,仅以此为例:

SSLCipherSuite    TLSv1.3   TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
SSLCipherSuite    SSL       ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256

曲线

最后有一个重要提示:

您可以/应该启用一条新曲线:X25519

您可以像这样执行此操作,同样只是示例:

SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1

SSLLabs 上的域测试示例

实验性:此服务器支持 TLS 1.3 (RFC 8446)。

已启用 TLSv1.3

答案2

Apache2 版本 2.4.36 和 OpenSSL 1.1.1 现在支持 TLSv1.3来源

答案3

Apache 2.4 尚不支持 TLSv1.3。

当 OpenSSL 支持时(请参阅此处的信息),Apache 2.4应该也有。

答案4

事实证明,更新到 OpenSSL 1.1.1 还不够。阿帕奇必须是改变了以及。那个变化是向后移植至版本 2.4.29。因此,从周一开始2.4.29-1ubuntu4.12,Ubuntu 18.04 LTS 现在支持 TLS 1.3。这就是原贴者提到的配置。

由于 Stack Exchange 最近弃用了 TLS 1.0,TLS 版本、密码套件和曲线仍然是一个热门争论显示测试ssl.sh3.0 对 Apache 2.4.29 和 OpenSSL 1.1.1 的默认设置非常满意。因此,您应该仔细检查是否无意中禁用了曲线 X448 或 TLS 1.3 等新技术。例如,如果您使用SSLProtocol -all,您将禁用所有即将推出的协议版本。例如,如果您使用SSLOpenSSLConfCmd Curves,则将禁用所有即将到来的曲线。

因此,我不确定调整这些默认值一次然后忘记它们是否是一个好主意。相反,对于那些喜欢更改默认设置、寻找维护配置的人,我使用了 Mozilla发电机作为起点。在今天结束时,明天请仔细检查,并且由于已经提到的配置曲线的方法,我选择了SSL_Conf_Cmd完整的API:

SSLEngine on
#SSLOpenSSLConfCmd MinProtocol TLSv1 # commented because current default in Ubuntu 18.04 LTS
SSLOpenSSLConfCmd Ciphersuites TLS_AES_128_GCM_SHA256 # if you have the computing resources, consider not to tweak this
SSLOpenSSLConfCmd CipherString ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-SHA
SSLOpenSSLConfCmd Curves X25519:secp256r1:secp384r1 # if you have the computing resources, consider not to tweak this
SSLOpenSSLConfCmd Options ServerPreference,-SessionTicket

如果您选择基于双 ECDSA+RSA 的证书安装,例如来自 Sectigo 的 ECC 和来自 RapidSSL 的 RSA,则满足上述要求安全等级3,即使与非常老的客户端仍然向后兼容。

相关内容