barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком JCP. Показать все сообщения
Показаны сообщения с ярлыком JCP. Показать все сообщения

вторник, 4 декабря 2018 г.

КриптоПро JCP 2: ошибка ru.CryptoPro.JCP.tools.SelfTester.run SelfTester's test №16 failed

Проблема

Есть приложение, использующее КриптоПро JCP 2 для подписания XML. После развертывания на новом сервере при попытке подписания падает ошибка:
04-Dec-2018 18:21:54.093 WARNING [SelfTester] ru.CryptoPro.JCP.tools.SelfTester.run SelfTester's test №16 failed
 ru.CryptoPro.JCP.tools.SelfTesterException: Error during store working
at ru.CryptoPro.JCP.tools.SelfTests$TestDigestStore.run(Unknown Source)
at ru.CryptoPro.JCP.tools.SelfTester.b(Unknown Source)
at ru.CryptoPro.JCP.tools.SelfTester.a(Unknown Source)
at ru.CryptoPro.JCP.tools.SelfTester.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: ru.CryptoPro.JCP.tools.SelfTesterException: Error during store working
at ru.CryptoPro.JCP.tools.SelfTests.testDigestStore(Unknown Source)
... 5 more
Caused by: ru.CryptoPro.JCP.tools.CPVerify.CPVerifyException: Error during store working
at ru.CryptoPro.JCP.tools.CPVerify.DigestStoreDefault.<init>(Unknown Source)
... 6 more  
При последующих попытках падает:
SelfTester Error: some test crashed twice in a row, usage of JCP is no longer available
ru.CryptoPro.JCP.tools.SelfTesterException: SelfTester Error: some test crashed twice in a row, usage of JCP is no longer available
Причина

У пользователя, от имени которого работает приложение, не было прав на запись в директорию /var/opt/cprocsp/tmp. После выдачи прав стала падать ошибка "Permission denied" при попытке работы с какими-то файлами в этой папке, имена файлов начинаются с ".". У этих файлов владельцем был root, поэтому ошибка закономерна. После удаления этих файлов все заработало.

понедельник, 7 сентября 2015 г.

понедельник, 9 апреля 2012 г.

Использование криптопровайдеров в веб-приложениях на Tomcat и размещение библиотек криптопровайдера

Столкнувшись с необходимостью использовать в веб-приложении криптопровайдеры (КриптоПРО JCP и Bouncy Castle), я пришел к следующему выводу относительно размещения библиотек криптопровайдера: их не стоит размещать в war-файле веб-приложения, т.к. при переразвертывании приложения без перезапуска веб-сервера криптопровайдер работать не будет. В случае с JCP библиотеки вообще нужно размещать в lib/ext JRE, которое используется Томкатом (JCP туда собственно сам устаналивается скриптом установки), а для Bouncy Castle подойдет размещение библиотеки в /lib томката.

четверг, 5 апреля 2012 г.

Корректное развертывание веб-приложения, использующего КриптоПРО JCP

Методом проб и ошибок была определена следующая конфигурация, позволяющая корректно развернуть на Tomcat 6 веб-приложение, использующее КриптоПРО JCP 1.0.49 (как для разработки, так и для продуктивной среды):
1) JCP устанавливается с указанием в качестве jre папки /jre в директории JDK, используемого томкатом
2) В /lib/ext этого же JRE кладутся следующие jar-ники:
  • xmlsec-1.5.1.jar (или 1.2.1, но 1.5.1 предпочтительнее, т.к. в нём в лог не валятся сообщения при каждой проверке подписи, т.к. уровень логирования таких сообщений исправлен с INFO на DEBUG / WARNING)
  • commons-logging-1.1.1.jar (или commons-logging-1.1.jar)
  • xalan-2.6.0.jar
  • serializer-2.7.1.jar
  • xercesImpl-2.9.1.jar
  • xml-apis-1.3.04.jar
  • xsltc.jar
Последний брался из дистрибутива Xalan 2.7.1 (однако с xalan.jar из этого же дистрибутива JCP работать не будет по этой причине). Serializer, xercesImpl и xml-apis взяты из дистрибутива xmlsec-1.5.1.
3) В сам war-файл веб-приложения вышеуказанные библиотеки (как и библиотеки JCP) включать не нужно. 

java.lang.ClassNotFoundException: org.apache.xpath.compiler.FuncLoader при запуске приложения, использующего КриптоПРО JCP, при том, что xalan.jar в Classpath есть

Проблема:

При запуске приложения, использующего КриптоПРО JCP, валится исключение:
java.lang.ClassNotFoundException: org.apache.xpath.compiler.FuncLoader
, при том, что в Classpath xalan.jar и все необходимые ему jar-ники есть.

Причина:

В новых версиях Xalan (по крайней мере, в 2.7.1) действительно нет класса FuncLoader. 

Решение:

Использовать Xalan версии 2.6.