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

Уведомление

Icon
Error

6 Страницы<12345>»
Опции
К последнему сообщению К первому непрочитанному
Offline Kirill1499  
#21 Оставлено : 23 июля 2018 г. 14:55:22(UTC)
Kirill1499

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

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

Код:
private KeyStore gostCertStore;

Из
Код:
package java.security;

К сожалению. хранилище сертификатов приложить не смогу. Они корпоративные.
Сейчас дебагом посмотрю.
Offline Евгений Афанасьев  
#22 Оставлено : 23 июля 2018 г. 15:22:10(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Автор: Kirill1499 Перейти к цитате
Код:
private KeyStore gostCertStore;
- нужен код инициализации. Опираясь на то, что в load() передаются параметры, предполагаю, что это CertStore (т.к. для контейнеров в load ненужно ничего передавать).

Offline Kirill1499  
#23 Оставлено : 23 июля 2018 г. 15:46:31(UTC)
Kirill1499

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

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

Код:
private void initGostCertStore() throws Exception {
		gostCertStore = KeyStore.getInstance(JCP.HD_STORE_NAME, JCP.PROVIDER_NAME);
		if (isDebugEnabled()) {
			if(gostCertPath.startsWith("/")){
				logDebug("---gost cert store path (in resources): " + getClass().getResource(gostCertPath).getPath());
			} else {
				logDebug("---gost cert store path (in directory): " + gostCertPath);
			}
		}
		
		logDebug("---gost cert store certificates----");
		gostCertStore.load(getResourceorFileAsStream(gostCertPath), GOST_STORE_PASSWORD.toCharArray());
		if (isDebugEnabled()) {
			Enumeration<String> en = gostCertStore.aliases();
			while (en.hasMoreElements()) {
				logDebug("---alias: " + en.nextElement());
			}
			logDebug("------------------------------------");
		}
}


Следующим сообщением приложу скрины дебага.
Offline Kirill1499  
#24 Оставлено : 23 июля 2018 г. 15:49:09(UTC)
Kirill1499

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

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

2018-07-23_15-42-51.png (50kb) загружен 9 раз(а). 2018-07-23_15-40-41.png (52kb) загружен 7 раз(а).
Как я и говорил, в старой версии при поиске в хранилище 10 алиасов, а в новой версии в этом же месте дебага, у хранилища размер 0!
Offline Евгений Афанасьев  
#25 Оставлено : 23 июля 2018 г. 15:54:59(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Попробуем заменить JCP.HD_STORE_NAME на JCP.CERT_STORE_NAME?
Offline Kirill1499  
#26 Оставлено : 23 июля 2018 г. 16:13:33(UTC)
Kirill1499

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

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

Не дошло даже до NPE (по-прежнему возвращается null, просто не дошло до вызова getEncoded()).
Упало раньше с
Код:
java.security.UnrecoverableKeyException: Key can't be saved in certificate store.

	at ru.CryptoPro.JCP.KeyStore.TrustStore.engineGetKey(Unknown Source)
	at java.security.KeyStore.getKey(KeyStore.java:1023)
	at org.occ.rugateway.jcp.KeyStoreService.getPrivateKey(KeyStoreService.java:152)

На методе:
Код:
public PrivateKey getPrivateKey(String pkAlias, String storePassword) throws Exception {
		return (PrivateKey) gostCertStore.getKey(pkAlias, storePassword == null ? null : storePassword.toCharArray());
	}
Offline Евгений Афанасьев  
#27 Оставлено : 23 июля 2018 г. 16:25:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Понятно, это keyStore используется и как CertStore, и HDImageStore (для ключей). Постараюсь воспроизвести.
Offline Евгений Афанасьев  
#28 Оставлено : 23 июля 2018 г. 16:32:47(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Пока не удалось воспроизвести, указал тип HDImageStore, но передал хранилище сертификатов (как у вас), все сертификаты в нем перечислились:

Код:

keyStore = {java.security.KeyStore@921} 
 type = {java.lang.String@1306} "HDImageStore"
 provider = {ru.CryptoPro.JCP.JCP@1307}  size = 111
 keyStoreSpi = {ru.CryptoPro.JCP.KeyStore.HDImage.HDImageStore@1308} "hdimageru.CryptoPro.JCP.KeyStore.TrustStore@54c5a2ff"
  containerStore = {ru.CryptoPro.JCP.KeyStore.ContainerStore@1310} "hdimage"
  trustStore = {ru.CryptoPro.JCP.KeyStore.TrustStore@1311} 
   nullPass = false
   entries = {java.util.Hashtable@1313}  size = 8
    0 = {java.util.Hashtable$Entry@1316} "prob_ca_20_ui.cer" -> 
    1 = {java.util.Hashtable$Entry@1317} "rootuc" -> 
    2 = {java.util.Hashtable$Entry@1318} "cryptopro_root_ca" -> 
    3 = {java.util.Hashtable$Entry@1319} "new_test_ca" -> 
    4 = {java.util.Hashtable$Entry@1320} "roottestcp" -> 
    5 = {java.util.Hashtable$Entry@1321} "roottestca" -> 
    6 = {java.util.Hashtable$Entry@1322} "test_us_tls_2012gost" -> 
    7 = {java.util.Hashtable$Entry@1323} "uc_tls_serv.cer" -> 
  storeName = {java.lang.String@1306} "HDImageStore"

Нельзя ли поподробнее про default_Store:
"Возможно я видел ошибку при дебаге, когда он перечисляет сертификаты, он их берёт из указанного store D:/nbki_new, а уже метод engineGetCertificate(String alias) лезет в какое-то D:/default_Store"

И проверьте, пожалуйста, с помощью
Код:

>"<JRE>\bin\keytool" -list -keystore "<store>" -storepass <password> -storetype CertStore -providername JCP
>"<JRE>\bin\keytool" -list -keystore "<store>" -storepass <password> -storetype HDImageStore -providername JCP

В первом случае должны быть выведены только алиасы хранилища сертификатов store, а во втором - и его алиасы, и алиасы контейнеров.

Отредактировано пользователем 23 июля 2018 г. 16:41:51(UTC)  | Причина: Не указана

Offline Kirill1499  
#29 Оставлено : 24 июля 2018 г. 12:11:20(UTC)
Kirill1499

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

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

Похоже так и есть:
2018-07-24_12-01-38.png (36kb) загружен 7 раз(а).
2018-07-24_12-07-18.png (47kb) загружен 5 раз(а).
Offline Евгений Афанасьев  
#30 Оставлено : 24 июля 2018 г. 13:02:50(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
keytool, по идее, выполняет тот же код, что и у вас.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
6 Страницы<12345>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.