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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline HelenKlimova  
#1 Оставлено : 15 февраля 2016 г. 7:54:18(UTC)
HelenKlimova

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Добрый день!

Опять вернулись к необходимости шифрования данных. Столкнулись снова с проблемой.
Если мы библиотеки ASN1P и asn1rt добавляем в приложение, то при шифровании возникает ClassCastException ошибка в строке
Цитата:
final AlgorithmIdentifier id = (AlgorithmIdentifier) algid.getDecoded();


Если мы их не добавляем, а делаем модуль для jboss, в котором прописываем необходимые class path, то возникает ошибка при деплое
Цитата:

Caused by: java.lang.NoClassDefFoundError: com/objsys/asn1j/runtime/Asn1Type
at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.7.0_65]
at java.lang.Class.privateGetDeclaredFields(Unknown Source) [rt.jar:1.7.0_65]
at java.lang.Class.getDeclaredFields(Unknown Source) [rt.jar:1.7.0_65]
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:68) [jboss-as-server-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14]
... 10 more
Caused by: java.lang.ClassNotFoundException: com.objsys.asn1j.runtime.Asn1Type from [Module "deployment.***.ear.cryptoservice.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final-redhat-2]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final-redhat-2]


К Asn1Type нигде явно не обращаемся, это видимо внутренние зависимости. Прописывание этого пути в class path ничего не дает, ошибка та же самая.
Пробовали делать как один модуль для всех библиотек крипто-про, так и выносить asn1rt в отдельный модуль. Результат тот же.
Будем очень благодарны, если кто-нибудь подскажет, в чем может быть проблема и куда посмотреть.


Offline basid  
#2 Оставлено : 15 февраля 2016 г. 8:25:57(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,113

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
Крипто-Про JCP работает в качестве расширения.
Это означает, что администратор целевой системы выполняет установку на всех используемых JRE/JDK, а разработчик рассматривает JCP как зависимость времени выполнения - она есть и всё тут. Никаких модулей делать не надо и класс-путя прописывать - тоже не надо.
Единственная проблема может быть если (вдруг) используемый сервер приложений откажется грузить классы из каталога расширений JRE/JDK. Но, вроде, такого не должно быть. Пока не выпилят сам механизм расширений.
Offline HelenKlimova  
#3 Оставлено : 15 февраля 2016 г. 8:40:15(UTC)
HelenKlimova

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Автор: basid Перейти к цитате
Крипто-Про JCP работает в качестве расширения.
Это означает, что администратор целевой системы выполняет установку на всех используемых JRE/JDK, а разработчик рассматривает JCP как зависимость времени выполнения - она есть и всё тут. Никаких модулей делать не надо и класс-путя прописывать - тоже не надо.
Единственная проблема может быть если (вдруг) используемый сервер приложений откажется грузить классы из каталога расширений JRE/JDK. Но, вроде, такого не должно быть. Пока не выпилят сам механизм расширений.

Это конечно замечательно, но без прописывания путей все же не работает.
И даже с путями почему-то отказывается находить пути в библиотеке, лежащей в jdk, в нашем случае asn1rt.jar. Приложение даже не деплоится.


Offline basid  
#4 Оставлено : 15 февраля 2016 г. 11:29:08(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,113

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
https://docs.jboss.org/jbossweb/...html]Class Loader HOW-TO - JRE-расширения не требуется "пакетировать" точно также, как не требуется пакетировать java.lang или java.util.
Конкретно Oracle JRE ничего не прячет и после корректной установки - всё доступно при указании полностью определённого имени класса. Ну или после обычного импорта.
Offline HelenKlimova  
#5 Оставлено : 15 февраля 2016 г. 11:42:07(UTC)
HelenKlimova

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Автор: basid Перейти к цитате
https://docs.jboss.org/jbossweb/...html]Class Loader HOW-TO - JRE-расширения не требуется "пакетировать" точно также, как не требуется пакетировать java.lang или java.util.
Конкретно Oracle JRE ничего не прячет и после корректной установки - всё доступно при указании полностью определённого имени класса. Ну или после обычного импорта.

Ссылка не работает. Возможно, так https://docs.jboss.org/jbossweb/.../class-loader-howto.html
Если не делать модулей, то все равно ошибка та же, не находится класс Asn1Type при деплое. Пробовали уже всяко.
Offline basid  
#6 Оставлено : 15 февраля 2016 г. 16:33:27(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,113

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
"Меня опять терзают смутные сомнения", что в JRE/JDK не работают тесты JCP.
Когда они заработают - "волшебным образом" исчезнут проблемы развёртывания. Кроме тех, которые будут вызваны дублированием классов.
Offline HelenKlimova  
#7 Оставлено : 16 февраля 2016 г. 5:48:28(UTC)
HelenKlimova

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Автор: basid Перейти к цитате
"Меня опять терзают смутные сомнения", что в JRE/JDK не работают тесты JCP.
Когда они заработают - "волшебным образом" исчезнут проблемы развёртывания. Кроме тех, которые будут вызваны дублированием классов.

Попробовали поставить приложение на боевой сервер. Развернулось. Это уже здорово, функциональность пока не проверяли. Но у разработчиков по-прежнему если убрать библиотеки из конечного ear файла, приложение при деплое выдает ошибку ClassNotFound. Тут еще момент такой, что большинство разработчиков не имеют установленных криптопровайдеров. Прописывание путей в модуле jboss обычно помогает, по крайней мере с JCP, JCryptoP и cpSSL все работает. А вот с asn1rt что-то непонятное.
Offline basid  
#8 Оставлено : 16 февраля 2016 г. 15:29:15(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,113

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
Наймите толкового инструментальщика (devops-а) и пусть он объяснит вашим разработчикам про разницу между компиляцией, сборкой и развёртыванием приложения.
Если вам надо "просто откомпилировать", то классы, от которых зависит наш код должны быть "просто доступны". В минимальном варианте, если вы распакуете "всё используемое" в classes/, то простое:
Код:
javac ... -cp classes -d bin src/*.java

создаст минимум, с которым можно работать дальше.

Если вам требуется "что запускать" (модульные тесты или отладку), можно ничего не пакетировать, но требуется "соблюсти требования всего используемого".
В случае CryptoPro JCP это означает чтение раздела для администраторов, где расписана процедура установки. Вы можете написать собственный интерфейс, но не можете обойтись без процедуры установки.

Вы можете (должны) установить CryptoPro JCP во JRE/JDK, где она используется хотя бы для компиляции. Это гораздо проще, чем пытаться "объяснить" средам разработки/сборки, что "салат не трогать".
Задавать серийные номера потребуется там, где "что-то запускается".
Если "окучить" всё, что запускает(ся)" - дорого, то выделяете отдельную машину на которой ведётся отладка и тестирование.

P.S. Нет, я не инструментальщик, но всё это - азы сисадминства.
Offline HelenKlimova  
#9 Оставлено : 18 февраля 2016 г. 11:08:03(UTC)
HelenKlimova

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Автор: basid Перейти к цитате
Наймите толкового инструментальщика (devops-а) и пусть он объяснит вашим разработчикам про разницу между компиляцией, сборкой и развёртыванием приложения.


Про компиляцию и сборку мы не говорили.
Итак, чтобы было понятно. У нас система работает второй год. Используется подписание сообщений, установление tls. Проблем ни с чем нет. И только с шифрованием так и не смогли разобраться. Была возможность обходиться без шифрования, обходились. Сейчас оно необходимо.

Убрали все крипто-библиотеки из приложения, поставили на сервер. Пробуем функционал.

1. Если не делать модуль для jboss совсем, то ошибка возникает уже при деплое, ругается на все подряд не найденные классы.

2. Если добавляем библиотеки ASN1P и asn1rt в приложение, то подписание и установление tls работает, но при шифровании происходит ClassCastException

Цитата:
ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AlgorithmIdentifier cannot be cast to ru.CryptoPro.JCP.ASN.PKIX1Explicit88.AlgorithmIdentifier


3. Если не добавляем библиотека ASN1P и asn1rt в приложение и в модулях для jboss не указаны классы ASN, то ошибка происходит уже при подписании сообщения:

Цитата:
Caused by: java.lang.NoClassDefFoundError: ru/CryptoPro/JCP/ASN/CryptographicMessageSyntax/ContentInfo


4. Если не добавляем библиотека ASN1P и asn1rt в приложение и указываем классы в модуле, то при том же подписании ошибка:

Цитата:
Caused by: java.lang.LinkageError: loader constraint violation: when resolving field "contentType" the class loader (instance of org/jboss/modules/ModuleClassLoader) of the referring class, ru/CryptoPro/JCP/ASN/CryptographicMessageSyntax/ContentInfo, and the class loader (instance of sun/misc/Launcher$ExtClassLoader) for the field's resolved type, ContentInfo, have different Class objects for that type


Понимаем, что эта ошибка потенциально может быть, когда где-то 2 разных инстанса столкнулись, но вот только где? На сервере библиотеки лежат в одном экземпляре, в приложение они не включены.

5. В IDE при запуске тестов все работает: и tls, и подписание, и шифрование.

6. Пробовали шифровать с использованием CAdES, но не на все сертификаты партнеров шифруется, на некоторых ругается на невозможность выработать KeyAgreement

И в сухом остатке опять вопрос, можно ли что-нибудь сделать и куда посмотреть?
Тесты на сервере запускали, verify делали. Все хорошо.
Offline basid  
#10 Оставлено : 19 февраля 2016 г. 16:37:00(UTC)
basid

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.11.2010(UTC)
Сообщений: 1,113

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 153 раз в 138 постах
Для шифрования, как минимум, необходимо разблокировать "стойкие алгоритмы" (Unlimited Strength Jurisdiction Policy Files в разделе загрузок.
Делалось?
Ещё раз повторю, что:
1. Не надо что никому ничего подкладывать;
2. Надо читать документацию на продукт. Всю.

Кроме того, не забываем общую политику Крипто-Про: всё, что требует доступа к закрытым ключам - требует действующей лицензии. Если шифрование делается не на пароле - понадобится доступ к обоим частям ключевой пары.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.