Nel mio codice, utilizzo API JSSE6 per specificare un elenco di suite di crittografia abilitate. Volevo solo consentire crittografia a 168 bit o superiore, di seguito è una parte del mio codice:
/** 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);
Ma quando provo la mia app con uno strumento di scansione SSL, dicono che il mio server consente le suite di crittografia a 96 bit?
Quindi utilizzo Wireshark per acquisire pacchetti del processo di handshake SSL, ho trovato che nel messaggio Client Hello, c'è una suite di crittografia che non è inclusa nell'elenco delle suite di crittografia abilitate. La suite di crittografia è
ssl2_des_192_ede3_cbc_with_md5
Come può questa suite di cifratura apparire nel messaggio ciao del cliente?