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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Airat-asd  
#1 Оставлено : 13 июля 2021 г. 9:03:00(UTC)
Airat-asd

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

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

Добрый день!
Пожалуйста подскажите, поставлена задача реализовать TLS соединение: "мой клиент->сервер контрагента" и "сервер контрагента -> мой клиент"
Вводные данные:
1. java 11
2. реализация в микросервисе (Spring-boot 2.xx)
3. сервер jetty-9.4.27.v20200227
4. есть ключ КриптоПро в папке mykey.000 и два сертификата: корневой и тестовый (выпущен для разработки и тестов)
5. ОС - centOS

Tестовый сертификат зарегистрирован на сервере контрагента.

Не совсем ясно с чего начинать, какие продукты КриптоПро использовать? Как настраивать spring, делать кастомный коннектор или через application.properties можно настроить?
Offline Airat-asd  
#2 Оставлено : 14 июля 2021 г. 13:59:03(UTC)
Airat-asd

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

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

Выяснил, что через application.properties SSL настройки не сохраняются. Для начала попробовал в коде создать sslContext:

Код:

    public SSLContext prepareSslContext() throws KeyStoreException, CertificateException, IOException, NoSuchAlgorithmException, UnrecoverableKeyException, KeyManagementException, NoSuchProviderException {
        log.trace("start method: prepareSslContext");
        Security.addProvider(new JCP());
        Security.addProvider(new RevCheck()); // RevCheck
        Security.addProvider(new CryptoProvider()); // JCryptoP
        Security.addProvider(new ru.CryptoPro.ssl.Provider()); // JTLS

        KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
        keyStore.load(null, null);

        KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        kmf.init(keyStore, password.toCharArray());

        KeyStore trustedKeyStore = KeyStore.getInstance(JCP.CERT_STORE_NAME);
        trustedKeyStore.load(null, null);
        TrustManagerFactory trustAllCerts = TrustManagerFactory.getInstance("GostX509");
        trustAllCerts.init(trustedKeyStore);

        SSLContext sslContext = SSLContext.getInstance("GostTLS");       
        sslContext.init(kmf.getKeyManagers(), trustAllCerts.getTrustManagers(), null);

        return sslContext;
    }


Получаю ошибку java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: TLSv1, provider: JTLS, class: ru.CryptoPro.ssl.SSLContextImpl$TLS10Context)
Почему протокол GostTLS не находит?

Код:
14-07-21 15:53:49 TRACE [main] com.example.demo.Demo                    : start method: prepareSslContext
14-07-21 15:53:49 INFO  [main] ru.CryptoPro.JCP.tools.JCPLogger         : JCP license isServer:  true
------------------------
14-07-21 15:53:50 INFO  [main] ru.CryptoPro.JCP.tools.JCPLogger         : Loading JCP 2.0.40132-A
14-07-21 15:53:50 INFO  [main] ru.CryptoPro.JCP.tools.JCPLogger         : JCP loaded.
KeyManagerFactory.getDefaultAlgorithm()=GostX509
key=CryptoPro Gost PrivateKey (GOST3410DH_2012_256) with parameters: 1.2.643.7.1.1.6.1
14-07-21 15:53:50 INFO  [main] ru.CryptoPro.ssl.SSLLogger               : %% adding as private keys %%
SSLContext.getInstance
14-07-21 15:53:51 WARN  [main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demo' defined in file [D:\JAVA\demo\target\classes\com\example\demo\Demo.class]: Invocation of init method failed; nested exception is java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: TLSv1, provider: JTLS, class: ru.CryptoPro.ssl.SSLContextImpl$TLS10Context)
14-07-21 15:53:52 WARN  [main] z.r.AsyncReporter$BoundedAsyncReporter   : Timed out waiting for in-flight spans to send
14-07-21 15:53:52 INFO  [main] org.eclipse.jetty.server.session         : node0 Stopped scavenging
14-07-21 15:53:52 INFO  [main] o.e.jetty.server.handler.ContextHandler  : Stopped o.s.b.w.e.j.JettyEmbeddedWebAppContext@67689c81{application,/,[file:///C:/Users/ZagretdinoAF/AppData/Local/Temp/jetty-docbase.803457085807427219.8080/],UNAVAILABLE}
14-07-21 15:53:52 INFO  [main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
14-07-21 15:53:52 ERROR [main] o.s.boot.SpringApplication               : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demo' defined in file [D:\JAVA\demo\target\classes\com\example\demo\Demo.class]: Invocation of init method failed; nested exception is java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: TLSv1, provider: JTLS, class: ru.CryptoPro.ssl.SSLContextImpl$TLS10Context)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:882) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
	at com.example.demo.DemoApplication.main(DemoApplication.java:10) ~[classes/:na]
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: TLSv1, provider: JTLS, class: ru.CryptoPro.ssl.SSLContextImpl$TLS10Context)
	at java.base/java.security.Provider$Service.newInstance(Provider.java:1922) ~[na:na]
	at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:236) ~[na:na]
	at java.base/sun.security.jca.GetInstance.getInstance(GetInstance.java:164) ~[na:na]
	at java.base/javax.net.ssl.SSLContext.getInstance(SSLContext.java:168) ~[na:na]
	at com.example.demo.Demo.prepareSslContext(Demo.java:140) ~[classes/:na]
	at com.example.demo.Demo.afterPropertiesSet(Demo.java:47) ~[classes/:na]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792) ~[spring-beans-5.2.5.RELEASE.jar:5.2.5.RELEASE]
	... 16 common frames omitted

Offline Евгений Афанасьев  
#3 Оставлено : 27 июля 2021 г. 19:44:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
Здравствуйте.
А модуль cpSSL.jar есть в classpath?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.