Здравствуйте. Есть проект на linux на стеке технологий SpringBoot, OpenJDK8, КриптоПро CSP 4.0 R4 и Java CSP и JTLS (5.0.40424). Проект корректно работает - подписывает и проверяет подписи.
Поставили задачу перевести его на Windows. Заодно решил обновить стек технологий - OpenJDK11, КриптоПро CSP 5.0 и Java CSP и JTLS (5.0.40363-A). В документации написано, что устанавливать JCP уже не надо. По её рекомендации прописал в C:\Projects\jdk-11\conf\security\java.security 14-16 провайдеры:
security.provider.13=SunPKCS11
security.provider.14=JCP
security.provider.15=RevCheck
security.provider.16=JCSP
Jar-ники JCP в проект добавляю как тут на форуме советовали через локальный maven-репозиторий.
Заполнение репозитория:
Код:mvn install:install-file -DgroupId=ru.cryptopro -DartifactId=jcp_a -Dversion=5.0 -Dfile=C:\Projects\java-csp-5.0.40363-A\JCP.jar -Dpackaging=jar -DgeneratePom=true -DlocalRepositoryPath=C:\Projects\rep
........
Подключение в pom.xml:
Код:<repositories>
<repository>
<id>localRepo_main</id>
<url>file://C:/Projects/rep</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>ru.CryptoPro</groupId>
<artifactId>jcp_a</artifactId>
<version>5.0</version>
</dependency>
.............
Запускаю проект в InelliJ IDEA - всё работает идеально.
Дальше начинается странное:
1) Собираю в IDEA jar-пакет.
2) Запускаю его командой C:\Projects\jdk-11\bin\java.exe -jar auth-0.0.1.RELEASE.jar. Так как я настроил чтобы при старте проекта выводился перечень провайдеров
Код: Provider[] sp = Security.getProviders();
for(Provider i : sp){
System.out.println(i.getName());
}
то при старте наблюдаю ошибки, а в перечне провайдеров отсутствуют JCP, RevCheck, JCSP. Что странно, при запуске из IDEA эти провайдеры были.
3) В соответствии с документацией использую второй способ добавления криптопровайдеров - добавляю в код:
Код: Security.addProvider(new JCP());
Security.addProvider(new RevCheck());
Security.addProvider(new JCSP());
4) Опять запускаю jar-ник. Теперь в консоль выводятся дополнительные три провайдера. Но вываливается следующая ошибка:
Код:ru.CryptoPro.JCP.tools.JCPLogger test 31 crashed twice
ru.CryptoPro.JCP.tools.JCPLogger Corrupted: ru.CryptoPro.JCP.KeyStore.JCPKeyStore
Ошибка происходит на строчке
keyStore.load(null, null);
с детализацией
ru.CryptoPro.JCP.tools.SelfTesterException: null
Не подскажете в чём может быть дело? У меня пока возникло подозрение, что jar-ник с зависимостями JCP под 11ю JAVA надо как-то нестандартно собирать.
Отредактировано пользователем 10 января 2020 г. 10:09:44(UTC)
| Причина: Не указана