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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline thevioletsun  
#1 Оставлено : 30 ноября 2016 г. 2:31:57(UTC)
thevioletsun

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

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

Добрый день.
Помогите пожалуйста с проблемой.
Я установил по инструкции jcp и jstl (наличие установленных файлов проверял).
И такой код (максимально приближенный к примеру):
Код:
System.setProperty("javax.net.debug", "ssl,handshake,data,trustmanager");  
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
System.setProperty("javax.net.ssl.keyStoreProvider", "JCP");
System.setProperty("javax.net.ssl.trustStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.keyStorePassword", "11111");
System.setProperty("javax.net.ssl.trustStore", "D:\\icrsCacer.store");
System.setProperty("javax.net.ssl.trustStorePassword", "11111");
URL url = new URL("https://icrs.nbki.ru/signals/list");
System.setProperty("https.proxyHost","192.168.xxx.xxx");
System.setProperty("https.proxyPort","xxxx");
		HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
    	
		connection.connect();
                print_content(connection);
    	
    	connection.disconnect();

даёт вот такой результат
Код:

setting up default SSLSocketFactory
class ru.CryptoPro.ssl.SSLSocketFactoryImpl is loaded
ноя 30, 2016 2:36:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore is : 
ноя 30, 2016 2:36:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore type is : HDImageStore
ноя 30, 2016 2:36:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore provider is : JCP
ноя 30, 2016 2:36:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init keystore
ноя 30, 2016 2:36:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: defaultStoreProvider = 
ноя 30, 2016 2:36:34 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: JCP
ноя 30, 2016 2:36:35 AM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.54 36641
ноя 30, 2016 2:36:35 AM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
ноя 30, 2016 2:36:35 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init keymanager of type GostX509
ноя 30, 2016 2:36:55 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore is: D:\icrsCacer.store
ноя 30, 2016 2:36:55 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore type is : HDImageStore
ноя 30, 2016 2:36:55 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore provider is : 
ноя 30, 2016 2:36:55 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init truststore
ноя 30, 2016 2:36:58 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init trustmanager of type GostX509
ноя 30, 2016 2:36:59 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init context...
instantiated an instance of class ru.CryptoPro.ssl.SSLSocketFactoryImpl
ноя 30, 2016 2:37:00 AM ru.CryptoPro.ssl.SSLContextImpl d
INFO: Context inited.

javax.net.ssl.SSLException: java.lang.UnsupportedOperationException
	at ru.CryptoPro.ssl.x.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.startHandshake(Unknown Source)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
	at ru.vtkbank.signals.XmlCreator.sendDoc(XmlCreator.java:169)
	at ru.vtkbank.signals.XmlCreator.createUpdateSignalXml(XmlCreator.java:105)
	at ru.vtkbank.signals.UpdateSignalFileCreator.createUpdateFile(UpdateSignalFileCreator.java:54)
	at ru.vtkbank.signals.KuSignals.main(KuSignals.java:29)
Caused by: java.lang.UnsupportedOperationException
	at javax.crypto.CipherSpi.engineGetKeySize(CipherSpi.java:926)
	at javax.crypto.Cipher.passCryptoPermCheck(Cipher.java:1052)
	at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1010)
	at javax.crypto.Cipher.init(Cipher.java:1209)
	at javax.crypto.Cipher.init(Cipher.java:1153)
	at ru.CryptoPro.ssl.a.c.a(Unknown Source)
	at ru.CryptoPro.ssl.a.e.a(Unknown Source)
	at ru.CryptoPro.ssl.ag.a(Unknown Source)
	at ru.CryptoPro.ssl.ag.a(Unknown Source)
	at ru.CryptoPro.ssl.d.k(Unknown Source)
	at ru.CryptoPro.ssl.d.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.i(Unknown Source)
	... 8 more

Порывшись на форуме, делал следующее:
1. Снимал ограничение на экспорт JVM.
2. java.security проверял - там порядок.
3. Сертификаты и хранилище в порядке. Через JCP control panel я свободно захожу и вижу свои сертификаты. И даже получается построить цепочку там от личного сертификата в ключевом контейнере на носителе до доверенного сертификата в хранилище сертификатов. В IE по этой цепочке авторизация проходит нормально.

jcp 1.0.54.
JVM 1.7

Было некоторое подозрение по поводу прокси, но без прокси проверить нет возможности. Кроме того, похоже, что ssl сессия открывается.

Пробовал выполнять примеры из samples, но они натыкаются на ту же самую ошибку.

Пробовал через org.apache.httpclient (по примеру из samples) и получал ошибку:
Код:

ноя 30, 2016 3:19:27 AM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.54 36641
ноя 30, 2016 3:19:28 AM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
javax.net.ssl.SSLException: Server selected improper ciphersuite TLS_DH_RSA_WITH_AES_128_CBC_SHA
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:266)
	at sun.security.ssl.ClientHandshaker.serverHello(ClientHandshaker.java:464)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:143)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.upgrade(DefaultHttpClientConnectionOperator.java:192)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.upgrade(PoolingHttpClientConnectionManager.java:369)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:415)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)

