Библиотека формирования и проверки электронной подписи для СМЭВ 2.х и 3.х.
Библиотека предназначена для создания и проверки ЭП СМЭВ 2.х и 3.х.
В соответствии с МР СМЭВ 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.
Проверить корректность ЭП в соответствии с МР можно с помощью тестовых сервисов СМЭВ:
1. Необходимое ПО
- JDK 1.8.x;
- КриптоПро JCP версии 2.0.x.
2. Установка КриптоПро JCP версии 2.х
3. Установка ключевых контейнеров
- Установливаем ключи в хранилище с помощью панели управления Крипто-Про, которая находится в папке, в которую распаковался архив, 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.
4. Сборка библиотеки
Сборка осуществляется командой:
./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 и КриптоПро