Apache 2.4.7 配置文件中的多個 DH/ECDH 參數
我在 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
- DH 參數 - 這僅適用於您計劃使用
DHE_RSA_<insert cipher here>
. 如果您不打算使用這些密碼中的任何一個,那麼這一點就沒有實際意義- 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