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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline zhe  
#1 Оставлено : 14 февраля 2012 г. 14:05:31(UTC)
zhe

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

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

Подскажите, нормально ли то, что не работает keyStore.getEntry?

Вот тест:

Код:
package foo.bar.cryptopro;

import org.junit.Test;

import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;

public class PrivateKeyEntryTest {

    @Test
    public void keyAlgorithmsShouldBeEqual() throws Exception {
        KeyStore keyStore = KeyStore.getInstance("HDImageStore", "JCP");
        keyStore.load(null, "changeit".toCharArray());

        PrivateKey privateKey = (PrivateKey) keyStore.getKey("alias", "changeit".toCharArray());
        PublicKey publicKey =  keyStore.getCertificate("alias").getPublicKey();

        assertThat(privateKey.getAlgorithm(), equalTo(publicKey.getAlgorithm()));
    }

    @Test
    public void privateKeyEntryAvailable() throws Exception {
        KeyStore keyStore = KeyStore.getInstance("HDImageStore", "JCP");
        keyStore.load(null, "changeit".toCharArray());

        KeyStore.PrivateKeyEntry privateKeyEntry =
                (KeyStore.PrivateKeyEntry) keyStore.getEntry("alias", new KeyStore.PasswordProtection("changeit".toCharArray()));
        assertThat(privateKeyEntry, notNullValue());
    }

}


А вот его результаты

Код:
14.02.2012 11:03:30 ru.CryptoPro.JCP.tools.z a
INFO: Loading JCP 1.0.52
14.02.2012 11:03:30 ru.CryptoPro.JCP.tools.z a
INFO: JCP loaded.

java.lang.AssertionError: 
Expected: "GOST3410"
     got: "GOST3410DH"
 <Click to see difference>
	at org.junit.Assert.assertThat(Assert.java:780)
	at org.junit.Assert.assertThat(Assert.java:738)
	at foo.bar.cryptopro.PrivateKeyEntryTest.keyAlgorithmsShouldBeEqual(PrivateKeyEntryTest.java:23)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)


Код:
java.lang.IllegalArgumentException: private key algorithm does not match algorithm of public key in end entity certificate (at index 0)
	at java.security.KeyStore$PrivateKeyEntry.<init>(KeyStore.java:379)
	at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:459)
	at java.security.KeyStore.getEntry(KeyStore.java:1261)
	at foo.bar.cryptopro.PrivateKeyEntryTest.privateKeyEntryAvailable(PrivateKeyEntryTest.java:31)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)


Второй тест падает как раз по той же причине, по которой и первый.
Offline bor1  
#2 Оставлено : 14 февраля 2012 г. 16:50:10(UTC)
bor1

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

Группы: Участники
Зарегистрирован: 08.05.2008(UTC)
Сообщений: 41
Мужчина
Откуда: Крипто-Про

Поблагодарили: 1 раз в 1 постах
Возможно, вы действительно записали "чужой" сертификат в контейнер этого секретного ключа? например, с помощью CSP?
Offline zhe  
#3 Оставлено : 14 февраля 2012 г. 20:02:38(UTC)
zhe

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

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

Цитата:
Возможно, вы действительно записали "чужой" сертификат в контейнер этого секретного ключа? например, с помощью CSP?

На самом деле я действовал следующим образом:

1. Сгенерировал новый контейнер через панель управления JCP
2. Сохранил запрос на сертификат
3. С сохраненным запросом на сертификат я пошел в Тестовый УЦ и получил цепочку сертификатов
4. Цепочку сохранил в контейнер секретного ключа.

Все делалось через панель JCP.

Но даже и для только что сгенерированного контейнера с секретным ключом и самоподписным сертификатом ошибка воспроизводится - алгоритм секретного ключа GOST3410DH, алгоритм публичного ключа - GOST3410 из-за чего и возникает ошибка.
Offline badbob  
#4 Оставлено : 29 марта 2012 г. 16:13:56(UTC)
badbob

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

Группы: Участники
Зарегистрирован: 29.03.2012(UTC)
Сообщений: 2
Откуда: Новосибирск

И как исправить эту проблему?
Offline zhe  
#5 Оставлено : 7 июня 2012 г. 3:44:09(UTC)
zhe

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

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

Цитата:
И как исправить эту проблему?

Видимо, исправить могут только разработчики JCP.
А в целом, интересно было бы узнать, по какой причине отличаются алгоритм секретного ключа (GOST3410DH) и алгоритм публичного ключа (GOST3410)?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.