Статус: Участник
Группы: Участники
Зарегистрирован: 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)
Подскажите в какую сторону копать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. 1. server.store действительно формата CertStore? 2. server.store создали в той же версии JCP, что используете сейчас? |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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")
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
CertStore в более новой версии jcp отличается от аналогичного в старых, поэтому не работало. Отключите детальное логирование и сообщений не будет. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close