在沒有 ECDHE 密鑰交換算法的情況下禁用 AES 密碼套件
目前,我們的平台中使用了以下密碼套件。
AES128-GCM-SHA256
AES128-SHA256
AES128-SHA
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
安全掃描後,團隊要求我們阻止以下靜態密碼套件。
AES128-GCM-SHA256
AES128-SHA256
AES128-SHA
通過更新 java.security 文件中的 tls.disabled 算法部分,我們已經通過底層 JDK(由我們的應用伺服器使用)阻止了上述密碼套件。
這反過來也阻塞了下面的密碼,因為上面的阻塞密碼套件用於下面密碼套件的密鑰交換/MAC 部分。
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-RSA-AES128-SHA
請告知是否有辦法只阻止 AES 而不用 AES 阻止 ECDHE。
您可能沒有意識到這一點,但 OpenSSL 用於歇斯底里葡萄乾標籤的密碼套件,其名稱未指定密鑰交換,實際上使用 RSA(又名普通 RSA)密鑰交換。這些 OpenSSL 名稱(請參閱第 1 節中的 man ciphers,或者可能是 1ssl 或類似名稱,在您的系統或網站上)實際上對應於這些標準名稱:
AES128-GCM-SHA256 TLS_RSA_WITH_AES_128_GCM_SHA256 AES128-SHA256 TLS_RSA_WITH_AES_128_CBC_SHA256 AES128-SHA TLS_RSA_WITH_AES_128_CBC_SHA
secprop 的語法
jdk.tls.disabledAlgorithms
只支持單個算法,不支持組合,更不用說像“RSA 而不是 ECDHE”這樣的複雜組合。但是,您可以使用 Java 使用的(全)名稱禁用 TLS 密碼套件,這是上面的標準名稱。因此,只需將這些名稱作為逗號分隔的條目放在 secprop 中。請注意,在 TLS1.3(在 Java 11 中實現)中,密碼套件不再選擇密鑰交換和身份驗證方法。但是,1.3 根本不再支持非 PFS 純 RSA 密鑰交換,而且由於這似乎是您的“團隊”試圖避免的,所以 1.3 的預設值應該對您有好處。