Статус: Новичок
Группы: Участники
Зарегистрирован: 20.02.2021(UTC) Сообщений: 4  Откуда: moscow
|
Добрый день. Вопрос 1 : Подскажите имеются ли какие учебные инструкции по работе с крипто-про, а точнее некое описание процессов, хаутушек,т .е. как начать как выполнить авторизацию с использование ГОСТ?
Вопрос 2: Существует ли справка, может есть примеры исходных кодов, как использую ваш продукт добиться поставленной задачи, а именно авторизация с использование ГОСТ?
Точнее мне необходимо с использованием языка JAVA (пока в учебных целях) осуществить двухстороннюю и одностороннюю авторизации с использование ГОСТ.
Прощу меня извинить, если это все есть на форуме в разделах: Общие вопросы или FAQ. В них я не нашел полезной информации по моим вопросам.
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,215  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 285 раз в 265 постах
|
Добрый день! как таковых "хаутушек" нет есть примеры в samples-sources.jar из состава дистрибутива. опишите более подробно что вам нужно. авторизация с помощью GOST TLS? или же использовать авторизацию с помощью плагина и java+jcp& |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.02.2021(UTC) Сообщений: 4  Откуда: moscow
|
Пока беру таймаут. ПОодумаю сам. Не нашел пункт удалить сообщение. Отредактировано пользователем 25 февраля 2021 г. 18:45:26(UTC)
| Причина: Пока беру таймаут. ПОодумаю сам. Не нашел пункт удалить сообщение.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.02.2021(UTC) Сообщений: 4  Откуда: moscow
|
Мне необходимо написать JAVA консольное приложение(клиент) которое бы авторизовывалось с использовать GOST TLS аутентифкации на WEB сервере. Тип аутентифкации односторонняя. Что было сделано. 1)Получил два сертификата от сервера (gost с длиной ключа 256). рутовый и промежуточный. 2)Установил jcp-2.0.41789 и криптоПРО CSP 2)Нашел в исходниках jcp-2.0.41789 архив с примерамии. 3)Нашел "похожий" на правду код. JTLS_samples/HttpsConnectionCheck.java * Пример подключения к тестовому серверу с * использованием клиентского контейнера * Сделал проект, добавил все зависимости(временно добавил все JAR от jcp, потом при включенном логировании планирую убрать лишнии jar).Повалились ошибки. Нашел инструкции в jcp.)Русский человек) ЖТЯИ.00091-04 33 01. Руководство программиста.pdf (далее- инструкция 1) КриптоПро JCP 97стр ЖТЯИ.00091-04 33 03. Руководство программиста. JavaTLS.pdf (далее- инструкция 2) 24 стр 4) загрузил рутовый сертификат в хранилище CertificateStore в JCP, наверное с промежуточным мне надо идти логинится на сервер... Добавить рутовый сертфикат только в CertificateStore. В HDImageStore GOST сертификаты добавлять не получается.
1 Как добавить GOST сертификат в Хранилище HDImageStore? 2 И надо ли мне его туда его добавлять, надо ли добавлять промежуточный? На основании КОД2 Мне надо добавить GOST сертификат также в KeyTools? Можете подсказать может надо добавть в крипто ПР CSP сертификат?
Пытаюсь просто считать сертификат из хранилища получаю ошибку. КОД 1 public class Main {
public static void main(String[] args) {
String trustStorePath = "root.cer"; try { KeyStore trustStore = KeyStore.getInstance("CertStore"); } catch (KeyStoreException e) { e.printStackTrace(); } } }
java.security.KeyStoreException: CertStore not found at java.security.KeyStore.getInstance(KeyStore.java:851) at com.company.Main.main(Main.java:22) Caused by: java.security.NoSuchAlgorithmException: CertStore KeyStore not available
КОД2 /** * $RCSfileHttpsConnectionCheck.java,v $ version $Revision: 36379 $ created 28.08.2018 * 16:44 by afevma last modified $Date: 2012-05-30 12:19:27 +0400 (Ср, 30 май 2012) * $ by $Author: afevma $ (C) ООО Крипто-Про 2004-2018. * <p/> * Программный код, содержащийся в этом файле, предназначен для целей обучения. * Может быть скопирован или модифицирован при условии сохранения абзацев с * указанием авторства и прав. * <p/> * Данный код не может быть непосредственно использован для защиты информации. * Компания Крипто-Про не несет никакой ответственности за функционирование * этого кода. */ package JTLS_samples;
import javax.net.ssl.*; import java.io.FileInputStream; import java.net.URL; import java.security.KeyStore;
/** * Пример подключения к тестовому серверу с * использованием клиентского контейнера. * * @author Copyright 2004-2018 Crypto-Pro. All rights reserved. * @.Version */ public class HttpsConnectionCheck {
public static void main(String[] args) throws Exception {
System.setProperty("com.sun.security.enableCRLDP", "true"); URL url = new URL("https://testgost2012st.cryptopro.ru/gost2st.txt");
KeyStore keyStore = KeyStore.getInstance("HDImageStore", "JCP"); keyStore.load(null, null);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509"); kmf.init(keyStore, "1".toCharArray());
KeyStore trustedKeyStore = KeyStore.getInstance("JKS"); trustedKeyStore.load(new FileInputStream("C:/Projects/store.jks"), "123456".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509"); tmf.init(trustedKeyStore);
SSLContext sslContext = SSLContext.getInstance("GostTLS"); sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
SSLSocketFactory socketFactory = sslContext.getSocketFactory();
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setSSLSocketFactory(socketFactory);
connection.connect(); TLSUtility.print_content(connection, null);
connection.disconnect(); System.out.println("OK");
}
}
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.02.2021(UTC) Сообщений: 4  Откуда: moscow
|
Хочу рассказать в чем был косяк у меня. Чтобы сделать аутентификацию по ГОСТ. Мои 2 ошибки. 1. Надо не только правильно поставить JCP но и правильно запускать... (Надо запускать с правами администратора на Windows 10!) 2. Главная ошибка. Без которой я не виделт сертификаты в контейнере.... //http://www.cryptopro.ru/forum2/default.aspx?g=posts&t=18270 ////если не добавить принудительно не видит контейнер c сертификатами
Security.addProvider(new ru.CryptoPro.JCP.JCP()); Security.addProvider(new ru.CryptoPro.reprov.RevCheck()); Security.addProvider(new ru.CryptoPro.ssl.Provider()); Security.addProvider(new ru.CryptoPro.Crypto.CryptoProvider()); System.setProperty("com.sun.security.enableCRLDP", "true"); System.setProperty("com.ibm.security.enableCRLDP", "true");
И весь мой код, может кому пригодится. Он почти весь взят из примера. Своего писать ни чего не надо. Только для удобства и подстройки под вашу структуру программы..
package com.company;
import ru.CryptoPro.ssl.util.TLSContext;
import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.security.Security;
public class ConnectionGOST { static boolean checkConnection = false;//проверка подключения к системе
public boolean getCheckConnection() { return checkConnection; }
public static void setCheckConnection(HttpsURLConnection connection) throws Exception {
if (connection != null) { checkConnection = true;
} else { checkConnection = false; } }
public ConnectionGOST(String URLPathTrust,String passwordTrust, String URLConnect) { //http://www.cryptopro.ru/forum2/default.aspx?g=posts&t=18270 ////если не добавить принудительно не видит контейнер c сертификатами
Security.addProvider(new ru.CryptoPro.JCP.JCP()); Security.addProvider(new ru.CryptoPro.reprov.RevCheck()); Security.addProvider(new ru.CryptoPro.ssl.Provider()); Security.addProvider(new ru.CryptoPro.Crypto.CryptoProvider()); System.setProperty("com.sun.security.enableCRLDP", "true"); System.setProperty("com.ibm.security.enableCRLDP", "true");
try { SSLContext ctx = TLSContext.initClientSSL( null, URLPathTrust, passwordTrust, null );
SSLSocketFactory factory = ctx.getSocketFactory(); connect(factory, URLConnect);
} catch (Exception e) { System.out.println(e.getMessage()); } }
/** * Функция устанавливает подключение по заданному адресу * на основе переданного SSLSocketFactory. */ public static void connect (SSLSocketFactory factory, String urlPath) throws Exception {
URL url = new URL(urlPath);
// Установка нового соединения с заданным адресом. HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
// Задание для него требуемого SSLSocketFactory. connection.setSSLSocketFactory(factory); setCheckConnection(connection);
// Вывод на экран содержимого запрошенной страницы. // printContent(connection);
// Разрыв соединения. connection.disconnect();
}
/** * Функция выводит на экран содержимое запрошенной страницы. * * @param connection Соединение. * @throws Exception */ private static void printContent (HttpsURLConnection connection) throws Exception {
if (connection != null) {
printStream(connection.getInputStream()); }
}
/** * Функция выводит на экран содержимое потока. * * @param inputStream Поток. * @throws Exception */ public static void printStream (InputStream inputStream) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader( inputStream, "utf-8"));
String input; while ((input = br.readLine()) != null) { System.out.println(input); }
br.close();
}
} Ну и собственно сам вызов:
package com.company;
public class Main {
public static void main(String[] args) { String trustStorePath = "c:\\cert\\cert"; //путь к хрангилищу сертификатов
String trustStorePassword = "12345678"; ВАШ пароль String urlPath = "https://10.10.20.2020:443"; ваш путь где стоит сервер
ConnectionGOST connectionGOST = new ConnectionGOST(trustStorePath,trustStorePassword,urlPath); boolean checkConnected = connectionGOST.getCheckConnection();
if(checkConnected) { System.out.println("Connected GOST true..."); } if(!checkConnected) { System.out.println("Connected GOST false..."); } // write your code here }
}
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 22.09.2016(UTC) Сообщений: 9   Откуда: тундра Сказал «Спасибо»: 1 раз
|
Автор: KUKUYARD  Добрый день. Вопрос 1 : Подскажите имеются ли какие учебные инструкции по работе с крипто-про, а точнее некое описание процессов, хаутушек,т .е. как начать как выполнить авторизацию с использование ГОСТ?
Вопрос 2: Существует ли справка, может есть примеры исходных кодов, как использую ваш продукт добиться поставленной задачи, а именно авторизация с использование ГОСТ?
Точнее мне необходимо с использованием языка JAVA (пока в учебных целях) осуществить двухстороннюю и одностороннюю авторизации с использование ГОСТ.
Прощу меня извинить, если это все есть на форуме в разделах: Общие вопросы или FAQ. В них я не нашел полезной информации по моим вопросам. Для меня заголовк в теме актуален, а вопрос рассматриваемый в теме - нет. Мне не нужны заумности и разработка приложений на основе крипто. Мне нужна простая инструкция, как работать с КриптоПро ЦСП на астра -люниксе. Многие, почти все вопросы по форуму касаются операционной системы Windows. А как и что делается в Люниксе ни слова. Или во всяком случае я не нашел информации (инструкции) как это делается (не могу установить подпись с носителя, не могу организоваать контейнер и тп) Где найти такую информацию (желательно в картинках)?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,513   Сказал «Спасибо»: 554 раз Поблагодарили: 2252 раз в 1757 постах
|
Автор: jorik69  Мне нужна простая инструкция, как работать с КриптоПро ЦСП на астра -люниксе. Многие, почти все вопросы по форуму касаются операционной системы Windows. А как и что делается в Люниксе ни слова. Или во всяком случае я не нашел информации (инструкции) как это делается (не могу установить подпись с носителя, не могу организоваать контейнер и тп) Где найти такую информацию (желательно в картинках)?
Есть документация в PDF на странице загрузки СКЗИ: https://www.cryptopro.ru/products/csp/downloads+ https://wiki.astralinux....e.action?pageId=32833902 |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close