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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline edwpotapoff  
#1 Оставлено : 30 июля 2014 г. 11:56:15(UTC)
edwpotapoff

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

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

Здравствуйте!

Помогите разобраться!

Прислали сертификат для двусторонней аутентификации. Каталог содержащий сертификат и закрытые ключи скопировал на флешку. Через КриптоПро CSP установил сертификат следующим способом.
КриптоПро CSP -> Посмотреть сертификаты в контейнере -> Обзор -> Дисковод G - диск с флешкой с отображением длинного имени контейнера содержащего 16-тицеричные коды -> Далее -> Установить

После этог присланный урл https://test.ru открылся в браузере.

Теперь примено то же самое пытаюсь повторить с jcp-2.0.37538. Установил jcp и jtls c лицензиями, снял экспортные ограничения в jre, тест java -cp samples.jar ComLine.CheckConf показал все ок. Теперь через ControlPane устанавливаю присланный сертификат: Keys and sertificat stores -> FloppyStore -> выбираю единственное имя контейнера содержащего 16-тицеричные коды -> Copy -> выбираю HDImageStore -> задаю имя "store", пароль "123456". После этого контейнер "store" можно открыть и увидеть сертификат и ключ. Если посмотреть сертификат и посмотреть путь, то отобразится иерархия с корневым сертификатом.

Далее пытаюсь открыть урл в коде:

System.setProperty("javax.net.ssl.trustStoreType", "HDImageStore");
// Путь совпадаетс с ControlPane -> Hardware -> Path to HDImage store
System.setProperty("javax.net.ssl.trustStore", "C:/Users/User/AppData/Local/Crypto Pro");
System.setProperty("javax.net.ssl.trustStoreAlias", "store");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
System.setProperty("javax.net.ssl.supportGVO", "true");

URL url = new URL("https://test.ru");
InputStream openStream = url.openStream();
openStream.close();

openStream вываливается с исключением: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Что делаю не так?
Online Евгений Афанасьев  
#2 Оставлено : 30 июля 2014 г. 14:41:21(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
Не задан trusted store. trustStore - путь к файлу, а не папка. trustStoreAlias не нужен.
Offline edwpotapoff  
#3 Оставлено : 30 июля 2014 г. 15:21:51(UTC)
edwpotapoff

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

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

Ок. Создал хранилище сертификатов c:\store с паролем 123456. Скопировал туда сертификат и корневой сертификат. Построил дерево.

Новые параметры задал так:

System.setProperty("javax.net.ssl.supportGVO", "true");

System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");

System.setProperty("javax.net.ssl.trustStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.trustStore", "C:\store");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");

Открытие урл вылетает с ошибкой: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty


Online Евгений Афанасьев  
#4 Оставлено : 30 июля 2014 г. 18:33:34(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Попробуйте как-то так:

Код:

private static void printContent(HttpsURLConnection conn){

        if(conn != null) {

            try {

                BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream()) );
                String input;

                while ((input = br.readLine()) != null) {
                    System.out.println(input);
                }

                br.close();

            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

    public static void main(String[] args) throws Exception {

        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");

        // https://tlsgost-2001auth.cryptopro.ru/index.html - с двухсторонней аутентификацией
        // https://tlsgost-2001.cryptopro.ru/index.html  - с односторонней аутентификацией

        System.setProperty("javax.net.ssl.trustStoreType", "CertStore");
        System.setProperty("javax.net.ssl.trustStore", "<path_to_trust_store>"); // Содержит корневой сертификат https://tlsgost-2001auth.cryptopro.ru/index.html (Тестовый УЦ)
        System.setProperty("javax.net.ssl.trustStorePassword", "<trust_store_password>");

        // При двухстороннней аутентификации (сертификат клиента выпущен в Тестовом УЦ)
        System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
        System.setProperty("javax.net.ssl.keyStorePassword", "<key_password>");

        URL url = new URL("https://tlsgost-2001auth.cryptopro.ru/index.html");
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

        conn.connect();
        printContent(conn);
        conn.disconnect();
        
}

Отредактировано пользователем 30 июля 2014 г. 21:03:57(UTC)  | Причина: Не указана

Offline edwpotapoff  
#5 Оставлено : 31 июля 2014 г. 10:05:16(UTC)
edwpotapoff

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

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

Вылетатет с тем же исключением:

31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore is :
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore type is : HDImageStore
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore provider is :
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: init key store
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: defaultStoreProvider =
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO:
31.07.2014 9:53:59 ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0 37538
31.07.2014 9:53:59 ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: init key manager of type GostX509
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore is: C:
osreestr
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore type is : CertStore
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore provider is :
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: init trust store
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: init trust manager of type GostX509
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: init context...
31.07.2014 9:53:59 ru.CryptoPro.ssl.SSLContextImpl d
INFO: Context initiated.
31.07.2014 9:53:59 test.TestWS testService
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at ru.CryptoPro.ssl.B.a(Unknown Source)
at ru.CryptoPro.ssl.an.a(Unknown Source)
at ru.CryptoPro.ssl.an.a(Unknown Source)
at ru.CryptoPro.ssl.an.a(Unknown Source)
at ru.CryptoPro.ssl.an.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
at java.net.URL.openStream(URL.java:1010)
Offline edwpotapoff  
#6 Оставлено : 5 августа 2014 г. 10:41:39(UTC)
edwpotapoff

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

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

На JDK 6, 7 одинаковый результат. На 32-х, 64-х разрядной Windows тоже. Что не так?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.