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

Уведомление

Icon
Error

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

Статус: Новичок

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

Добрый день,

Используем JCP + JTLS 1.0.55 на JDK 1.7.0_21 (64-бит) для установление защитного SSL/TLS соединения и аутентификации/авторизации на основе клиентских сертификатов.

Клиентские сертификаты и ключевое хранилище в норме.
Ограничения экспорта на длину ключей убраны.
Удоволетворяет требованиям по Java 7.
Результат CheckConfFull:
Код:

Sep 11, 2014 2:52:14 PM ComLine.CheckConfFull checkJCP
INFO: ***Check JCP key pair generation and writing to store
Sep 11, 2014 2:52:14 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.55 36716
Sep 11, 2014 2:52:14 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull keyGen
INFO: Generation of key pair is completed (GOST3410)
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull keyGen
INFO: Generation of certificate is completed
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull keyGen
INFO: Recording of a private key named "jcptestsignkey" to HDImageStore is completed.
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull checkJCP
INFO: ***Check JCP key pair generation and writing to store - OK
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull checkJCP
INFO: ***Check JCP signature generation|verifycation
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull signVer
INFO: Loading of a private key is completed
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull signVer
INFO: Loading of a text is completed
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull signVer
INFO: Generation of the signature is completed
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull signVer
INFO: Loading of a public key is completed
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull signVer
INFO: The signature is true
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull checkJCP
INFO: ***JCP signature generation|verifycation - OK
Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull main
INFO: 
JCP - OK

Sep 11, 2014 2:52:18 PM ComLine.CheckConfFull checkCrypto
INFO: ***Check Crypto key pair generation and writing to store
Sep 11, 2014 2:52:19 PM ComLine.CheckConfFull keyGen
INFO: Generation of key pair is completed (GOST3410DH)
Sep 11, 2014 2:52:19 PM ComLine.CheckConfFull keyGen
INFO: Generation of certificate is completed
Sep 11, 2014 2:52:19 PM ComLine.CheckConfFull keyGen
INFO: Recording of a private key named "jcptestcryptokey" to HDImageStore is completed.
Sep 11, 2014 2:52:19 PM ComLine.CheckConfFull checkCrypto
INFO: ***Check Crypto key pair generation and writing to store - OK
Sep 11, 2014 2:52:19 PM ComLine.CheckConfFull main
INFO: 
Crypto - OK

Sep 11, 2014 2:52:19 PM ComLine.CheckConfFull checkJTLS
INFO: ***Prepare keys
Sep 11, 2014 2:52:20 PM ComLine.CheckConfFull keyGen
INFO: Generation of key pair is completed (GOST3410DH)
Sep 11, 2014 2:52:20 PM ComLine.CheckConfFull keyGen
INFO: Generation of certificate is completed
Sep 11, 2014 2:52:20 PM ComLine.CheckConfFull keyGen
INFO: Recording of a private key named "jcptestserverkey" to HDImageStore is completed.
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull keyGen
INFO: Generation of key pair is completed (GOST3410DH)
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull keyGen
INFO: Generation of certificate is completed
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull keyGen
INFO: Recording of a private key named "jcptestclientkey" to HDImageStore is completed.
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull checkJTLS
INFO: ***Prepare files
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull checkJTLS
INFO: ***Prepare TrustStore
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull createTrustStore
INFO: Loading of a certificate is completed
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull createTrustStore
INFO: Loading of a certificate is completed
Sep 11, 2014 2:52:21 PM ComLine.CheckConfFull checkJTLS
INFO: ***Test ssl without autentification of client
Sep 11, 2014 2:52:21 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore is : 
Sep 11, 2014 2:52:21 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore type is : HDImageStore
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore provider is : 
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init keystore
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: defaultStoreProvider = 
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: 
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init keymanager of type GostX509
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore is: /u01/java/jdk1.7.0_21/jre/bin/jcptesttrust.store
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore type is : HDImageStore
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore provider is : 
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init truststore
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init trustmanager of type GostX509
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init context...
Sep 11, 2014 2:52:22 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: Context inited.
Sep 11, 2014 2:52:22 PM ComLine.CheckConfFull tls
INFO: server started
Sep 11, 2014 2:52:22 PM JTLS_samples.Client proc
INFO:  Client request: GET /jcptestdoc.in HTTP/1.0


