Наш сервер MySQL настроен на прием только соединения с SSL-шифром DHE-RSA-AES256-GCM-SHA384.
Я использую java mysql-connector-java (8.0.15) и java 8 (openjdk версия "1.8.0_191")
Среда выполнения OpenJDK (сборка 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
Когда я перечисляю доступные шифры с помощью приведенной ниже программы, я получаю
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 шифр в наличии.
Ниже приведена программа для перечисления доступных шифров
https://confluence.atlassian.com/stashkb/files/679609085/679772359/1/1414093373406/Ciphers.java
Но когда я включаю режим отладки на ssl, я получаю
Игнорирование неподдерживаемого набора шифров: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384.
и с сообщением ниже
состояние предстоящего рукопожатия: server_hello [2]
*** ClientHello, TLSv1.1
RandomCookie: GMT: 1535642319 байт = {168, 0, 213, 212, 68, 19, 189, 131, 12, 147, 76, 108, 65, 77, 56, 170, 35, 147, 119, 196, 102, 161, 241, 133, 49, 97, 153, 200}
Идентификатор сессии: {}
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Методы сжатия: {0}
Здесь клиент начинает связь через TLSv1.1, когда сервер использует TLSv1.2
Я также заметил, что ExportControlled.java (пакет com.mysql.cj.protocol;) создает SSLContext как (строка 563)
try{
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(kms, tms.toArray(new TrustManager[tms.size()]), null);
return sslContext;
}
Пожалуйста, помогите мне понять, почему доступный шифр игнорируется и что я должен сделать, чтобы подключиться к серверу