То есть SSLSocketImpl почему-то берётся от sun.security.

Что я делаю не так? Подскажите, пожалуйста, куда копать.

Отредактировано пользователем 30 ноября 2016 г. 17:03:32(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 30 ноября 2016 г. 10:17:32(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте.
Автор: thevioletsun Перейти к цитате

Код:

Caused by: java.lang.UnsupportedOperationException
	at javax.crypto.CipherSpi.engineGetKeySize(CipherSpi.java:926)
	at javax.crypto.Cipher.passCryptoPermCheck(Cipher.java:1052)
	at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1010)
	at javax.crypto.Cipher.init(Cipher.java:1209)
	at javax.crypto.Cipher.init(Cipher.java:1153)
	at ru.CryptoPro.ssl.a.c.a(Unknown Source)
	at ru.CryptoPro.ssl.a.e.a(Unknown Source)
	at ru.CryptoPro.ssl.ag.a(Unknown Source)
	at ru.CryptoPro.ssl.ag.a(Unknown Source)
	at ru.CryptoPro.ssl.d.k(Unknown Source)
	at ru.CryptoPro.ssl.d.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.a(Unknown Source)
	at ru.CryptoPro.ssl.ae.i(Unknown Source)
	... 8 more

...
Код:

javax.net.ssl.SSLException: Server selected improper ciphersuite TLS_DH_RSA_WITH_AES_128_CBC_SHA
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:266)
	at sun.security.ssl.ClientHandshaker.serverHello(ClientHandshaker.java:464)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:143)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.upgrade(DefaultHttpClientConnectionOperator.java:192)
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.upgrade(PoolingHttpClientConnectionManager.java:369)
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:415)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)



По первой ошибке - проблема в неснятых ограничения ("Снимал ограничение на экспорт JVM.") для java 7: CipherSpi.engineGetKeySize
По второй ошибке - нет упоминания пакетов ru.CryptoPro.ssl, в вызовах JTLS не присутствует (возможно, не установлен, либо не в той jre, которая используется), и присылаемая сайферсюита - не ГОСТ (TLS_DH_RSA_WITH_AES_128_CBC_SHA) (JTLS работает только с ГОСТовыми сайферсюитами).

Отредактировано пользователем 30 ноября 2016 г. 10:18:19(UTC)  | Причина: Не указана

Offline thevioletsun  
#3 Оставлено : 30 ноября 2016 г. 13:21:46(UTC)
thevioletsun

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

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

CryptoProJCPInfo.zip (8kb) загружен 2 раз(а).
Автор: afev Перейти к цитате
Здравствуйте.

По первой ошибке - проблема в неснятых ограничения ("Снимал ограничение на экспорт JVM.") для java 7: CipherSpi.engineGetKeySize
По второй ошибке - нет упоминания пакетов ru.CryptoPro.ssl, в вызовах JTLS не присутствует (возможно, не установлен, либо не в той jre, которая используется), и присылаемая сайферсюита - не ГОСТ (TLS_DH_RSA_WITH_AES_128_CBC_SHA) (JTLS работает только с ГОСТовыми сайферсюитами).


1. Поиском нашёл все local_policy.jar и US_export_policy.jar, которые были на машине и заменил на соответствующие ulimited-jce от Oracle. Где-то ещё могут быть прописаны эти ограничения?
2. JTLS установлен...
Ваша сheck-утилита записала jar, где есть файл с java.security, в котором прописаны

Код:
ssl.KeyManagerFactory.algorithm=GostX509
ssl.TrustManagerFactory.algorithm=GostX509
...
ssl.SocketFactory.provider=ru.CryptoPro.ssl.SSLSocketFactoryImpl
ssl.ServerSocketFactory.provider=ru.CryptoPro.ssl.SSLServerSocketFactoryImpl


и CryptoProJCPInfo.txt, где есть
Код:
System Preferences - ok
User Preferences - ok
...
-TESTS-
JCP - ok
Crypto - ok
JTLS - ok
Get JCP System Preferences - ok
Get JCP User Preferences - ok


Но вторая ошибка меня пока не так сильно занимает, как первая. Мне для начала хотелось бы получить коннект, чтобы можно было говорить с руководством о покупке лицензии. Если что, во вложении jar-ник, сформированный вашей утилитой. CryptoProJCPInfo.zip (8kb) загружен 2 раз(а).

Отредактировано пользователем 30 ноября 2016 г. 13:24:40(UTC)  | Причина: Не указана

Offline thevioletsun  
#4 Оставлено : 30 ноября 2016 г. 17:02:33(UTC)
thevioletsun

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

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

Поставил jcp-jstl с теми же параметрами на компьютер в смежной сети. Всё завелось с полпинка.
Значит, дело либо в каком-то неизвестном мне дополнительном программном обеспечении, которое стоит на той машине, либо в политиках сети.
Вопрос снимаю.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.