Sep 11, 2014 2:52:22 PM JTLS_samples.Server proc
INFO: Server: read request
Sep 11, 2014 2:52:22 PM JTLS_samples.Client proc
INFO:  Client: parse answer
Sep 11, 2014 2:52:22 PM JTLS_samples.Server proc
INFO: Server: parse request
Sep 11, 2014 2:52:22 PM JTLS_samples.Server proc
INFO: Server: read file
Sep 11, 2014 2:52:22 PM JTLS_samples.Server proc
INFO: Server: answer
Sep 11, 2014 2:52:22 PM JTLS_samples.Client proc
INFO: answer was writing to: /u01/java/jdk1.7.0_21/jre/bin/jcptestdoc.outjcptestdoc.in
Sep 11, 2014 2:52:22 PM ComLine.CheckConfFull tls
INFO: GET complete
Sep 11, 2014 2:52:22 PM JTLS_samples.Server run
SEVERE: Server error:java.net.SocketException: Socket closed
Sep 11, 2014 2:52:22 PM ComLine.CheckConfFull checkJTLS
INFO: ***Test ssl with autentification of client
Sep 11, 2014 2:52:22 PM ComLine.CheckConfFull tls
INFO: server started
Sep 11, 2014 2:52:22 PM JTLS_samples.Client proc
INFO:  Client request: GET /jcptestdoc.in HTTP/1.0


Sep 11, 2014 2:52:22 PM JTLS_samples.Server proc
INFO: Server: read request
Sep 11, 2014 2:52:23 PM JTLS_samples.Client proc
INFO:  Client: parse answer
Sep 11, 2014 2:52:23 PM JTLS_samples.Server proc
INFO: Server: parse request
Sep 11, 2014 2:52:23 PM JTLS_samples.Server proc
INFO: Server: read file
Sep 11, 2014 2:52:23 PM JTLS_samples.Server proc
INFO: Server: answer
Sep 11, 2014 2:52:23 PM JTLS_samples.Client proc
INFO: answer was writing to: /u01/java/jdk1.7.0_21/jre/bin/jcptestdoc_a.outjcptestdoc.in
Sep 11, 2014 2:52:23 PM ComLine.CheckConfFull tls
INFO: GET complete
Sep 11, 2014 2:52:23 PM JTLS_samples.Server run
SEVERE: Server error:java.net.SocketException: Socket closed
Sep 11, 2014 2:52:23 PM ComLine.CheckConfFull main
INFO: 
JTLS - OK


В результате пытаемся сделать безопасное TLS/SLL подключение к серверу, но получаем HANDSHAKE_FAILURE ошибку, см. приложенный лог файл.

Код:

javax.net.ssl.SSLHandshakeException: Received fatal alert: HANDSHAKE_FAILURE
        at ru.CryptoPro.ssl.x.a(Unknown Source)
        at ru.CryptoPro.ssl.x.a(Unknown Source)
        at ru.CryptoPro.ssl.ae.b(Unknown Source)
        at ru.CryptoPro.ssl.ae.a(Unknown Source)
        at ru.CryptoPro.ssl.ae.a(Unknown Source)
        at ru.CryptoPro.ssl.Q.read(Unknown Source)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)[:1.7.0_21]
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)[:1.7.0_21]
        at java.io.BufferedInputStream.read(BufferedInputStream.java:334)[:1.7.0_21]
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:633)[:1.7.0_21]
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:579)[:1.7.0_21]
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:604)[:1.7.0_21]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1322)[:1.7.0_21]
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)[:1.7.0_21]


В чем может быть причина? Почему SSL/TLSv1 не устанавливается до конца? И почему-то четыри раза пытается установить SSL/TLS сессию на 1 попытку подключения и все равно ни как не может ее установить?

1)

Код:
> ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2001, TLS_CIPHER_94, SSL3_CK_GVO_KB2]; Compression Methods: 0
> ServerHello sessionId:{127, 191, 149, 238, 234, 12, 218, 144, 25, 27, 130, 199, 121, 205, 115, 34, 99, 65, 92, 24, 157, 57, 36, 190, 132, 218, 71, 94, 125, 207, 232, 90}
> handshakeDigest :4c314f0f
> New session TLS_CIPHER_2001

