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

Уведомление

Icon
Error

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

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день!

Пробую запустить ГОСТ TLS.
Сервер: SpringBoot 2.7.3, Tomcat 9.0.65, JCP
Ключи сгенерировал через JCP панель, там же и хранилище сертификатов.

Использовал документацию из состава JCP для Tomcat 9+

Реализация через Connector:
Перенес java классы из JCPTomcatAdapter к себе в проект

Код:
@Bean
    public ServletWebServerFactory tomcatServletWebServerFactory(@Value("${server.port:8080}") int port) {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();

        factory.addAdditionalTomcatConnectors(getConnector(port));
        factory.setErrorPages(Collections.singleton(new ErrorPage(BasicErrorController.ERROR_URI_PREFIX)));

        return factory;
    }

    private static Connector getConnector(int port) {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(port);
        connector.setProperty("sslImplementationName", "ru.cft.fsg.crypt.config.jsse.JCPJSSEImplementation");
        connector.setSecure(true);
        connector.setScheme("https");
        connector.setProperty("SSLEnabled", "true");

        SSLHostConfig hostConfig = new SSLHostConfig();
        hostConfig.setProtocols("TLSv1");
        hostConfig.setSslProtocol("GostTLS");

        hostConfig.setTruststoreFile("C:\\_GOST_STORE\\server.store");
        hostConfig.setTruststorePassword("server");
        hostConfig.setTruststoreProvider("JCP");
        hostConfig.setTruststoreType("CertStore");
        hostConfig.setCertificateVerification("true");

        hostConfig.setCertificateKeystoreFile("C:\\_GOST_STORE\\server.store");
        hostConfig.setCertificateKeystorePassword("server");
        hostConfig.setCertificateKeystoreProvider("JCP");
        hostConfig.setCertificateKeystoreType("HDImageStore");

        connector.addSslHostConfig(hostConfig);
        return connector;
    }


Но при запуске получаю исключение:
Лог: service-start-error.log (23kb) загружен 3 раз(а).

Код:
Caused by: java.io.IOException: Неверный формат хранилища.
	at ru.CryptoPro.JCP.KeyStore.TrustStore.engineLoad(Unknown Source)
	at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineLoad(Unknown Source)
	at java.base/java.security.KeyStore.load(KeyStore.java:1479)
	at org.apache.tomcat.util.security.KeyStoreUtil.load(KeyStoreUtil.java:69)
	at org.apache.tomcat.util.net.SSLUtilBase.getStore(SSLUtilBase.java:217)
	at org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore(SSLHostConfigCertificate.java:207)
	at ru.cft.fsg.crypt.config.jsse.JCPSSLUtilBase.getKeyManagers(JCPSSLUtilBase.java:126)
	at ru.cft.fsg.crypt.config.jsse.JCPSSLUtilBase.createSSLContext(JCPSSLUtilBase.java:114)
	at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:105)


Подскажите в какую сторону копать?
Offline Евгений Афанасьев  
#2 Оставлено : 2 декабря 2022 г. 13:16:45(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
1. server.store действительно формата CertStore?
2. server.store создали в той же версии JCP, что используете сейчас?
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
EugeneNSK оставлено 06.12.2022(UTC)
Offline EugeneNSK  
#3 Оставлено : 6 декабря 2022 г. 10:28:00(UTC)
EugeneNSK

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

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

Сказал(а) «Спасибо»: 3 раз
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте.
1. server.store действительно формата CertStore?
2. server.store создали в той же версии JCP, что используете сейчас?



Добрый день!

1. Да, server.store верного формата. Создавалось через JCP панель.
2. Тут вы правы, библиотеки были немного другие. Перегенерировал заново хранилище сертификатов и ключи, на всякий случай.

Сервис успешно запустился, спасибо.

Чуть смущает сообщение в логе:
Код:

2022-12-06 14:15:57.578 3755 [main] [/] DEBUG r.C.s.SSLLogger.thrown - THROW
java.security.UnrecoverableKeyException: Password is not valid.
	at ru.CryptoPro.JCP.KeyStore.cl_4.e(Unknown Source)
	at ru.CryptoPro.JCP.KeyStore.cl_4.a(Unknown Source)
	at ru.CryptoPro.JCP.KeyStore.ContainerStore.a(Unknown Source)
	at ru.CryptoPro.JCP.KeyStore.ContainerStore.engineGetKey(Unknown Source)
	at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineGetKey(Unknown Source)
	at java.base/java.security.KeyStore.getKey(KeyStore.java:1057)
	at ru.CryptoPro.ssl.cl_38.<init>(Unknown Source)
	at ru.CryptoPro.ssl.KeyManagerFactoryImpl$GostX509.engineInit(Unknown Source)
	at java.base/javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:271)
	at ru.cft.fsg.crypt.config.jsse.JCPSSLUtilBase.getKeyManagers(JCPSSLUtilBase.java:130)
	at ru.cft.fsg.crypt.config.jsse.JCPSSLUtilBase.createSSLContext(JCPSSLUtilBase.java:114)
	at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:105)


Но сервис работает.


С провайдером JCSP тоже проверил, запуск успешный.
Как я понял, для обоих провайдеров указывается путь до TruststoreFile:
Код:
hostConfig.setCertificateKeystoreFile("C:\\_GOST_STORE\\server.store")

Offline Евгений Афанасьев  
#4 Оставлено : 6 декабря 2022 г. 10:53:13(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
CertStore в более новой версии jcp отличается от аналогичного в старых, поэтому не работало.
Отключите детальное логирование и сообщений не будет.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.