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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline siquell  
#1 Оставлено : 3 октября 2022 г. 23:50:50(UTC)
siquell

Статус: Новичок

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

Добрый день!

В мобильном приложении Android используется гост шифрование. Авторизация только на сервере.
Клиент okhttp.

Chromium Gost соединяется с сервером отлично и все работает хорошо.

В мобильном приложении запросы валятся в хаотичном порядке. То подключается успешно, то выдает ошибку.

Код.

Код:

fun initCryptoPro() {
    val init = CSPConfig.init(this)
    check(init == CSPConfig.CSP_INIT_OK) { "CSPConfig.init failed" }

    if (Security.getProvider(JCSP.PROVIDER_NAME) == null) Security.addProvider(JCSP())
    if (Security.getProvider(Provider.PROVIDER_NAME) == null) Security.addProvider(Provider())
    cpSSLConfig.setDefaultSSLProvider(JCSP.PROVIDER_NAME)
    if (Security.getProvider(RevCheck.PROVIDER_NAME) == null) Security.addProvider(RevCheck())

    //System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2")
    System.setProperty("https.protocols", "TLSv1.2")
    //System.setProperty("javax.net.debug", "ssl:handshake")
    System.setProperty("javax.net.debug", "all")

    System.setProperty("ru.CryptoPro.CAdES.validate_tsp", "false")
    System.setProperty("com.sun.security.crl.timeout", "5")
    System.setProperty("ru.CryptoPro.crl.read_timeout", "5")
    System.setProperty("com.sun.security.enableCRLDP", "true")
    System.setProperty("com.ibm.security.enableCRLDP", "true")
    System.setProperty("disable_default_context", "true")
    System.setProperty("ngate_set_jcsp_if_gost", "true")
    System.setProperty("ru.CryptoPro.key_agreement_validation", "false")

    System.setProperty("tls_prohibit_disabled_validation", "true")
}

fun test() {
    initCryptoPro()
    val data = getTrustManager(applicationInfo.dataDir)
    testConnection(this, data.first, data.second)
}

fun getClient(dir: String, timeout: Long): OkHttpClient {
    val sslInfo =  getTrustManager(dir)
    return OkHttpClient.Builder()
        .connectTimeout(timeout, TimeUnit.SECONDS)
        .followRedirects(true)
        .retryOnConnectionFailure(true)
        .sslSocketFactory(
            sslInfo.first.socketFactory,
            sslInfo.second
        )
        .connectionSpecs(
            listOf(
                ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
                    .tlsVersions("TLSv1.2")
                    .cipherSuites("TLS_CIPHER_2012", "TLS_CIPHER_2001")
                    .build()
            )
        )
        .build()
}

fun getTrustManager(dir: String): Pair<SSLContext, X509TrustManager>{
    val trustManagers = arrayOfNulls<TrustManager>(1)
    val path = dir + File.separator +
            BKSTrustStore.STORAGE_DIRECTORY + File.separator +
            BKSTrustStore.STORAGE_FILE_TRUST
    val sslContext = TLSContext.initClientSSL(
        Provider.PROVIDER_NAME,
        "GostTLSv1.2",
        BouncyCastleProvider.PROVIDER_NAME,
        BKSTrustStore.STORAGE_TYPE,
        FileInputStream(path),
        String(BKSTrustStore.STORAGE_PASSWORD),
        trustManagers
    )
    return Pair(sslContext, trustManagers[0] as X509TrustManager)
}

fun testConnection(activity: MainActivity, sslContext: SSLContext, trustManager: X509TrustManager) {
    //val request = Request.Builder().url("<some url>").build()
    getClient(activity.applicationInfo.dataDir, 60)
            .newCall(request)
            .enqueue(object : Callback {
                override fun onFailure(call: Call, e: IOException) {
                    //Log.e("@@@@@", "", e)
                }
                override fun onResponse(call: Call, response: Response) {
                    //Log .w("@@@@@", response.body?.string().orEmpty())
                }
    })
}



Лог.



Кто подскажет что делать?
Offline NikitinIA  
#2 Оставлено : 5 марта 2024 г. 14:52:50(UTC)
NikitinIA

Статус: Новичок

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

Удалось разобраться?

Можете прояснить, в чем была проблема?

Получаю аналогичную ошибку, не знаю, что делать дальше )
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.