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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline fileracc  
#1 Оставлено : 17 июля 2013 г. 17:00:57(UTC)
fileracc

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

Группы: Участники
Зарегистрирован: 17.07.2013(UTC)
Сообщений: 11

Добрый день.
Пытаюсь сделать GET запрос через TLS с использованием Apache HTTP Client.

Код такой:
Код:

Log.d(tag, "CryptoPro infrastructure initialization.");
final int cryptoProInitStatus = CSPConfig.initInAndroid(getApplication());
if (Security.getProvider(JCSP.PROVIDER_NAME) == null) {
    Security.addProvider(new JCSP());
}
if (Security.getProvider(ru.CryptoPro.ssl.Provider.PROVIDER_NAME) == null) {
    Security.addProvider(new ru.CryptoPro.ssl.Provider());
}
if (Security.getProvider(RevCheck.PROVIDER_NAME) == null) {
    Security.addProvider(new RevCheck());
}

// <...>

Security.setProperty("ssl.KeyManagerFactory.algorithm", ru.CryptoPro.ssl.Provider.KEYMANGER_ALG);
Security.setProperty("ssl.TrustManagerFactory.algorithm", ru.CryptoPro.ssl.Provider.KEYMANGER_ALG);
Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "ru.CryptoPro.ssl.SSLServerSocketFactoryImpl");

Log.d(tag, "Load trusted certificate store.");
final InputStream trustedCertificateStoreStream = getResources().openRawResource(R.raw.trusted_certificate_store);
final KeyStore certificateStore;
try {
    certificateStore = KeyStore.getInstance(JCSP.CERT_STORE_NAME, JCSP.PROVIDER_NAME);
} catch (Exception ex) {
    exception = ex;
    Log.e(tag, "Error when obtaining instance of KeyStore.", ex);
    return null;
}
try {
    certificateStore.load(trustedCertificateStoreStream, null);
} catch (Exception ex) {
    exception = ex;
    Log.e(tag, "Error when loading trusted certificate store.", ex);
    return null;
}

Log.d(tag, "Create SSLSocketFactory.");
final SSLSocketFactory sslSocketFactory;
try {
    sslSocketFactory = new SSLSocketFactory(ru.CryptoPro.ssl.Provider.ALGORITHM, null, null, certificateStore, null, null);
} catch (Exception ex) {
    exception = ex;
    Log.e(tag, "Error creating SSLSocketFactory.", ex);
    return null;
}


Получаю ошибку при создании SSLSocketFactory:
Код:
        java.security.ProviderException: JCP
        at ru.CryptoPro.ssl.SSLContextImpl.engineInit(Unknown Source)
        at javax.net.ssl.SSLContext.init(SSLContext.java:219)
        at org.apache.http.conn.ssl.SSLSocketFactory.<init>(SSLSocketFactory.java:193)
        at com.example.android.encryption.demo.activity.MainActivity$LoadTLSTestPageTask.doInBackground(MainActivity.java:131)
        at com.example.android.encryption.demo.activity.MainActivity$LoadTLSTestPageTask.doInBackground(MainActivity.java:92)
        at android.os.AsyncTask$2.call(AsyncTask.java:287)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
        at java.lang.Thread.run(Thread.java:856)
        Caused by: java.security.NoSuchProviderException: JCP
        at java.security.SecureRandom.getInstance(SecureRandom.java:189)
        ... 12 more


Подскажите, куда копать.
Offline Евгений Афанасьев  
#2 Оставлено : 17 июля 2013 г. 17:22:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Добрый день.

Отсутствует (см. ru.CryptoPro.ACSPClientApp.example.interfaces.ITLSData)
Код:

static {

        // Для проверки статуса сертификата.
        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");

        // Провайдер хеширования, подписи, шифрования по умолчанию.
        cpSSLConfig.setDefaultSSLProvider(JCSP.PROVIDER_NAME);
    }

Отредактировано пользователем 17 июля 2013 г. 17:22:43(UTC)  | Причина: Не указана

Offline fileracc  
#3 Оставлено : 17 июля 2013 г. 18:10:30(UTC)
fileracc

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

Группы: Участники
Зарегистрирован: 17.07.2013(UTC)
Сообщений: 11

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