Apache 2.4.7 配置文件中的多个 DH/ECDH 参数

hey*_*ete 6 openssl apache-httpd

我在 Ubuntu 14.04(“Trusty”)服务器上运行 Apache 2.4.7。Ubuntu 特定的包标识符是“2.4.7-1ubuntu4.1”。

如果没有明确指定 DH/ECDH 参数(见下文),Apache 使用来自RFC 3526的标准 DH 参数进行离散对数 DH。参数的长度与RSA公钥的长度匹配(例如2048位RSA密钥得到2048位DH参数,4096位RSA密钥得到4096位DH参数等)。

无论 RSA 或 ECDSA 公钥的大小如何,似乎只有 NIST P-256 cuve 用于 ECDH。

Apache文档指出,除了网站的SSL证书,可以手动将引用的文件中指定DH或ECDH参数SSLCertificateFile在站点的配置文件指令。

文档中相关条目的确切文本是:

其他可选元素是 DH 参数和/或临时密钥的 EC 曲线名称,分别由openssl dhparam和生成openssl ecparam(在 2.4.7 或更高版本中支持)以及最终实体证书的私钥。

但是,Apache 似乎只读取以这种方式声明的第一个 DH 和第一个 ECDH 参数。忽略该文件中声明的其他参数集。

是否可以声明多组参数,以便客户可以选择将哪一组用于 DH/ECDH?

具体来说,我想为 ECDH 声明多个可接受的椭圆曲线。

例如,secp256r1出于兼容性原因,我希望有可用的,但也提供secp384r1secp521r1支持此类曲线的客户。

此外,为旧客户端提供 1024 位 DH 参数会很好,但为支持更长质数的新客户端提供 2048 位或更高的参数。

是否可以声明多组 DH 和 ECDH 参数而我只是遗漏了一些东西,或者是否只能分别明确声明一组 DH 和 ECDH 参数?

lil*_*son 3

对于非 EC DH 没有办法做到这一点。

对于 ECDH:

SSLOpenSSLConfCmd ECDHParameters prime256v1
SSLOpenSSLConfCmd Curves brainpoolP512r1:secp521r1:brainpoolP384r1:secp384r1:brainpoolP256r1:prime256v1
Run Code Online (Sandbox Code Playgroud)