В соответствии с МР СМЭВ 2.х для сообщений сущест следующие виды ЭП:
- ЭП-СП SOAP-сообщения С вложениями в формате PKCS#7. Для формирования и проверки ЭП-СП вложений SOAP-сообщения библтотека предоставляет утилитарный класс ru.smevx.crypto.smev2.cms.PKCS7Utils.
- ЭП-СП SOAP-сообщения БЕЗ вложений в формате XMLDSign. Для формирования и проверки ЭП-СП вложений библтотека предоставляет утилитарный класс ru.smevx.crypto.smev2.xmldsig.XmlDSignUtils.
- ЭП-ОВ SOAP-сообщения в формате WS-Security. Для формирования и проверки ЭП-ОВ библтотека предоставляет утилитарный класс ru.smevx.crypto.smev2.wss.WSSecurityUtils.
В соответствии с МР СМЭВ 3.х для сообщений сущест следующие виды ЭП:
- ЭП-СП (//AttachmentHeaderList/AttachmentHeader/SignaturePKCS7 или //RefAttachmentHeaderList/RefAttachmentHeader/SignaturePKCS7) вложений в формате PKCS#7. Для формирования и проверки ЭП-СП вложений сообщения формата СМЭВ 3.х библтотека предоставляет утилитарный класс ru.smevx.crypto.smev3.cms.PKCS7Utils.
- ЭП-СП (//SenderProvidedRequestData/PersonalSignature) и ЭП-ОВ (//CallerInformationSystemSignature) xml-элементов сообщений в формате ru.smevx.crypto.smev3.xmldsig.XmlDSignUtils. Для формирования и проверки ЭП-СП и ЭП-ОВ xml-элементов сообщения формата СМЭВ 3.х библтотека предоставляет утилитарный класс XmlDSignUtils.
Проверить корректность ЭП в соответствии с МР можно с помощью тестовых сервисов СМЭВ:
- для СМЭВ 2.х
Сервис проверки подписи
SignatureTool - для СМЭВ 3.х
Проверка XML-сообщения на соответствие схемам сервиса СМЭВ
- JDK 1.8.x;
- КриптоПро JCP версии 2.0.x.
- Устанавливаем JDK 1.8.x, если она не установлена в системе.
- Скачиваем или получаем иным способом нужную версию КриптоПРО 2.0.х (библиотека сестировалась с КриптоПРО JCP версией 2.0.39267) http://www.cryptopro.ru/.
- Распаковываем архив.
- Переходим в папку в которую распаковался архив.
- Запускаем setup_console.bat либо setup_console.sh, формат команды запуска:
[скрипт-нисталлятор] [путь до jre] [ключ] [владелец лицензии]
sh sudo install.sh /opt/jdk-jcp/jre XXXXX-XXXXX-XXXXX-XXXXX-XXXXX "\"Название организации, на которую выдана лицензия\""
- Копируем все файлы из папки dependencies, внутри папки в которую распаковался архив, в патку [путь до jre]/lib/ext.
- Проверяем, что [путь до jre]/lib/ext находится библиотека xmlsec-1.5.х.jar (не xmlsec-1.4.х.jar).
- Установливаем ключи в хранилище с помощью панели управления Крипто-Про, которая находится в папке, в которую распаковался архив, ControlPane.sh / ControlPane.bat:
-- в Linux, OSX можно скопировть папку контейнера /var/opt/cprocsp/keys/${USER};
-- в Windows - %папка_пользователя\Local Settings\Application Data\Crypto Pro.
Ошибки при установке версии из-за того, что не хватало прав записи файлов в:
- папку с jre;
- /var/tmp;
- /var/opt/cprocsp.
Внятных сообщений об ошибке инсталлятор не выдает, выдает стек исключения с IOException. Кроме этого падал какой-то внутренний тест JCP, проверяющий корректность установки.
- деинсталлировать КриптоПРО и убедиться, что все файлы КриптоПРО удалились из JRE;
- удалить ~/.java/.userPrefs/ru;
- удалить $jre/.systemPrefs/ru (где $jre - папка, в которой находится jre);
- установить Крипто-Про JCP.
Сборка осуществляется командой:
./gradlew clean build publishToMavenLocal
При сборке проекта выполнение тестов по-умолчанию выключено!
Для сборки проекта с тестами необходимо:
1 Установить тестовый ключевой контейнер КритпроПРО в сооветствии с п.3.
2 В файле ./src/test/java/ru/smevx/crypto/test/SignVerifyTest.java
в строках
privateKey = (PrivateKey) keyStore.getKey("Alias", "Password".toCharArray());
cert = (X509Certificate) keyStore.getCertificate("Alias");
заменить значения Alias и Password на параметры доступа к тестовому ключевому контейнеру.
Сборка с выполнением тестов осуществляется командой:
./gradlew clean build test publishToMavenLocal
После сборки в директории ./build/libs должен появится файил smevx-crypto-<версия проекта>.jar.
Форум КриптоПро
Apache CXF и ЭЦП для SOAP сообщений СМЭВ
Побег из Крипто Про. Режиссерская версия, СМЭВ-edition
СМЭВ 3. Электронная подпись сообщений на Java и КриптоПро