SSLHandshakeException: получено фатальное предупреждение: handshake_failure (игнорирует шифры) - PullRequest
0 голосов
/ 05 ноября 2019

Когда я использовал протокол SSL для передачи данных через FTP, все работало. В настоящее время я использую TLS с определенным шифром. Как я выяснил, Java 8 игнорирует некоторые шифры. А потом я добавил шифры в код

@Override
protected void _prepareDataSocket_(final Socket socket) throws IOException {
    if(socket instanceof SSLSocket) {
        String[] ciphers = {
                "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
                "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
                "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
                "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
        };
        ((SSLSocket) socket).setEnabledCipherSuites(ciphers);
        final SSLSession session = ((SSLSocket) _socket_).getSession();
        final SSLSessionContext context = session.getSessionContext();

Но теперь в режиме отладки, как и раньше, отображается ошибка, игнорирующая шифры. Также добавлена ​​ошибка:

Cipher Suites: [Unknown 0x2a:0x2a, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, Unknown 0xcc:0xa9, Unknown 0xcc:0xa8, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA] Compression Methods:  { 0 } Unsupported extension type_23130, data: Extension renegotiation_info, renegotiated_connection: <empty>

Подскажите пожалуйста, как правильно добавлять шифры в сокет, чтобы шифры больше не игнорировались. Я использую javax.net.ssl ​​

1 Ответ

0 голосов
/ 05 ноября 2019

Совершенно уверен, что ваша версия JDK не включает в себя набор шифров, который вам нужен. Вам нужно настроить такого провайдера jce, как Buoncycastle, тогда вы сможете их использовать.

...