Apache-Httpd

Apache 2.4.7 配置文件中的多個 DH/ECDH 參數

  • May 27, 2017

我在 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 參數等)。

似乎只有 NIST P-256 cuve 用於 ECDH,無論 RSA 或 ECDSA 公鑰的大小如何。

Apache 文件指出,除了站點的 SSL 證書之外,還可以在站點配置文件中的指令引用的文件中手動指定 DH 或 ECDH參數SSLCertificateFile

文件中相關條目的確切文本是:

其他可選元素是 DH 參數和/或臨時密鑰的 EC 曲線名稱,分別由openssl dhparam和生成openssl ecparam(在版本 2.4.7 或更高版本中支持),最後是最終實體證書的私鑰。

但是,Apache 似乎只讀取以這種方式聲明的第一個 DH 和第一個 ECDH 參數。該文件中聲明的其他參數集將被忽略。

是否可以聲明多組參數,以便客戶可以選擇哪一組用於 DH/ECDH?

具體來說,我想為 ECDH 聲明多個可接受的橢圓曲線。

secp256r1例如,出於兼容性的原因,我想提供可用的,但secp384r1也向secp521r1支持此類曲線的客戶提供。

此外,最好為舊客戶端提供 1024 位 DH 參數,但為支持更長素數的新客戶端提供 2048 位或更高參數。

是否可以聲明多組 DH 和 ECDH 參數而我只是遺漏了一些東西,還是只能分別顯式聲明一組 DH 和 ECDH 參數?

對於非 EC DH,沒有辦法做到這一點。

對於 ECDH:

SSLOpenSSLConfCmd ECDHParameters prime256v1
SSLOpenSSLConfCmd Curves brainpoolP512r1:secp521r1:brainpoolP384r1:secp384r1:brainpoolP256r1:prime256v1
  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 庫後,您可以通過在<VirtualHost *:443>容器中添加以下行來更新 EC 密碼:

SSLOpenSSLConfCmd Curves secp384r1

如果你想要不止一條曲線:

SSLOpenSSLConfCmd Curves secp384r1:secp521r1

然後碰撞服務:

service apache2 restart

引用自:https://unix.stackexchange.com/questions/181115