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

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

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

如果没有明确指定 DH/ECDH 参数(见下文),Apache 将使用以下标准 DH 参数:RFC 3526对于离散对数 DH。参数的长度与RSA公钥的长度相匹配(例如,2048位RSA密钥获取2048位DH参数,4096位RSA密钥获取4096位DH参数等)。

看来,无论 RSA 或 ECDSA 公钥的大小如何,ECDH 都仅使用 NIST P-256 cuve。

阿帕奇文档表示除了站点的 SSL 证书之外,还可以在SSLCertificateFile站点配置文件中的指令引用的文件中手动指定 DH 或 ECDH 参数。

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

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

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

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

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

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

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

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

答案1

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

对于 ECDH:

SSLOpenSSLConfCmd ECDHParameters prime256v1
SSLOpenSSLConfCmd Curves brainpoolP512r1:secp521r1:brainpoolP384r1:secp384r1:brainpoolP256r1:prime256v1

答案2

  1. DH 参数 - 这仅适用于您计划使用DHE_RSA_<insert cipher here>.如果您不打算使用任何这些密码,那么这一点就没有意义了
  2. EC 参数 - 你是必需的升级到 Apache 2.4.8 或更高版本有 OpenSSL 1.0.2 或更高版本。 Ubuntu 14.04.x 中都没有这两个版本。您需要执行以下操作:

    apt-add-repository ppa:ondrej/apache2 #corrected
    apt-get update
    apt-get upgrade openssl
    apt-get upgrade apache2
    

使用最新的 Apache2 和 OpenSSL 库后,您可以通过在容器中添加以下行来更新 EC 密码<VirtualHost *:443>

SSLOpenSSLConfCmd Curves secp384r1

如果您想要多于一条曲线:

SSLOpenSSLConfCmd Curves secp384r1:secp521r1

然后启动服务:

service apache2 restart

答案3

如果您使用的是 apache 2.4.7 和 OpenSSL 0.9.8a 或更高版本,则可以通过将 dhparam 文件附加到证书文件末尾来修改 DH 参数。

不知道 EC 参数...

相关内容