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

Уведомление

Icon
Error

7 Страницы<12345>»
Опции
К последнему сообщению К первому непрочитанному
Offline lartok  
#21 Оставлено : 25 марта 2019 г. 16:33:15(UTC)
lartok

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Вот и я не пойму то ли я не догоняю, то ли на той стороне.
Offline Евгений Афанасьев  
#22 Оставлено : 26 марта 2019 г. 12:47:11(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Автор: lartok Перейти к цитате

Подскажите пожалуйста как из кода на Java получить поддерживаемые шифры удаленного сервиса, ну что-то типа "openssl s_client -connect 1.2.3.4:443 -cipher TLS_CIPHER_2012".

Обычно можно получить что-то вроде SSLSession (стандартный интерфейс) TLS-сессии, он содержит необходимую информацию.
В случае, например, Servlet есть параметры:

Код:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String cipherSuite = (String) request.getAttribute("javax.servlet.request.cipher_suite");
  X509Certificate certChain[] = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
  ...

и другие.

Автор: lartok Перейти к цитате

На удаленном сервере подняли SSL по гост2012. Как проверить? Правильно ли я понимаю что в хранилище доверенных сертификатов должен быть корневой (минсвязь) сертификат сервера (ГОСТ2012)? Мне дали корневой сертификат SHARSA.

Проверить можно, сделав короткий пример подключения, например, с использованием HttpsURLConnection с передачей ему SSLSocketFactory из SSLContext, созданный согласно описанию в руководстве разработчика JTLS.
Да, на стороне клиента в доверенном хранилище должен быть именно корневой сертификат цепочки сервера, а не сам сертификат сервера.

Отредактировано пользователем 26 марта 2019 г. 12:50:55(UTC)  | Причина: Не указана

Offline lartok  
#23 Оставлено : 27 марта 2019 г. 9:36:07(UTC)
lartok

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: Евгений Афанасьев Перейти к цитате

Проверить можно, сделав короткий пример подключения, например, с использованием HttpsURLConnection с передачей ему SSLSocketFactory из SSLContext, созданный согласно описанию в руководстве разработчика JTLS.
Да, на стороне клиента в доверенном хранилище должен быть именно корневой сертификат цепочки сервера, а не сам сертификат сервера.


Использую метод из примеров
Код:
public static void main(String urlstr,String trustSt,String keyStorePassword) {
	System.setProperty("com.sun.security.enableCRLDP", "false");
	System.setProperty("com.ibm.security.enableCRLDP", "false");
	System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
    System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword);
	System.setProperty("javax.net.ssl.trustStoreType", JCP.CERT_STORE_NAME);
	System.setProperty("javax.net.ssl.trustStore", trustSt);
    System.setProperty("javax.net.ssl.trustStorePassword", "12345");

    /*"https://cpca.cryptopro.ru/tls/tls-cli.asp"*/
    /*"https://cpca.cryptopro.ru/"*/
    /*"https://icrs.nbki.ru"*/
    //tls/tls-cli.asp
    URL url = null;
	try {
		url = new URL(urlstr);
		HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
	    connection.connect();
	    print_content(connection);
	    connection.disconnect();
	}catch(Exception e){
		log.info(e.getMessage());
	}
}


