我正在迁移到Tomcat 7,并认为现在是审核我用于SSL连接的密码的好时机。我意识到我在大约5年前设置了这些,从那时起就没想过它们。
我的列表是否缺少任何重要的密码?它包括我不应该包括的任何内容吗?
我的网络应用程序是安全性很重要的应用程序,因此首选谨慎。国际用户也需要支持IE8(但不是朝鲜)。
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
答案 0 :(得分:3)
简短版本:
更长的解释:
支持的密码套件从JVM主要版本到主要版本以及供应商之间不等。检查JVM文档以获取支持的密码套件列表,或者使用这些行中的内容列出它们。
package org.apache.markt;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import java.util.Set;
import javax.crypto.Cipher;
import javax.net.ssl.SSLServerSocketFactory;
public class CryptoInfo {
public static void main(String[] args) {
try {
Set<String> algorithms = Security.getAlgorithms("Cipher");
for(String algorithm: algorithms) {
int max;
max = Cipher.getMaxAllowedKeyLength(algorithm);
System.out.printf("%-22s: %dbit%n", algorithm,
Integer.valueOf(max));
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
SSLServerSocketFactory f =
(SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
String[] cs = f.getSupportedCipherSuites();
for (String c : cs) {
System.out.println(c);
}
}
}
您可能不希望任何KRB5密码套件删除它们。 您还可以删除TLS_EMPTY_RENEGOTIATION_INFO_SCSV(用于指示是否支持安全重新协商的虚拟密码套件)(如果存在)。 删除任何提及NULL,anon,export或DES不安全的内容。 RC4有一些问题,所以你可能也想删除它们。 IE8不支持ECDH,所以删除它们。 XP上的IE8不支持ECDHE,所以你可能想放弃它们。
除了以上列表外: TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
你应该考虑从列表中删除3DES密码。问题是XP上的IE8不支持AES(Vista上的IE8确实如此)。所以你可能无法做到这一点。
您可能会发现这些参考资料很有用:
http://www.g-sec.lu/sslharden/SSL_comp_report2011.pdf
https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.3.pdf