Добрый день,
Наше приложение A (на java8 в контейнере TomCat7) работает как сервер-поставщик данных для клиента B. Клиент B обращается к нашему приложению по защищенному каналу с двусторонней аутентификацией.
Обращений от клиента мы ждем на один из портов TomCatа. Коннектор настроен так, как написано в инструкции
https://support.cryptopr...pro-jtls-v-apache-tomcatКроме того, наше приложение А само является клиентом серверных приложений C и D. Тут тоже используется канал с двусторонней аутентификацией.
Чтобы приложение продолжало нормально работать со старыми сертификатами, мы пропатчили КриптоПро JCP 2.0.39014 так, как написано тут
https://support.cryptopr...-v-kriptopro-jcp-2039014И все работало хорошо, пока клиент B не решил проверить работу с сертификатом на ГОСТе 2012. Соединение не устанавливалось.
Я решила поменять параметры коннектора в TomCat.
<Connector port="***" maxHttpHeaderSize="24192" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true" clientAuth="true" algorithm="GostX509" keystoreProvider="JCP" sslProtocol="GostTLS"
keystoreType="HDImageStore" keyalg="GOST3410_2012_256" sigalg="GOST3411withGOST3410EL"
keystoreFile="***" keystorePass="***"
truststoreFile="***" truststorePass="***"
maxKeepAliveRequests="1"
ciphers="TLS_CIPHER_2012" sslEnabledProtocols="GostTLS" keepAliveTimeout="60000"/>
Возможно, неправильно? Я не нашла инструкции.
После этого клиент B успешно отработал по новому сертификату на ГОСТ 2012,
но перестали нормально работать соединения с серверами C и D. Почему-то настройки коннектора влияют на работу остальной библиотеки, которую мы используем из java-кода.
янв 17, 2019 7:43:36 PM ru.CryptoPro.ssl.w <init>
FINER: Validator() count of trusted certificates: 0
янв 17, 2019 7:43:36 PM ru.CryptoPro.ssl.am a
FINER: http-apr-7100-exec-1, handling exception: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
янв 17, 2019 7:43:36 PM ru.CryptoPro.ssl.am a
FINE: THROW
java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at ru.CryptoPro.ssl.w.<init>(Unknown Source)
at ru.CryptoPro.ssl.g.b(Unknown Source)
at ru.CryptoPro.ssl.g.checkServerTrusted(Unknown Source)
Видимо, он теперь хочет видеть только trusted сертификаты на ГОСТ 2012? Я не знаю.
Помогите, пожалуйста, настроить TomCat, чтобы можно было работать с сертификатами и по ГОСТ 2001, и по ГОСТ 2012.