Реализация JavaTLS совместима с КриптоПро CSP версии 3. 0 и выше, и позволяет использовать защиту данных передаваемых по сети в серверах приложений, таких как:
- TomCat;
- IBM WebSphere Application Server (версии 8.5);
- Glassfish (версии 4, payara);
- Jetty (версии 9.3.1);
- JBoss (версии 6.1.0).
- JavaTLS (JTLS)
- Glassfish-gost-tls
- Как вызывается Revocation Provider
- Как работает Revocation Provider
- Назначение КриптоПро CSP
- Поддерживаемые алгоритмы
- Поддерживаемые технологии хранения ключей
- Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
- Классические пассивные USB-токены и смарт-карты
- Инструменты КриптоПро
- Поддерживаемое программное обеспечение
- Интеграция с платформой КриптоПро
- Операционные системы и аппаратные платформы
- Интерфейсы для встраивания
- Производительность на любой вкус
- Регулирующие документы
- Настройка и запуск Java Gateway, создание проекций классов
- Тестирование веб-сервиса
- Дополнительные библиотеки Java
- Формирование ЭЦП для исходящих SOAP-сообщений веб-сервиса
- Размещение секретного ключа и сертификата на виртуальной дискете на сервере системы
- Проверка ЭЦП во входящих SOAP-сообщениях
- Веб-сервисы с поддержкой ЭЦП на базе криптографии ГОСТ
JavaTLS (JTLS)
Реализация JavaTLS совместима с КриптоПро CSP версии 4. 0 и выше, и позволяет использовать защиту данных передаваемых по сети в серверах приложений, таких как:
В мобильной операционной системе Аврора реализована поддержка российских криптографических алгоритмов.
В дополнение к встроенной в ОС поддержке протокола ГОСТ TLS, появилась возможность использования электронной подписи в браузере благодаря предустановленному расширению, которое поддерживает работу с комплектом СКЗИ КриптоПро CSP 5. 0 R3. Для использования новых возможностей пользователям предыдущих версий требуется обновить ОС до релиза 4.
Пользователи ОС Аврора могут подписывать документы разных форматов при работе с порталами и системами электронного документооборота непосредственно в браузере на мобильном устройстве, храня закрытый ключ в защищенном хранилище КриптоПро CSP на устройстве или на внешнем токене. Это позволяет использовать привычные пользователям ПК сценарии работы с электронной подписью на корпоративных доверенных мобильных устройствах.
Glassfish-gost-tls
- Задать конфигурацию в файле jsse.properties. Пояснения: protocol=GostTLS // не трогаем
protocols=GostTLS // не трогаем
algorithm=GostX509 // не трогаем
ciphers=TLS_CIPHER_2001 // не трогаемkeyAlias=localhost // псевдоним ключа/сертификата
keypass=123456 // пароль к кейстору
keystorePass=123456 // то же самое, что и предыдущее
keystore=L:\.keystore // пусть к кейстору. Ображаем внимание на слэши для Windows.
keystoreType=FloppyStore //либо HDImageStoreclientauth=true // true – для двусторонней аутентификации
truststorePass=123456 // пароль к траст-стору
truststore=L:\.keystore //пусть к траст-сторe. Также обращаем внимание на слэши.sigalg=GOST3411withGOST3410EL //не трогаем, даже не уверен, что атрибут используется
keyalg=GOST3410 //не трогаем, даже не уверен, что атрибут используется - Собрать jar и положить его в папку lib на сервере.
Где %CONFIG_NAME% – имя конфига, а %LISTENER_NAME% – имя листенера.
Либо то же самое,но в файле domain. xml (конфигурация домена Glassfish). В итоге в файле domain. xml будет что-то такое:
Для ОС Windows везде обращаем внимение на слэши в путях к файлам.
Коммерческой организации, Государственного учреждения
Право на использование Базовая КриптоПро JavaTLS версии 2. 0 на одном сервере
Библиотека Trusted Java – это набор криптоалгоритмов, реализованных в соответствии с требованиями архитектур JSSE и JCE. Trusted Java реализует в Java-приложениях сертифицированные криптографические алгоритмы, предоставляемые криптопровайдером КриптоПро CSP.
При работе с банковскими клиент-серверными системами, защищенными электронными торговыми площадками и другими бизнес-приложениями, написанными на Java, требуется поддержка шифрования, электронной цифровой подписи, строгой аутентификации в соответствии с положениями российского законодательства. Библиотека Trusted Java позволяет решать вопросы информационной безопасности и юридической значимости электронного документооборота.
Библиотека Trusted Java представляет собой набор криптоалгоритмов, реализованных в соответствии с требованиями архитектур JSSE и JCE.
Провайдер JCE является криптографическим расширением Trusted Java и позволяет реализовать российские алгоритмы криптографических преобразований для обеспечения работы с сертификатами, создания и проверки корректности электронной цифровой подписи и шифрования данных.
ПО Trusted Java обеспечивает возможность поддержки российской криптографии в соответствии с положениями российского законодательства. Для авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями используются функции формирования и проверки электронно-цифровой подписи, для обеспечения конфиденциальности информации и контроля ее целостности – шифрование и имитозащита.
Trusted Java позволяет работать с сертификатами и запросами на сертификат, создавать и проверять корректность электронной цифровой подписи данных, шифровать данные, загружать Java-апплеты по протоколу TLS на криптографических алгоритмах ГОСТ.
Что нового в версии
- Поддержаны шифро-сюиты (CipherSuite) 0×81 (TLS_GOSTR341001_WITH_28147_CNT_IMIT) (ранее поддерживалась только 0×31)
- При использовании исправленной CMS-библиотеки от BounceCastle достигнута кросс-совместимость с программой «КриптоАРМ» в плане создания, проверки ЭЦП и шифрования данных:
– ЭЦП, созданная с помощью «КриптоАРМ», будет успешно проверена в Javа. И наоборот: документы, подписанные в Java, можно успешно проверить «КриптоАРМ»ом.
– это же справедливо для операций шифрования и расшифрования данных.
– стал доступен формат заверяющей подписи: теперь возможно создавать, проверять и обрабатывать заверяющие подписи.
– дополнительно появляется возможность использования и зарубежной криптографии. - Теперь ГОСТ-криптография доступна при использовании CMS-библиотеки и оригинального JCE-провайдера от BounceCastle в связке с JCE-провайдером Trusted Java
- Усовершенствованы механизмы аутентификации сервера и клиента
- Улучшена работа с SSL-сокетами
У нас вы можете купить лицензию Базовая КриптоПро JavaTLS версии 2. 0 на одном сервере артикул 75-32-141-CRYPTOPRO-SL по выгодной цене: стоимость лицензии 4500 руб. Наши менеджеры проконсультируют по продукту КриптоПро JavaTLS 2. 0 (устаревшая) для покупки в Москве, Санкт-Петербурге и других городах России. Мы продаем только лицензионное ПО КриптоПро и многих других мировых производителей.
Евгений Афанасьев
Оставлено
:
8 сентября 2022 г. 21:23:45(UTC)
Здравствуйте. Убедитесь, что перед использованием JTLS добавляется в список провайдеров: Security. addProvider( new Provider() ). 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Евгений Афанасьев
Оставлено
:
13 сентября 2022 г. 14:18:57(UTC)
Все посмотрел, все сделал идентично, все равно валится ошибкаЦитата:java. security. NoSuchAlgorithmException: Error constructing implementation (algorithm: GostTLS, provider: JTLS, class: ru. CryptoPro. ssl. android. SSLContextImpl)PS На 7-9 андроиде все работает хорошоПриведите лог из adb logcat. 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Евгений Афанасьев
Оставлено
:
13 сентября 2022 г. 14:57:46(UTC)
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Евгений Афанасьев
Оставлено
:
13 сентября 2022 г. 15:09:31(UTC)
Так как в логеКод:
2022-09-13 14:33:35. 957 3904-3904/ru. krista. piao V/ACSP: CSP not found. 2022-09-13 14:33:35. 957 3904-3904/ru. krista. piao E/ACSP: Error: no CSP found. Library path is null. 2022-09-13 14:33:35. 957 3904-3904/ru. krista. piao W/JCP: ru. CryptoPro. JCSP. CSPConfig. internalInit :: CSP native library path is null. CSPConfig. init должен был вернуть ошибку CSPConfig. CSP_INIT_CONTEXT (1). После такой ошибки что-то делать не имеет смысла – работать без провайдера не будет. Далее в логе продолжается работа, делается попытка создать SSLContext, что привело к NPE – такое возможно, если CSPConfig. init не выполнится, а так и есть. 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
В процессе управления ключами УЦ имеет возможность отзыва выпущенных им сертификатов, что необходимо для досрочного прекращения их действия, например, в случае компрометации ключа. Процедура проверки ЭЦП предусматривает помимо подтверждения ее математической корректности еще и построение, и проверку цепочки сертификатов до доверенного УЦ, а также проверку статусов сертификатов в цепочке.
Таким образом, проверка статусов сертификатов важна для приложений, использующих ИОК, поскольку, например, принятие к обработке подписанного ЭЦП документа, соответствующий сертификат ключа подписи которого аннулирован, может быть впоследствии оспорено и привести к финансовым потерям.
В ОС Microsoft Windows встроена поддержка технологии ИОК. Многие приложения, работающие под управлением этих ОС, используют интерфейс CryptoAPI для осуществления функций криптографической защиты информации. Функции CryptoAPI используют, например, следующие приложения: Internet Explorer, Outlook Express, Outlook, Internet Information Server и др.
По умолчанию CryptoAPI осуществляет проверку статусов сертификатов с использованием СОС (CRL). СОС представляет собой список аннулированных или приостановленных сертификатов, издаваемый периодически – например, раз в неделю. СОС не отражает информацию о статусах в реальном времени, а также имеет ряд других недостатков, которых лишён протокол OCSP – протокол получения статуса сертификата в реальном времени.
Архитектура CryptoAPI предоставляет возможность подключения внешнего модуля проверки статуса сертификата – Revocation Provider.
КриптоПро Revocation Provider предназначен для встраивания проверки статусов сертификатов открытых ключей в режиме реального времени по протоколу OCSP в ОС Windows.
КриптоПро Revocation Provider, будучи установлен в системе, встраивается в CryptoAPI и тем самым обеспечивает проверку статусов сертификатов во всех приложениях по протоколу OCSP, причём менять что-либо в самих приложениях не требуется. Revocation Provider вызывается автоматически каждый раз, когда приложение осуществляет действия с сертификатом. Проверка сертификата в реальном времени по протоколу OCSP обеспечивает большую безопасность по сравнению с СОС.
Схема встраивания Revocation Provider в ОС представлена на рисунке.
Чтобы обеспечить использование протокола OCSP для проверки статусов сертификатов, используемых в конкретной информационной системе, необходимо, чтобы в данной системе работал сервер OCSP.
В качестве сервера OCSP для КриптоПро Revocation Provider можно использовать КриптоПро OCSP Server.
КриптоПро Revocation Provider функционирует в операционных системах Microsoft Windows, как англоязычных, так и локализованных.
КриптоПро Revocation Provider:
- Встраивает проверку статуса сертификатов по протоколу OCSP во все приложения операционной системы.
- Не требует модификации приложений для использования своих возможностей.
- Уменьшает риск стать жертвой мошенничества или понести ответственность.
- Совместим с серверными приложениями.
- Автоматически проверяет статусы сертификатов OCSP-серверов.
- Поддерживает расширение . Если такое расширение присутствует в сертификате сервера, то статус этого сертификата не проверяется.
- Автоматически проверяет, уполномочен ли OCSP-сервер Удостоверяющим Центром, издавшим проверяемый сертификат, выдавать информацию о статусе данного сертификата.
- Настраивается через групповые политики.
- Даёт возможность настройки доверия к конкретным OCSP-серверам.
- При невозможности проверки сертификата по протоколу OCSP передаёт его в Microsoft Revocation Provider, который проводит проверку по СОС.
- Может осуществлять соединения по защищённому протоколу TLS (SSL).
- Устанавливается с помощью Windows Installer.
Как вызывается Revocation Provider
Будучи установленным в системе, Revocation Provider вызывается для проверки сертификата(ов) при каждом вызове функции CryptoAPI CertVerifyRevocation. Фактически, все параметры этой функции передаются без изменений в Revocation Provider. Помимо непосредственного вызова, эта функция, а значит и Revocation Provider, вызывается неявно внутри функций CertGetCertificateChain и WinVerifyTrust.
Как работает Revocation Provider
Когда приложение, работающее с CryptoAPI, вызывает функцию проверки статуса сертификата, в Revocation Provider передаётся этот сертификат вместе с рядом дополнительных параметров.
Revocation Provider, получив на проверку сертификат, создаёт OCSP-запрос на данный сертификат и обращается к одной или нескольким службам OCSP с этим запросом. При получении OCSP-ответа, осуществляет его проверку. Если ответ проходит проверку и содержит статус сертификата good или revoked, в отличие от unknown (см. RFC2560), то на этом проверка заканчивается и полученный статус возвращается приложению. Если же ответ содержит статус unknown или не проходит проверку, то происходит обращение по следующему адресу.
Очерёдность обращения к службам OCSP определяется следующим образом:
- По расширению AIA (AuthorityInformationAccess) в сертификате. Среди различных точек AIA выбирает те, к которым указан метод доступа по протоколу OCSP, обращения к ним происходят по очереди их расположения в сертификате.
- Если ни по одному из адресов OCSP-серверов, указанных в расширении AIA сертификата, не удаётся получить удовлетворяющий этим условиям ответ, или если таких адресов в сертификате не указано, то Revocation Provider пробует обратиться за статусом к OCSP-серверу, адрес которого задан групповой политикой, если она определена.
Если на предыдущих шагах не удаётся получить удовлетворяющем описанным условиям ответ, то сертификат передаётся на проверку в Microsoft Revocation Provider, входящий в состав ОС Windows. Microsoft Revocation Provider осуществляет проверку данного сертификата с использованием СОС. Полученный статус сертификата возвращается приложению.
КриптоПро Revocation Provider использует сертифицированное ФСБ России средство криптографической защиты КриптоПро CSP.
КриптоПро CSP 5. 0 — новое поколение криптопровайдера, развивающее три основные продуктовые линейки компании КриптоПро: КриптоПро CSP (классические токены и другие пассивные хранилища секретных ключей), КриптоПро ФКН CSP/Рутокен CSP (неизвлекаемыe ключи на токенах с защищенным обменом сообщениями) и КриптоПро DSS (ключи в облаке).
Все преимущества продуктов этих линеек не только сохраняются, но и приумножаются в КриптоПро CSP 5. 0: шире список поддерживаемых платформ и алгоритмов, выше быстродействие, удобнее пользовательский интерфейс. Но главное — работа со всеми ключевыми носителями, включая ключи в облаке, теперь единообразна. Для перевода прикладной системы, в которой работал КриптоПро CSP любой из версий, на поддержку ключей в облаке или на новые носители с неизвлекаемыми ключами, не потребуется какая-либо переработка ПО — интерфейс доступа остаётся единым, и работа с ключом в облаке будет происходить точно таким же образом, как и с классическим ключевым носителем.
Назначение КриптоПро CSP
- Формирование и проверка электронной подписи.
- Обеспечение конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты.
- Обеспечение аутентичности, конфиденциальности и имитозащиты соединений по протоколам TLS, и IPsec.
- Контроль целостности системного и прикладного программного обеспечения для его защиты от несанкционированных изменений и нарушений доверенного функционирования.
Поддерживаемые алгоритмы
В КриптоПро CSP 5. 0 наряду с российскими реализованы зарубежные криптографические алгоритмы. Теперь пользователи имеют возможность использовать привычные носители ключей для хранения секретных ключей RSA и ECDSA.
Электронная подпись
ГОСТ Р 34. 10-2012 (ГОСТ 34. 10-2018), ECDSA, RSA
Хэш-функции
ГОСТ Р 34. 11-2012 (ГОСТ 34. 11-2018), SHA-1, SHA-2
Шифрование
ГОСТ Р 34. 12-2015 (ГОСТ 34. 12-2018), ГОСТ Р 34. 13-2015 (ГОСТ 34. 13-2018), ГОСТ 28147-89, AES (128/192/256), 3DES, 3DES-112, DES, RC2, RC4
Таблица алгоритмов, поддерживаемых разными версиями КриптоПро CSP.
Поддерживаемые технологии хранения ключей
В криптопровайдере КриптоПро CSP 5. 0 впервые появилась возможность использования ключей, хранящихся на облачном сервисе КриптоПро DSS, через интерфейс CryptoAPI. Теперь ключи, хранимые в облаке, могут быть легко использованы как любыми пользовательскими приложениями, так и большинством приложений компании Microsoft.
Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
В КриптоПро CSP 5. 0 добавлена поддержка носителей с неизвлекаемыми ключами, реализующих протокол SESPAKE, позволяющий провести аутентификацию, не передавая в отрытом виде пароль пользователя, и установить шифрованный канал для обмена сообщений между криптопровайдером и носителем. Нарушитель, находящийся в канале между носителем и приложением пользователя, не может ни украсть пароль при аутентификации, ни подменить подписываемые данные. При использовании подобных носителей полностью решается проблема безопасной работы с неизвлекаемыми ключами.
Компании Актив, ИнфоКрипт и СмартПарк разработали новые защищенные токены, которые поддерживают данный протокол.
Список производителей и моделей поддерживаемых КриптоПро CSP 5. 0 R2
Список производителей и моделей носителей с неизвлекаемыми ключами и защищенным обменом сообщениями поддерживаемых КриптоПро CSP 5. 0 R2
Компания
Носитель
Актив
Рутокен ЭЦП 2. 0 3000 (USB, Type-C, micro)
Смарт-карта Рутокен ЭЦП 3. 0
Инфокрипт
InfoCrypt Token++
СмартПарк
Форос 2. Базис
Многие пользователи хотят иметь возможность работать с неизвлекаемыми ключами, но при этом не обновлять токены до уровня ФКН. Специально для них в провайдер добавлена поддержка популярных ключевых носителей Рутокен ЭЦП 2. 0, JaCarta-2 ГОСТ и InfoCrypt VPN-Key-TLS.
Список производителей и моделей поддерживаемых КриптоПро CSP 5. 0 R2
Список производителей и моделей носителей с неизвлекаемыми ключами поддерживаемых КриптоПро CSP 5. 0 R2
Компания Носитель
ISBC Esmart Token ГОСТ
Актив Рутокен PINPad
Рутокен ЭЦП (USB, micro, Flash)
Рутокен ЭЦП 2. 0 (USB, micro, Flash, Touch)
Рутокен ЭЦП 2. 0 2100 (USB, Type-C, micro)
Рутокен ЭЦП 2. 0 2151
Рутокен ЭЦП PKI (USB, Type-C, micro)
Рутокен ЭЦП 2. 0 Bluetooth
Рутокен TLS (исполнение 1)
Смарт-карта Рутокен ЭЦП SC
Смарт-карта Рутокен ЭЦП 2. 0 2100
Смарт-карта Рутокен ЭЦП 2. 0 2151
Аладдин Р. JaCarta-2 ГОСТ, JaСarta SF/ГОСТ
JaCarta-2 SE/PKI/ГОСТ
Инфокрипт InfoCrypt Token++ TLS
InfoCrypt VPN-Key-TLS
Классические пассивные USB-токены и смарт-карты
Большинство пользователей предпочитает быстрые, дешевые и удобные решения для хранения ключей. Как правило, предпочтение отдаётся токенам и смарт-картам без криптографических сопроцессоров. Как и в предыдущих версиях провайдера, в КриптоПро CSP 5. 0 сохранена поддержка всех совместимых носителей производства компаний Актив, Аладдин Р. , Gemalto/SafeNet, Multisoft, NovaCard, Rosan, Alioth, MorphoKST и СмартПарк.
Кроме того, конечно, как и раньше поддерживаются способы хранения ключей в реестре Windows, на жестком диске, на флеш-накопителях на всех платформах.
Список производителей и моделей поддерживаемых КриптоПро CSP 5. 0 R2
Список производителей и моделей классических пассивных USB-токенов и смарт-карт поддерживаемых КриптоПро CSP 5. 0 R2
Компания Носитель
AliothSCOne Series (v5/v6)
Gemalto Optelio Contactless Dxx Rx
Optelio Dxx FXR3 Java
Optelio G257
Optelio MPH150
ISBC Esmart Token
MorphoKSTMorphoKST
NovaCardCosmo
Rosan G&D element V14 / V15
G&D 3. 45 / 4. 42 / 4. 44 / 4. 45 / 4. 65 / 4. 80
Kona 2200s / 251 / 151s / 261 / 2320
Kona2 S2120s / C2304 / D1080
SafeNet eToken Java Pro JC
eToken 4100
eToken 5100
eToken 5110
eToken 5105
eToken 5205
Актив Рутокен S
Рутокен КП
Рутокен Lite
Смарт-карта Рутокен Lite
Аладдин Р. JaCarta ГОСТ
JaCarta PKI
JaCarta PRO
JaCarta LT
DallasTouch Memory (iButton) DS199x
ИнфокриптInfoCrypt Token++ lite
Мультисофт MS_Key исп. 8 Ангара
MS_Key ESMART исп. 5
СмартПарк Форос
Форос 2
R301 Форос
Оскар
Оскар 2
Рутокен Магистра
Инструменты КриптоПро
В составе КриптоПро CSP 5. 0 появилось кроссплатформенное (Windows/Linux/macOS) графическое приложение — «Инструменты КриптоПро» («CryptoPro Tools»).
Основная идея — предоставить возможность пользователям удобно решать типичные задачи. Все основные функции доступны в простом интерфейсе — при этом мы реализовали и режим для опытных пользователей, открывающий дополнительные возможности.
Поддерживаемое программное обеспечение
КриптоПро CSP позволяет быстро и безопасно использовать российские криптографические алгоритмы в следующих стандартных приложениях:
- Офисный пакет Microsoft Office
- Почтовый сервер Microsoft Exchange и клиент Microsoft Outlook
- Продукты Adobe
- Браузеры Яндекс.Браузер, Спутник, Internet Explorer, Chromium GOST
- Средство формирования и проверки подписи приложений Microsoft Authenticode
- Веб-серверы Microsoft IIS, nginx, Apache
- Средства удаленных рабочих столов Microsoft Remote Desktop Services
- Microsoft Active Directory
Интеграция с платформой КриптоПро
С первого же релиза обеспечивается поддержка и совместимость со всеми нашими продуктами:
- КриптоПро УЦ
- Службы УЦ
- КриптоПро ЭЦП
- КриптоПро IPsec
- КриптоПро EFS
- КриптоПро .NET
- КриптоПро Java CSP
- КриптоПро NGate
Операционные системы и аппаратные платформы
Традиционно мы работаем в непревзойдённо широком спектре систем:
- Microsoft Windows
- macOS
- Linux
- FreeBSD
- Solaris
- AIX
- iOS
- Android
- Sailfish OS
- Аврора
- Intel, AMD
- PowerPC
- ARM (в т.ч. Байкал-М, Apple M1)
- MIPS (Байкал-Т)
- VLIW (Эльбрус)
- Sparc
- Microsoft Hyper-V
- VMWare
- Oracle Virtual Box
- RHEV
Таблица операционных систем, поддерживаемых разными версиями КриптоПро CSP.
Классификация операционных систем для использования КриптоПро CSP c лицензией на рабочее место и сервер.
Интерфейсы для встраивания
Для встраивания в приложения на всех платформах КриптоПро CSP доступен через стандартные интерфейсы для криптографических средств:
- Microsoft CryptoAPI
- OpenSSL engine
- Java CSP (Java Cryptography Architecture)
- Qt SSL
Производительность на любой вкус
Многолетний опыт разработки позволяет нам охватить все решения от миниатюрных ARM-плат, таких как Raspberry PI, до многопроцессорных серверов на базе Intel Xeon, AMD EPYC и PowerPC, отлично масштабируя производительность.
Регулирующие документы
Загрузите дистрибутив КриптоПро JCP с сайта производителя, распакуйте его в папку на сервере и запустите скрипт установки install. bat. Скрипт находится в папке lib дистрибутива. При его запуске необходимо указать путь к JRE:
install. bat “C:Program FilesJavajdk1. 0_20jre”
В случае если имеется лицензия, при запуске скрипта также указывается серийный номер и название компании:
install. bat “C:Program FilesJavajdk1. 0_20jre” XXXXX-XXXXX-XXXXX-XXXXX-XXXXX “Your Company”
Под Windows 7 скрипт установки необходимо запускать с правами администратора. После завершения работы скрипта, убедитесь в том, что в папке jrelibext появились следующие библиотеки:
asn1rt. jarJCP. jarJCPRevCheck. jarJCP_ASN. jar
AsnLite. jarJCPinst. jarJCPRevTools. jarJCryptoP. jar
forms_rt. jarJCPRequest. jarJCPxml. jar
Настройка и запуск Java Gateway, создание проекций классов
Чтобы стало возможным вызывать Java-классы из Caché/Ensemble, необходимо настроить и запустить Java Gateway, а также создать проекции используемых Java-классов.
Добавим новую запись в таблицу настроек Java Gateway в области %SYS:
insert into %Net_Remote. ObjectGateway(Name, Type, Server, Port, JavaHome) values (‘JCPGate’, ‘1’, ‘127. 1’, ‘55555’, ‘C:Program FilesJavajdk1. 0_20jre’)
Здесь в поле Name указано значение “JCPGate” – это имя нового Java Gateway. В поле JavaHome необходимо указать путь к JRE, для которой была произведена установка JCP. В поле Port указывается TCP-порт, используемый для общения с этим Java Gateway из Caché.
Теперь можно запустить новый Java Gateway, выполнив в терминале Caché следующую команду:
write ##class(%Net. Remote. Service). StartGateway(“JCPGate”)
Чтобы остановить его, вызовите метод StopGateway:
write ##class(%Net. Remote. Service). StopGateway(“JCPGate”)
Запускать/останавливать Java Gateway можно из любой области.
Перейдем в область, где ведется разработка веб-сервисов, и создадим проекцию для Java-класса isc. jcp. JcpFacade, выполнив в терминале Caché следующую команду:
do ##class(%Net. Remote. Java. JavaGateway). %ExpressImport(“isc. jcp. JcpFacade”, “55555”)
Здесь 55555 – это номер TCP-порта, который используется для общения с Java Gateway. Этот порт был указан нами ранее при добавлении записи в таблицу %Net_Remote. ObjectGateway.
Тестирование веб-сервиса
Чтобы протестировать проверку/формирование ЭЦП веб-сервисом test. TestService, исходный код которого приведен выше, выполним следующие действия.
- При помощи Studio создадим класс test.TestService в той же области, куда были импортированы классы smev.*. Исходный код нового класса скопируем из вышеприведенного листинга.
- Запустим в терминале Caché метод signFile() класса smev.JcpUtils:
write ##class(smev.JcpUtils).signFile(“id1”, “C:Tempinput.xml”, “C:Tempoutput.xml”)Убедимся в том, что в результате работы метода был создан файл C:Tempoutput.xml, содержащий подписанное SOAP-сообщение (Envelope): в заголовке (Header) находится ЭЦП в формате WS-Security, а тело (Body) представляет собой XML-документ, взятый из файла input.xml.Готовый файл output.xml имеется в архиве xmls.zip.
Все действия, описанные в статье, можно посмотреть в следующем видеоролике:
Дополнительные библиотеки Java
Нам понадобится библиотека iscjcp. jar (исходники здесь), в которой содержится ряд вспомогательных классов для работы с JCP из Caché. Кроме этого, потребуются три open source библиотеки — Commons Logging, Santuario (aka XML Security) и WSS4J. Их использование регулируется лицензией Apache Software License 2.
Загрузите архив jars. zip с четырьмя перечисленными библиотеками и распакуйте его в папку jrelibext.
В случае использования Windows 7, необходимо выдать полномочия группе «Все» на чтение и выполнение всех библиотек в папке jrelibext.
Формирование ЭЦП для исходящих SOAP-сообщений веб-сервиса
Далее рассмотрим случай, когда все ответы веб-сервиса должны быть подписаны ЭЦП организации. В такой ситуации на сервере системы размещается хранилище, содержащее секретный ключ, который используется при формировании подписи. Кроме того, должен быть доступен сертификат, соответствующий этому ключу. В библиотеке iscjcp. jar реализована работа с хранилищем типа «FloppyStore». Поэтому, для формирования ЭЦП нам потребуется виртуальная дискета с хранилищем ключей.
Размещение секретного ключа и сертификата на виртуальной дискете на сервере системы
Чтобы создать такую дискету, выполните следующие действия:
- Установите драйвер, имитирующий FDD привод, например, ImDisk.
- Из панели управления Windows запустите программу настройки «ImDisk Virtual Disk Driver» и настройте диск с параметрами:
Drive letter: A,Size of virtual disk: 1 Megabyte,Device type: Floppy. - Drive letter: A,
- Size of virtual disk: 1 Megabyte,
- Device type: Floppy.
- Отформатируйте виртуальную дискету, задав файловую систему FAT.
- Распакуйте содержимое архива FDD.zip на диск A:.
В результате описанных манипуляций на диске A: сервера имеем хранилище ключей, содержащее тестовый секретный ключ. Файл A:SelfSigned. cer представляет собой тестовый сертификат, соответствующий секретному ключу.
Вы можете самостоятельно генерировать ключи и сертификаты с помощью КриптоПро JCP. Эти процедуры описаны в документации продукта.
Загруженный ранее архив iscjcp-cos-sources2012. zip с исходным кодом Caché Object Script содержал класс smev. JcpSignature. Импортируйте этот класс в Caché с помощью Studio.
Откройте класс smev. JcpUtils в Studio и отредактируйте значение параметра CERTFILENAME, указав полный путь к файлу сертификата – “A:SelfSigned. cer”. Этот сертификат соответствует секретному ключу, который будет использоваться при формировании ЭЦП. Скомпилируйте класс.
Теперь, чтобы добавить в метод веб-сервиса функционал по формированию ЭЦП для возвращаемых сообщений, необходимо вставить следующую строку в код этого метода:
SecurityOut. AddElement(##class(smev. JcpSignature). %New())
Проверка ЭЦП во входящих SOAP-сообщениях
Теперь, чтобы добавить в существующий веб-сервис проверку ЭЦП, достаточно внести в класс веб-сервиса следующий метод:
Это работает на версиях Caché/Ensemble, начиная с 2009. Ниже приведен пример веб-сервиса, который осуществляет проверку подписи всех входящих SOAP-сообщений.
Веб-сервисы с поддержкой ЭЦП на базе криптографии ГОСТ
Начиная с версии 2008. 2, в Caché и в Ensemble встроена поддержка WS-Security, включающая механизмы проверки и формирования электронной подписи SOAP-сообщений. На текущий момент имеется «out of the box» поддержка ЭЦП на базе крипто алгоритмов семейства RSA.
К системам, создаваемым для российских заказчиков, зачастую предъявляется требование применения сертифицированных СКЗИ, использующих крипто алгоритмы ГОСТ. Далее описан один из подходов к разработке веб-сервисов Caché, защищенных ЭЦП на базе ГОСТ’овской криптографии. В качестве сертифицированного СКЗИ, будем использовать продукт КриптоПро JCP, представляющий собой набор Java библиотек, в которых реализован алгоритм подписи — ГОСТ Р 34. 10-2001, а также алгоритм хэширования ГОСТ Р 34. 11-94.