En mi código, uso JSSE6 API para especificar una lista de suites de cifrado habilitadas. Mi objetivo era permitir solo 168 bits o más conjuntos de cifrado de cifrado, a continuación es parte de mi código:
/** List of 168 bits encryption or higher cipher suites */
private static final String[] ENABLED_CIPHER_SUITES_168 = {
"TLS_RSA_WITH_AES_256_CBC_SHA",
"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",
"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",
"TLS_DHE_DSS_WITH_AES_256_CBC_SHA",
"SSL_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
"TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
"SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA",
"SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA",
"TLS_EMPTY_RENEGOTIATION_INFO_SCSV",
"TLS_KRB5_WITH_3DES_EDE_CBC_SHA",
"TLS_KRB5_WITH_3DES_EDE_CBC_MD5",
"SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA",
"NETSCAPE_RSA_FIPS_WITH_3DES_EDE_CBC_SHA",
"SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA",
};
// return a list of cipher suites which match both array
String[] list = matchStringArrays(ENABLED_CIPHER_SUITES_168, ((SSLSocket)socket).getSupportedCipherSuites());
// Set a list of enabled cipher suites
((SSLSocket)socket).setEnabledCipherSuites(list);
¿Pero cuando pruebo mi aplicación con alguna herramienta de escáner SSL, dicen que mi servidor permite conjuntos de cifrado de cifrado de 96 bits?
Luego utilizo Wireshark para capturar paquetes del proceso de intercambio de SSL, encontré que en el mensaje de saludo del cliente, hay un conjunto de cifrado que no está en mi lista de conjuntos de cifrado habilitados. La suite de cifrado es
ssl2_des_192_ede3_cbc_with_md5
¿Cómo puede aparecer este conjunto de cifrado en el mensaje de saludo del cliente?