Статус: Участник
Группы: Участники
Зарегистрирован: 17.05.2013(UTC) Сообщений: 13 Откуда: Москва
|
Здравствуйте! В iOS-фреймворке есть панель управления, где можно скачать и установить корневой сертификат CA. В андроиде такой панели нет, поэтому приходится использовать GostCertificateRequest.getEncodedRootCert(httpAddress). При запросе по HTTP (httpAddress = "http://www.cryptopro.ru/certsrv/") корневой сертификат запрашивается нормально, но в случае HTTPS (httpAddress = "https://cryptopro.ru:5555/ui") выбрасывается исключение java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. (org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:401)). Как указать GostCertificateRequest доверять всем сертификатам, как это делается в панели для iOS? Там при удалении всех ключей по HTTPS нормально устанавливается корневой сертификат. Можно ли здесь как-то применить настройку как в JTLS_samples / ApacheHttpClient4XExample.java : SSLSocketFactory socketFactory = allowAllHostnameVerifier ? new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) : new SSLSocketFactory(sslContext); Или нужен какой-то клиентский сертификат? Все примеры в samples.jar только для HTTP и "http://www.cryptopro.ru/certsrv/" Отредактировано пользователем 20 ноября 2013 г. 12:46:40(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. Попробуйте с помощью System.setProperty задать trust store.
System.setProperty("javax.net.ssl.trustStoreProvider", "JCSP"); System.setProperty("javax.net.ssl.trustStoreType", "CertStore"); System.setProperty("javax.net.ssl.trustStore", "путь_к_хранилищу"); System.setProperty("javax.net.ssl.trustStorePassword", "пароль");
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.05.2013(UTC) Сообщений: 13 Откуда: Москва
|
А что при этом должно быть в trust store? Или оно просто должно быть создано и указано в параметрах? Мне надо взять корневой сертификат с CPCA, про который до этого ничего не было известно, и установить его в хранилище. При это отпечаток может быть сверен по телефону. В trust store ничего не может быть относящегося к этому CA. Отредактировано пользователем 20 ноября 2013 г. 12:58:27(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Попробуйте записать с помощью CertStore, находящегося в JCP (см. как работать с CertStore в progguide.html в дистрибутиве JCP). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.05.2013(UTC) Сообщений: 13 Откуда: Москва
|
Повторяю вопрос.
Как взять корневой сертификат по HTTPS с CA, О КОТОРОМ ДО СИХ ПОР НИЧЕГО НЕ БЫЛО ИЗВЕСТНО?
trust store не выход - у меня нечем проверить сертификат этого CA, а без этого HTTPS-соединение не устанавливается. Как в параметрах соединения, на котором работает GostCertificateRequest.getEncodedRootCert, задать доверие всем сертификатам?
Корневой сертификат сверяется по отпечатку, так же как в панели под iOS.
КАК ВЗЯТЬ КОРНЕВОЙ СЕРТИФИКАТ ПО HTTPS ???????????????? По HTTP стягивается без проблем
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Автор: albertaino Повторяю вопрос.
Как взять корневой сертификат по HTTPS с CA, О КОТОРОМ ДО СИХ ПОР НИЧЕГО НЕ БЫЛО ИЗВЕСТНО?
trust store не выход - у меня нечем проверить сертификат этого CA, а без этого HTTPS-соединение не устанавливается. Как в параметрах соединения, на котором работает GostCertificateRequest.getEncodedRootCert, задать доверие всем сертификатам?
Корневой сертификат сверяется по отпечатку, так же как в панели под iOS.
КАК ВЗЯТЬ КОРНЕВОЙ СЕРТИФИКАТ ПО HTTPS ???????????????? По HTTP стягивается без проблем Хранилище доверенных сертификатов должно быть, как минимум - корневой сертификат для связи с тем же CA. Если совсем нет корневых, то берите по http. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.05.2013(UTC) Сообщений: 13 Откуда: Москва
|
Спасибо за ответы, но проблему они не решают.
Если бы все было как вы говорите, то у меня не получилось бы следующее:
1) В панели КриптоПро под iOS делаю "Удалить ключи и сертификаты" 2) Ввожу адрес CA (АДРЕС НАЧИНАЕТСЯ С HTTPS://). CA находится в нашей сети, никаких его корневых нет в trust store 3) Нажимаю "Установить корневой сертификат" - сертификат появляется в файле root.sto.
Каким образом проверяется сертификат CA в нашей сети? В trust store не помещался его корневой. Но панель управления его берет по HTTPS-соединению и устанавливает в root.sto.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.05.2013(UTC) Сообщений: 13 Откуда: Москва
|
Еще вопрос по этой же теме.
Запускаю панель управления под iOS, устанавливаю корневой сертификат, беру оттуда файл root.sto, подкладываю его в Андроид (cprocsp/users/stores/root.sto), запускаю в программе TLS-сессию, сертификат сервера (подписанный тем CA что в root.sto) проверяется, в результате
Error 0x800b0110 (CERT_E_WRONG_USAGE) returned by CertVerifyCertificateChainPolicy!
Как лечить? добавить еще OID здесь:
LPSTR rgszUsages[] = { szOID_PKIX_KP_SERVER_AUTH, szOID_SERVER_GATED_CRYPTO, szOID_SGC_NETSCAPE };
или добавить флаги сюда:
DWORD dwCertFlags = 0;
HTTPSPolicyCallbackData polHttps;
polHttps.fdwChecks = dwCertFlags;
if(!CertVerifyCertificateChainPolicy( CERT_CHAIN_POLICY_SSL, pChainContext, &PolicyPara, &PolicyStatus)) ?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Автор: albertaino Спасибо за ответы, но проблему они не решают.
Если бы все было как вы говорите, то у меня не получилось бы следующее:
1) В панели КриптоПро под iOS делаю "Удалить ключи и сертификаты" 2) Ввожу адрес CA (АДРЕС НАЧИНАЕТСЯ С HTTPS://). CA находится в нашей сети, никаких его корневых нет в trust store 3) Нажимаю "Установить корневой сертификат" - сертификат появляется в файле root.sto.
Каким образом проверяется сертификат CA в нашей сети? В trust store не помещался его корневой. Но панель управления его берет по HTTPS-соединению и устанавливает в root.sto. Внешний java интерфейс не позволяет осуществить подключение по https без доверенных корневых сертификатов. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close