Также валится на connection.connect().
Код:
FINE: %% ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2012, TLS_CIPHER_2001, SSL3_CK_GVO_KB2]; Compression Methods: 0; Extensions: Extension ext_hash_and_mac_alg_select, ext_hash_and_mac_alg_select: [48, 32, 48, 30, 48, 8, 6, 6, 42, -123, 3, 2, 2, 9, 48, 8, 6, 6, 42, -123, 3, 2, 2, 22, 48, 8, 6, 6, 42, -123, 3, 2, 2, 23], Extension renegotiation_info, renegotiated_connection: <empty>;
Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.am b
FINER: --WRITE--
Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.D a
ALL: [Raw write]: length = 99
0000: 16 03 01 00 5E 01 00 00   5A 03 01 5C 9B 10 ED 06  ....^...Z..\....
0010: AB 47 E1 3A 33 DE 16 99   AD B7 C6 D5 C4 F7 65 30  .G.:3.........e0
0020: 64 06 FF BB FD 0C 31 AC   D5 88 4B 00 00 06 FF 85  d.....1...K.....
0030: 00 81 00 32 01 00 00 2B   FD E8 00 22 30 20 30 1E  ...2...+..."0 0.
0040: 30 08 06 06 2A 85 03 02   02 09 30 08 06 06 2A 85  0...*.....0...*.
0050: 03 02 02 16 30 08 06 06   2A 85 03 02 02 17 FF 01  ....0...*.......
0060: 00 01 00                                           ...

Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.am a
FINER: Reading and processing packages...
Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.am a
FINER: --READ--
Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.v a
ALL: [Raw read]: length = 5
0000: 15 03 01 00 02                                     .....

Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.v a
ALL: [Raw read]: length = 2
0000: 02 28                                              .(

Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.am b
FINE: Thread-34, RECV TLSv1 ALERT:  fatal, description = HANDSHAKE_FAILURE
Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.am k
FINER: Thread-34, called closeSocket()
Mar 27, 2019 8:58:05 AM ru.CryptoPro.ssl.am a
FINER: Thread-34, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: HANDSHAKE_FAILURE

Терзают меня смутные сомнения что на той стороне не все до конца настроили.
Правильно ли я понимаю что если использовать этот же метод для Get-запроса к "https://cpca.cryptopro.ru/",то получу корректный ответ? Или есть сервисы где можно проверить ssl по ГОСТ2012 чтобы точно быть увереным что на моей стороне все работает. Спасибо

Отредактировано пользователем 27 марта 2019 г. 9:37:37(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#24 Оставлено : 27 марта 2019 г. 11:06:53(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Ошибку получаете сразу после Client Hello? Нужен боле детальный лог, так как может не отправляться клиентский сертификат, если он не подходит по каким-то параметрам (в частности, доверенные издатели сервера).
Другие тестовые адреса - https://www.cryptopro.ru/products/csp/tc26tls (Стенд открытого тестирования СКЗИ "КриптоПро CSP"/"КриптоПро TLS").

Отредактировано пользователем 27 марта 2019 г. 11:08:10(UTC)  | Причина: Не указана

Offline lartok  
#25 Оставлено : 27 марта 2019 г. 11:36:28(UTC)
lartok

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: Евгений Афанасьев Перейти к цитате
Ошибку получаете сразу после Client Hello? Нужен боле детальный лог, так как может не отправляться клиентский сертификат, если он не подходит по каким-то параметрам (в частности, доверенные издатели сервера).
Другие тестовые адреса - https://www.cryptopro.ru/products/csp/tc26tls (Стенд открытого тестирования СКЗИ "КриптоПро CSP"/"КриптоПро TLS").


Да, ошибка сразу после Client Hello.

Вот лог:
Код:
Mar 27, 2019 9:16:34 AM ru.CryptoPro.ssl.A run
FINE: Applet launched: false
Mar 27, 2019 9:16:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore is : 
Mar 27, 2019 9:16:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore type is : HDImageStore
Mar 27, 2019 9:16:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore provider is : 
Mar 27, 2019 9:16:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init key store
Mar 27, 2019 9:16:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: defaultStoreProvider = 
Mar 27, 2019 9:16:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: 
Mar 27, 2019 9:16:36 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init key manager of type GostX509
Mar 27, 2019 9:16:36 AM ru.CryptoPro.ssl.r <init>
FINE: %% adding as private keys %%
Mar 27, 2019 9:16:36 AM ru.CryptoPro.ssl.r <init>
FINER: ***42d01794*** : loading private key (JCP)...
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.r <init>
FINER: ***42d01794*** : private key is loaded.
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.r <init>
FINE: 
found key: ***42d01794***
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.r <init>
FINE: 
------
Certificate chain [0] for key:***42d01794*** 
  Subject: STREET=??. ?????? ?. 77, CN=?? ??????-??????? (???), O=?? ??????-??????? (???), L=???????????, ST=16 ?????????? ?????????,***
  Valid from Mon Jan 21 13:38:03 MSK 2019 until Tue Jan 21 13:38:03 MSK 2020
------
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore is: ***trusted.store
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore type is : CertStore
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore provider is : 
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init trust store
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init trust manager of type GostX509
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.g <init>
FINE: Trusted certificates: key store.
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.g a
FINE: 
%% adding as trusted certificates %%
--------
  Subject: STREET=??. ?????? ?. 77, CN=?? ??????-??????? (???), O=?? ??????-??????? (???), L=???????????, ST=16 ?????????? ?????????,***
  Serial number: ******
  Valid from Mon Jan 21 13:38:03 MSK 2019 until Tue Jan 21 13:38:03 MSK 2020
--------
  Subject: CN=??????????? ??????, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=??????????? ??????, STREET="????? ????????, ??? 7", L=?. ??????, ST=77 ??????, C=RU, EMAILADDRESS=dit@minsvyaz.ru
  Serial number: 4e6d478b26f27d657f768e025ce3d393
  Valid from Fri Jul 06 15:18:06 MSK 2018 until Tue Jul 01 15:18:06 MSK 2036
--------
  Subject: EMAILADDRESS=***
  Serial number: 500b
  Valid from Fri Oct 26 13:57:17 MSK 2018 until Tue Nov 05 13:57:17 MSK 2019
--------
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init context...
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
FINE: SSLContext engineInit
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
FINER: trigger seeding of SecureRandom
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
FINER: done seeding SecureRandom
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: Context initiated.
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.y <init>
FINER: Created:  [Session-1, Unknown 0x0:0x0]
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.f a
FINE: Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.am setSoTimeout
FINER: Thread-5, setSoTimeout(0) called
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.ao r
FINE: %% No cached client session
Mar 27, 2019 9:16:37 AM ru.CryptoPro.ssl.f q
FINE: %% ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2012, TLS_CIPHER_2001, SSL3_CK_GVO_KB2]; Compression Methods: 0; Extensions: Extension ext_hash_and_mac_alg_select, ext_hash_and_mac_alg_select: [48, 32, 48, 30, 48, 8, 6, 6, 42, -123, 3, 2, 2, 9, 48, 8, 6, 6, 42, -123, 3, 2, 2, 22, 48, 8, 6, 6, 42, -123, 3, 2, 2, 23], Extension renegotiation_info, renegotiated_connection: <empty>;
Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.am b
FINER: --WRITE--
Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.D a
ALL: [Raw write]: length = 97
0000: 16 03 01 00 5C 01 00 00   58 03 01 5C 9B 15 76 20  ....\...X..\..v 
0010: 1E 82 5D B8 78 B7 3F 38   B2 A5 17 4E 3B 11 5A 00  ..].x.?8...N;.Z.
0020: 59 40 7A F3 C6 A1 C2 D2   DC C2 F1 00 00 04 FF 85  Y@z.............
0030: 00 81 01 00 00 2B FD E8   00 22 30 20 30 1E 30 08  .....+..."0 0.0.
0040: 06 06 2A 85 03 02 02 09   30 08 06 06 2A 85 03 02  ..*.....0...*...
0050: 02 16 30 08 06 06 2A 85   03 02 02 17 FF 01 00 01  ..0...*.........
0060: 00                                                 .

Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.am a
FINER: Reading and processing packages...
Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.am a
FINER: --READ--
Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.v a
ALL: [Raw read]: length = 5
0000: 15 03 01 00 02                                     .....

Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.v a
ALL: [Raw read]: length = 2
0000: 02 28                                              .(

Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.am b
FINE: Thread-13, RECV TLSv1 ALERT:  fatal, description = HANDSHAKE_FAILURE
Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.am k
FINER: Thread-13, called closeSocket()
Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.am a
FINER: Thread-13, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: HANDSHAKE_FAILURE
Mar 27, 2019 9:17:26 AM ru.CryptoPro.ssl.am a
FINE: THROW
javax.net.ssl.SSLHandshakeException: Received fatal alert: HANDSHAKE_FAILURE

Offline lartok  
#26 Оставлено : 27 марта 2019 г. 11:43:30(UTC)
lartok

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Единственное что меня смущает это строчка "init trust manager of type GostX509", хотя корневой сертификат в SHARSA формате (еще в хранилище добавил свой и УЦ). Или тип хранилища не имеет значения?
Offline Евгений Афанасьев  
#27 Оставлено : 27 марта 2019 г. 13:50:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Автор: lartok Перейти к цитате
Единственное что меня смущает это строчка "init trust manager of type GostX509", хотя корневой сертификат в SHARSA формате (еще в хранилище добавил свой и УЦ). Или тип хранилища не имеет значения?

GostX509 - это алгоритм, по которому определяется менеджер ключей или хранилища сертификатов, тип хранилища не важен.
Вы используете 3 адреса из примера и по каждому такая ошибка?

Offline lartok  
#28 Оставлено : 27 марта 2019 г. 15:00:29(UTC)
lartok

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: Евгений Афанасьев Перейти к цитате

GostX509 - это алгоритм, по которому определяется менеджер ключей или хранилища сертификатов, тип хранилища не важен.
Вы используете 3 адреса из примера и по каждому такая ошибка?


Из примера адреса не пробовал еще - у нас закрытая система и доступ наружу только через заявку (оформляю заявку на cpca.cryptopro.ru).
Offline Евгений Афанасьев  
#29 Оставлено : 27 марта 2019 г. 15:27:18(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Тогда если первый же client hello дает ошибку, то, скорее всего, там не ГОСТ, а RSA. Можно проверить с помощью csptest: csptest -server ... -port ... -file ... -v -v

Отредактировано пользователем 27 марта 2019 г. 15:27:56(UTC)  | Причина: Не указана

Offline lartok  
#30 Оставлено : 27 марта 2019 г. 16:02:04(UTC)
lartok

Статус: Активный участник

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 1 раз в 1 постах
Автор: Евгений Афанасьев Перейти к цитате
Тогда если первый же client hello дает ошибку, то, скорее всего, там не ГОСТ, а RSA. Можно проверить с помощью csptest: csptest -server ... -port ... -file ... -v -v


Установил КриптоПро CSP, запустил команду csptest с параметрами.

Код:
./csptest: unrecognized option `-server'
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 0.000 sec
[ErrorCode: 0x00000002]
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
7 Страницы<12345>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.