> ServerHelloDone (empty)
> ClientKeyExchange...
> clntEncIV:54 39 64 20 18 74 4D 0B
> svrEncIV:7B 6E F2 16 54 2D 71 D0
> ChangeCipherSpec %% Finished.
> Cached client session: [Session-9, TLS_CIPHER_2001]


Try resuming [Session-9, TLS_CIPHER_2001] from port 57609
Try resuming:{127, 191, 149, 238, 234, 12, 218, 144, 25, 27, 130, 199, 121, 205, 115, 34, 99, 65, 92, 24, 157, 57, 36, 190, 132, 218, 71, 94, 125, 207, 232, 90}
....


2)

Код:
> ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2001, TLS_CIPHER_94, SSL3_CK_GVO_KB2]; Compression Methods: 0

> ServerHello sessionId:{187, 151, 79, 96, 202, 113, 136, 101, 156, 87, 17, 72, 7, 119, 209, 104, 13, 239, 215, 117, 54, 236, 243, 7, 243, 244, 113, 56, 97, 134, 85, 232}

> handshakeDigest :3e58c940


3)
Код:
> ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2001, TLS_CIPHER_94, SSL3_CK_GVO_KB2]; Compression Methods: 0

> ServerHello sessionId:{246, 158, 96, 138, 160, 78, 125, 229, 58, 189, 16, 156, 49, 110, 57, 245, 132, 61, 209, 165, 87, 217, 101, 99, 142, 77, 42, 110, 33, 66, 71, 237}


4)

Код:
> ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2001, TLS_CIPHER_94, SSL3_CK_GVO_KB2]; Compression Methods: 0

> ServerHello sessionId:{115, 100, 175, 173, 89, 3, 58, 161, 10, 214, 240, 135, 138, 95, 213, 25, 232, 129, 150, 102, 90, 67, 138, 237, 146, 86, 118, 217, 145, 32, 190, 60}


Заранее спасибо.

Отредактировано пользователем 11 сентября 2014 г. 16:37:31(UTC)  | Причина: Не указана

Вложение(я):
failed_tls_handshake.log (18kb) загружен 6 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#2 Оставлено : 11 сентября 2014 г. 17:02:57(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте. Судя по логу, после прихода certificate request не удается найти подходящий сертификат (среди загруженных) с издателем
<EMAILADDRESS=is@rapida.ru, CN=Test Rapida Root CA, OU=IT, O=Rapida, L=Moscow, C=RU>, потому отправляется пустое сообщение certificate message.
Offline rubaha  
#3 Оставлено : 11 сентября 2014 г. 18:46:37(UTC)
rubaha

Статус: Новичок

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

Я правильно понимаю, контейнер клиента определяется, сертификат клиента отправляется, а что означает "certificate request" - это запрос сервера клиенту о предоставлении клиентского сертификата ?

Не удается найти подходящий сертификат где? В хранилище доверенных сертификатов или же это ошибка сервера, а не клиента?
Offline Евгений Афанасьев  
#4 Оставлено : 12 сентября 2014 г. 12:05:58(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Автор: rubaha Перейти к цитате
Я правильно понимаю, контейнер клиента определяется, сертификат клиента отправляется, а что означает "certificate request" - это запрос сервера клиенту о предоставлении клиентского сертификата ?

Не удается найти подходящий сертификат где? В хранилище доверенных сертификатов или же это ошибка сервера, а не клиента?


С сервера приходит список поддерживаемых издателей (certificate request) с запросом сертификата клиента. При подборе подходящего сертификата с таким издателем (был один в списке в логе) не найден ни один сертификат среди доступных клиентских контейнеров (на стороне клиента). Доступные контейнеры - это список контейнеров, подобранных по паролю (keyStorePassword).

Отредактировано пользователем 12 сентября 2014 г. 12:07:13(UTC)  | Причина: Не указана

Offline rubaha  
#5 Оставлено : 12 сентября 2014 г. 14:32:25(UTC)
rubaha

Статус: Новичок

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

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