Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Виктор 75  
#1 Оставлено : 28 мая 2025 г. 19:32:43(UTC)
Виктор 75

Статус: Участник

Группы: Участники
Зарегистрирован: 02.12.2024(UTC)
Сообщений: 19
Российская Федерация

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 4 раз в 4 постах
Добрый день!
При создании приложения с использованием КриптоПРО TLS столкнулись с ошибкой Received fatal alert: handshake_failure.
Соединение с https://www.cryptopro.ru...mages/logo_csp_small.png (url из примера) устанавливается и видна цепочка сертификатов, но если пробуем подключиться к https://int.ebs.ru/vrf/ получаем ошибку Received fatal alert: handshake_failure.

Логи и реализацию кода прикрепляю
logs.txt (7kb) загружен 3 раз(а).
GostHttpClient.kt (2kb) загружен 2 раз(а).

Код:
fun startTLS(dataDir: String) {
        binding.button.setOnClickListener {
            val testUrl = "https://int.ebs.ru/vrf/"

            Thread {
                try {
                    val client = GostHttpClient(dataDir).createGostHttpClient()
                    val request = okhttp3.Request.Builder()
                        .url(testUrl)
                        .build()

                    val response = client.newCall(request).execute()

                    if (response.isSuccessful) {
                        Log.d("TLS", "TLS подключение успешно: ${response.code}")

                        // Получение информации о сертификате
                        val handshake = response.handshake
                        handshake?.peerCertificates?.forEachIndexed { index, cert ->
                            val x509Cert = cert as java.security.cert.X509Certificate
                            Log.d("TLS", "Сертификат [$index]:")
                            Log.d("TLS", "  Subject: ${x509Cert.subjectDN}")
                            Log.d("TLS", "  Issuer: ${x509Cert.issuerDN}")
                            Log.d("TLS", "  Serial Number: ${x509Cert.serialNumber}")
                            Log.d("TLS", "  Valid From: ${x509Cert.notBefore}")
                            Log.d("TLS", "  Valid To: ${x509Cert.notAfter}")
                        }

                    } else {
                        Log.d("TLS", "Ошибка подключения: ${response.code}")
                    }

                    response.close()

                } catch (e: Exception) {
                    Log.d("TLS", "Ошибка TLS-запроса: ${e.message}")
                    e.printStackTrace()
                }
            }.start()
        }
    }

Отредактировано пользователем 29 мая 2025 г. 10:17:37(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 29 мая 2025 г. 22:12:56(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,025
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 725 раз в 684 постах
Добрый день.
1. Соберите, пожалуйста, логи так:
https://docs.cryptopro.r...d/additional_information
включить: adb shell setprop log.tag.SSL VERBOSE
выключить: adb shell setprop log.tag.SSL INFO
2. Похоже на то, что ошибка сразу после ClientHello. Сайт поддерживает ГОСТ TLS?
При попытке подключения с помощью csptest по адресу подключение происходит с иностранной сюитой TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. cpSSL поддерживает только ГОСТ.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.