Browser plug-in 2.0 ошибка установки

Browser plug-in 2.0 ошибка установки Электронная цифровая подпись
Содержание
  1. Немного покодим
  2. Пробный запуск
  3. Проверка в КриптоАРМ
  4. Проверка на Госуслугах
  5. Проверка в Контур. Крипто
  6. Веб-сервисы с поддержкой ЭЦП на базе криптографии ГОСТ
  7. Установка личных сертификатов
  8. Настройка и запуск Java Gateway, создание проекций классов
  9. Работа с «КриптоПро NGate»
  10. Предварительные комментарии
  11. Доступ к интерфейсу администрирования
  12. Панель управления
  13. Настройка конфигураций кластеров
  14. Настройка порталов
  15. Настройки узлов
  16. Установка корневых сертификатов
  17. Системные требования «КриптоПро NGate»
  18. Сертификация шлюза «КриптоПро NGate» и выполнение требований законодательства
  19. Ссылки на публичные источники
  20. Done.
  21. Архитектура «КриптоПро NGate»
  22. Соберем проект с поддержкой ГОСТ Р 34. 11-2012 256 bit
  23. Первым делом создадим новую папку
  24. I – Сборка проекта без сборки corefx для Windows
  25. II – Сборка проекта со сборкой corefx для Windows
  26. Дополнительные библиотеки Java
  27. Просмотр сертификатов
  28. Удаление сертификатов
  29. Перенос контейнера с flash-носителя в локальное хранилище ПК
  30. Формирование ЭЦП для исходящих SOAP-сообщений веб-сервиса
  31. Размещение секретного ключа и сертификата на виртуальной дискете на сервере системы
  32. Формирование ЭЦП
  33. Работа с криптоконтейнерами
  34. Так, а что надо на выходе?
  35. Установка сертификатов pfx
  36. Что имеем на входе?
  37. Тестирование веб-сервиса
  38. Функциональные возможности «КриптоПро NGate»
  39. Режимы работы
  40. Методы аутентификации
  41. Возможности интеграции
  42. Новые функции и улучшения

Немного покодим

Потребуется 2 COM библиотеки: “CAPICOM v2.1 Type Library” и “Crypto-Pro CAdES 1.0 Type Library”. Они содержат необходимые объекты для создания УКЭП.

В этом примере будет подписываться BASE64 строка, содержащая в себе PDF-файл. Немного доработав код можно будет подписать hash-значение этого фала.

Основной код для подписания был взят со страниц Подпись PDF с помощью УЭЦП- Page 2 (cryptopro.ru) и Подпись НЕОПРЕДЕЛЕНА при создании УЭЦП для PDF на c# (cryptopro.ru), но он использовался для штампа подписи на PDF документ. Код из этого гайда переделан под сохранение файла подписи в отдельный файл.

Условно процесс можно поделить на 4 этапа:

  1. Поиск сертификата в хранилище – я использовал поиск по отпечатку в хранилище пользователя;

  2. Чтение байтов подписанного файла;

  3. Сохранение файла подписи рядом с файлом.

using CAdESCOM;
using CAPICOM;
using System;
using System.Globalization;
using System.IO;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography.Xml;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

public static void Main()
{
  //Сертификат для подписи
	X509Certificate2 gostCert = GetX509Certificate2("отпечаток");
  //Файл, который предстоит подписать
  byte[] fileBytes = File.ReadAllBytes("C:\\Тестовое заявление.pdf");
  //Файл открепленной подписи
  byte[] signatureBytes = SignWithAdvancedEDS(fileBytes, gostCert);
  //Сохранение файла подписи
  File.WriteAllBytes("C:\\Users\\mikel\\Desktop\\Тестовое заявление.pdf.sig", signatureBytes);
}

//Поиск сертификата в хранилище
public static X509Certificate2 GetX509Certificate2(string thumbprint)
{
  X509Store store = CreateStoreObject("My", StoreLocation.CurrentUser);
  store.Open(OpenFlags.ReadOnly);

  X509Certificate2Collection certCollection =
    store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);

  X509Certificate2Enumerator enumerator = certCollection.GetEnumerator();
  X509Certificate2 gostCert = null;
  while (enumerator.MoveNext())
    gostCert = enumerator.Current;
  if (gostCert == null)
    throw new Exception("Certificiate was not found!");

  return gostCert;
}

//Создание УКЭП
public static byte[] SignWithAdvancedEDS(byte[] fileBytes, X509Certificate2 certificate)
{
  string signature = "";
  
  try
  {
    string tspServerAddress = @"http://qs.cryptopro.ru/tsp/tsp.srf";

    CPSigner cps = new CPSigner();
    cps.Certificate = GetCAPICOMCertificate(certificate.Thumbprint);
    cps.Options = CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
    cps.TSAAddress = tspServerAddress;

    CadesSignedData csd = new CadesSignedData();
    csd.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
    csd.Content = Convert.ToBase64String(fileBytes);

    //Создание и проверка подписи CAdES BES
    signature = csd.SignCades(cps, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true, CAdESCOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
    csd.VerifyCades(signature, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true);
    
    //Дополнение и проверка подписи CAdES BES до подписи CAdES X Long Type 1 
    //(вторая подпись остается без изменения, так как она уже CAdES X Long Type 1)
    signature = csd.EnhanceCades(CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, tspServerAddress, CAdESCOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
    csd.VerifyCades(signature, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, true);
  }
  catch (Exception ex)
  {
    throw ex;
  }
  return Convert.FromBase64String(signature);
}

Пробный запуск

Для подписания возьмем PDF-документ, который содержит надпись “Тестовое заявление.”:

Больше для теста нам ничего не надо
Больше для теста нам ничего не надо

Далее запустим программу и дождемся подписания файла:

Browser plug-in 2.0 ошибка установки

Готово. Теперь можно приступать к проверкам.

Проверка в КриптоАРМ

Время создания ЭП заполнено:

Browser plug-in 2.0 ошибка установки

Штамп времени на подпись есть:

Browser plug-in 2.0 ошибка установки

Доказательства подлинности также заполнены:

Browser plug-in 2.0 ошибка установки

В протоколе проверки есть блоки “Доказательства подлинности”, “Штамп времени на подпись” и “Время подписания”:

Browser plug-in 2.0 ошибка установки
Browser plug-in 2.0 ошибка установки
Browser plug-in 2.0 ошибка установки

Важно отметить, что серийный номер параметров сертификата принадлежит TSP-сервису http://qs.cryptopro.ru/tsp/tsp.srf

Проверка на Госуслугах

Browser plug-in 2.0 ошибка установки

Проверка в Контур. Крипто

Browser plug-in 2.0 ошибка установки

Веб-сервисы с поддержкой ЭЦП на базе криптографии ГОСТ

Начиная с версии 2008.2, в Caché и в Ensemble встроена поддержка WS-Security, включающая механизмы проверки и формирования электронной подписи SOAP-сообщений. На текущий момент имеется «out of the box» поддержка ЭЦП на базе крипто алгоритмов семейства RSA.

К системам, создаваемым для российских заказчиков, зачастую предъявляется требование применения сертифицированных СКЗИ, использующих крипто алгоритмы ГОСТ. Далее описан один из подходов к разработке веб-сервисов Caché, защищенных ЭЦП на базе ГОСТ’овской криптографии.

В качестве сертифицированного СКЗИ, будем использовать продукт КриптоПро JCP, представляющий собой набор Java библиотек, в которых реализован алгоритм подписи — ГОСТ Р 34.10-2001, а также алгоритм хэширования ГОСТ Р 34.11-94.

Установка личных сертификатов

1. Установка сертификата без привязки к ключам:

certmgr -inst -file cert_bob.cer

2. Установка личного сертификата cert_bob.cer, сертификат при этом попадает в пользовательское хранилище uMy. Приватный ключ находится на флешке.

certmgr -inst -file cert_bob.cer -store uMy -cont '\\.\FLASH\bob'

в команде указывается сертификат cert_bob.cer, который ассоциируется с приватным контейнером \\.\FLASH\bob’

3. Установка сертификата с токена (в конце команды указывается контейнер)

/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\Aladdin R.D. JaCarta 00 00\8df47e71-18ae-49c1-8738-9b4b0944dcd4'

Настройка и запуск 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.0.0.1’, ‘55555’, ‘C:\Program Files\Java\jdk1.6.0_20\jre’)

Здесь в поле 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.

Работа с «КриптоПро NGate»

Предварительные комментарии

Процесс работы с NGate можно разбить на три основные части: подготовка к эксплуатации, настройка доступа к ресурсам и системам и собственно эксплуатация. Подробное описание всех этапов настройки и взаимодействия с NGate приведено в сопроводительной документации.

Подготовка к эксплуатации связана с первоначальным развёртыванием и настройкой программного обеспечения криптошлюза на аппаратной или виртуальной платформе. Этот этап является наиболее трудоёмким и ответственным. Он требует наличия практических навыков работы с операционной системой семейства Linux, знаний о сети организации и инфраструктуре открытых ключей (Public Key Infrastructure, PKI).

Затем с использованием веб-интерфейса администрирования осуществляется настройка криптошлюза для решения задач связанных с организацией доступа пользователей к ресурсам. Сюда входят настройка порталов, серверных мандатов, пользовательских ролей и политик доступа к защищаемым ресурсам, а также конфигурирование взаимодействия со внешними службами (Microsoft AD или другими LDAP-серверами, системами мониторинга, SIEM, средствами аутентификации, включая RADIUS-серверы, и др.).

Дальнейшее обслуживание криптошлюза в ходе его эксплуатации при грамотном развёртывании всех компонентов и правильной настройке параметров не требует постоянного вмешательства или участия со стороны администраторов. Это связано с тем, что в штатном режиме работы круг их задач существенно уменьшается и ограничивается в основном диагностикой и контролем состояния компонентов и систем в составе криптошлюза, устранением неполадок (при обнаружении таковых), мониторингом текущих настроек и обновлением программного обеспечения.

Доступ к интерфейсу администрирования

В рамках подготовки этого обзора разработчик предоставил нам пользовательский сертификат и учётную запись типа «Аудитор» для доступа к тестовому стенду NGate. Эта пользовательская роль является одной из штатных функций продукта и предоставляет возможность просматривать большую часть разделов и возможностей веб-интерфейса без права что-либо изменять. Кроме того, для доступа использовались «Яндекс.Браузер», поскольку он поддерживает шифрование по ГОСТ, и «КриптоПро CSP» в качестве вспомогательного программного обеспечения (установочный файл доступен на основной странице после регистрации).

Рисунок 4. Вход в веб-интерфейс администрирования «КриптоПро NGate»

Вход в веб-интерфейс администрирования «КриптоПро NGate»

Панель управления

После авторизации пользователь попадает на главную страницу — вкладку «Системная информация» панели управления. Сам интерфейс доступен на двух языках: русском и английском, с возможностью переключения между ними в любой момент.

Здесь отображается информация о работоспособности устройств криптошлюза и основные сведения о кластерах (конфигурации, используемые лицензии, узлы; порталы, которые привязаны к кластеру, и ресурсы этих порталов).

Полезной и удобной функцией в новой версии стали предупреждения о скором окончании срока действия сертификатов (ключей) порталов. Эта информация доступна также в виде цветовых меток слева от каждого портала и по протоколу мониторинга SNMP (данные о посещении мандатов).

Рисунок 5. Вкладка «Системная информация» панели управления «КриптоПро NGate»

Вкладка «Системная информация» панели управления «КриптоПро NGate»

Новая вкладка и функция панели управления — «Сессии» — позволяет осуществлять поиск сеансов пользователей по различным критериям с расширенными возможностями фильтрации. Список параметров поиска включает кластер, портал, данные пользователя (имя или логин), IP-адрес клиента, состояние пользователя (активный или аутентифицированный), номер сертификата и используемый метод аутентификации. Администратор может останавливать выбранные сессии при необходимости.

Кроме того, важным моментом является отображение конкретного узла, который отвечает за подключение выбранного пользователя. Эта информация может быть использована как вспомогательная при диагностике неполадок (для детектирования источника проблем сетевого доступа при наличии в кластере более одного узла). Она была добавлена в интерфейс в связи с высокой востребованностью у заказчиков.

Рисунок 6. Поиск сессий пользователей в веб-интерфейсе «КриптоПро NGate»

Поиск сессий пользователей в веб-интерфейсе «КриптоПро NGate»

Информация о системе управления в составе криптошлюза приведена на одноимённой вкладке. В новой версии этот раздел дополнен возможностью скачать резервные копии напрямую из веб-интерфейса. Также администратор вправе скачать диагностическую информацию центра управления, которую можно проанализировать самостоятельно или предоставить службе технической поддержки для решения каких-либо проблем.

Рисунок 7. Информация о системе управления в составе «КриптоПро NGate»

Информация о системе управления в составе «КриптоПро NGate»

Также в панели управления веб-интерфейса администрирования добавлена информация о статистике IP-адресов, которая показывает количество свободных адресов в выделенном сетевом диапазоне VPN для каждого кластера. Здесь же можно посмотреть их разбиение по узлам.

Рисунок 8. Информация о системе управления в составе «КриптоПро NGate»

Информация о системе управления в составе «КриптоПро NGate»

Настройка конфигураций кластеров

С момента выхода первой версии NGate был существенно переработан интерфейс, отображающий информацию о конфигурации кластеров: он стал более дружественным и понятным.

Рисунок 9. Информация о конфигурации кластера в веб-интерфейсе «КриптоПро NGate»

Информация о конфигурации кластера в веб-интерфейсе «КриптоПро NGate»

Кроме того, на этой вкладке появилась функция по добавлению Stream-портала, то есть портала для доступа к ресурсам по произвольному протоколу на базе TCP поверх TLS. Ранее можно было добавлять порталы только для тех ресурсов, которые работают по HTTP.

Рисунок 10. Добавление портала для доступа пользователей к ресурсам по произвольному TCP-протоколу в веб-интерфейсе «КриптоПро NGate»

Добавление портала для доступа пользователей к ресурсам по произвольному TCP-протоколу в веб-интерфейсе «КриптоПро NGate»

На другой вкладке этого же раздела можно смотреть детальную информацию о защищаемых ресурсах, настраивать их, добавлять новые, копировать или удалять уже существующие. Можно добавить веб-ресурс, динамический туннель, ресурс для перенаправления пользователей и gRPC-сервисы. По протоколу gRPC работают различные веб-приложения, а в целом он реализует удалённые программные интерфейсы (API).

Рисунок 11. Информация о ресурсах, связанных с кластером, в веб-интерфейсе «КриптоПро NGate»

Информация о ресурсах, связанных с кластером, в веб-интерфейсе «КриптоПро NGate»

При настройке веб-ресурсов значительно расширен список возможностей тонкого конфигурирования, а также добавлена функция по балансировке бэкенда для гибкого распределения нагрузки непосредственно со шлюза (или нескольких шлюзов).

Рисунок 12. Создание веб-ресурса в интерфейсе «КриптоПро NGate»

Создание веб-ресурса в интерфейсе «КриптоПро NGate»

Список доступных внешних служб можно увидеть (и настроить) как в особом разделе веб-интерфейса, так и на вкладке выбранной конфигурации кластера. Но во втором случае будут отображены только те системы и серверы, которые настроены для конкретного кластера.

Читайте также:  Рутокен S micro 64КБ

Рисунок 13. Внешние службы, настроенные для кластера, в веб-интерфейсе «КриптоПро NGate»

Внешние службы, настроенные для кластера, в веб-интерфейсе «КриптоПро NGate»

Также в разделах конфигурации кластера администратор осуществляет настройку правил и политик доступа к ресурсам (ACL) на основе групп пользователей на каком-либо сервере LDAP (к примеру, Microsoft AD) либо сертификатов (новая функциональность). Сертификатный ACL — это способ задать правила доступа на основе содержимого полей пользовательских сертификатов. В актуальной версии шлюза стало возможно создавать правила с запретительным доступом (в предыдущей версии он был только разрешительным), а также существенно расширился набор полей. Теперь анализируются не только поля с названием организации (Organization / Organization Unit), но и другие, в том числе нестандартные.

Рисунок 14. Настройка сертификатного ACL в веб-интерфейсе «КриптоПро NGate»

Настройка сертификатного ACL в веб-интерфейсе «КриптоПро NGate»

Настройка порталов

В веб-интерфейсе администрирования появился раздел с подробной информацией по каждому порталу (ранее эти данные были разбросаны по разным страницам). Существенным функциональным обновлением стало появление возможности создавать правила для динамического туннелирования, определяющие то, какие пользователи к каким порталам и при каких условиях могут подключаться — то есть какие подсети могут назначаться клиенту в зависимости от правил ACL.

Рисунок 15. Общая информация о настройках портала в веб-интерфейсе «КриптоПро NGate»

Общая информация о настройках портала в веб-интерфейсе «КриптоПро NGate»

Рисунок 16. Создание правила для динамического туннелирования в веб-интерфейсе «КриптоПро NGate»

Создание правила для динамического туннелирования в веб-интерфейсе «КриптоПро NGate»

Страница с данными о сертификатах содержит информацию о серверных мандатах и удостоверяющих центрах, включая те, что указаны как доверенные для конкретного портала. Отметим, что на одном кластере может быть несколько наборов порталов с разными сертификатами, в том числе с разными доверенными.

Рисунок 17. Информация о сертификатах портала в веб-интерфейсе «КриптоПро NGate»

Информация о сертификатах портала в веб-интерфейсе «КриптоПро NGate»

Также для каждого портала отдельно настраиваются методы аутентификации пользователей, включая RADIUS-протокол и форматы одноразовых паролей. Администратор может настроить многофакторную аутентификацию и определить перечень требуемых от пользователя данных, который, к примеру, одновременно может включать необходимость предоставить клиентский сертификат, логин и пароль из LDAP, затем PIN-код для доступа к OTP и сам OTP, полученный из SMS-сообщения или специализированного ПО 2FA (Google Authenticator, «Яндекс.Ключ» и т. д).

Рисунок 18. Настройка портала в веб-интерфейсе «КриптоПро NGate»

Настройка портала в веб-интерфейсе «КриптоПро NGate»

Настройка портала в веб-интерфейсе «КриптоПро NGate»

Настройки узлов

Новой функциональностью в разделе веб-интерфейса «Кластеры» стали возможности создания VLAN- и агрегированных сетевых интерфейсов (Bond-интерфейсов).

Рисунок 19. Общая информация об узлах кластера в веб-интерфейсе «КриптоПро NGate»

Общая информация об узлах кластера в веб-интерфейсе «КриптоПро NGate»

Рисунок 20. Сетевые интерфейсы узла кластера в веб-интерфейсе «КриптоПро NGate»

Сетевые интерфейсы узла кластера в веб-интерфейсе «КриптоПро NGate»

При объединении сетевых интерфейсов поддерживаются различные алгоритмы агрегации. При этом происходит создание логического или виртуального сетевого интерфейса, объединяющего несколько физических. Эта технология позволяет повысить отказоустойчивость сети (при объединении нескольких одинаковых интерфейсов выход из строя одного из них не повлияет на работоспособность сети) и повысить её пропускную способность.

Рисунок 21. Создание Bond-интерфейса в «КриптоПро NGate»

Создание Bond-интерфейса в «КриптоПро NGate»

Установка корневых сертификатов

При установке корневых сертификатов достаточно указать хранилище uRoot. При указании mRoot (при наличии прав администратора) корневой сертификат будет доступен всем пользователям системы.

1. Установка в хранилище КриптоПро:

certmgr -inst -store uRoot -file <название-файла>.cer

2. Установка в хранилище ПК:

certmgr -inst -store mRoot -file <название-файла>cer

3. Установка списка отозванных сертификатов crl:

certmgr -inst -crl -file <название-файла>.crl

Системные требования «КриптоПро NGate»

NGate сертифицирован ФСБ России по классам защиты КС1, КС2 и КС3 и может поставляться как в виде программно-аппаратного комплекса, с предустановкой программного обеспечения на специализированные сетевые аппаратные платформы в различных конфигурациях в зависимости от необходимых технических параметров, вычислительных мощностей и требований инфраструктуры каждой конкретной организации, так и в виде программного обеспечения для развёртывания в среде виртуализации.

В первом случае компания приобретает оборудование для системы управления NGate (две модели) и каждого из узлов кластера (шесть вариантов). В следующих двух таблицах мы собрали основные технические характеристики и показатели производительности аппаратных платформ NGate.

Таблица 1. Основные характеристики аппаратных платформ «КриптоПро NGate» (центр управления сетью)

Параметр

«NGate ЦУС 100» 

«NGate ЦУС 200» 

Формфактор

1U

Параметры блока питания

150 Вт АТХ

300 Вт ATX, резервный БП (PSU)

Сетевые интерфейсы

RJ-45 1GbE × 6 шт.

RJ-45 1GbE × 8 шт.
SFP+ LAN 10 GbE × 4 шт.

Таблица 2. Основные характеристики аппаратных платформ «КриптоПро NGate» (узел кластера)

Параметр

NGate 3000

NGate 2000

NGate 1500

NGate 1000

NGate 600

NGate 320

TLS Proxy

До 45 000 подключений,
до 20 Гбит/c

До 15 000 подключений,
до 8 Гбит/c

До 8 000 подключений,
до 4 Гбит/c

До 4 000 подключений,
до 2,3 Гбит/c

До 2 000 подключений,
до 1 Гбит/c

До 500 подключений,
до 0,6 Гбит/c

TLS VPN

До 12 000 подключений,
до 8 Гбит/c

До 8 000 подключений,
до 5 Гбит/c

До 4 000 подключений,
до 2 Гбит/c

До 2 000 подключений,
до 1 Гбит/c

До 700 подключений,
до 0,5 Гбит/c

До 150 подключений,
до 0,14 Гбит/c

Формфактор

1U

Настольный

Параметры блока питания

650 Вт АТХ, резервный БП (PSU)

300 Вт АТХ, резервный БП (PSU)

300 Вт АТХ, резервный БП (PSU)

220 Вт АТХ

150 Вт АТХ

36 Вт, адаптер питания 12В 3А

Сетевые интерфейсы

RJ-45 1GbE × 4 шт.
SFP+ LAN 10GbE × 4 шт.

RJ-45 1GbE × 8 шт.
SFP+ LAN 10GbE × 4 шт.

RJ-45 1GbE × 6 шт.
SFP LAN 1 GbE × 2 шт.

RJ-45 1GbE × 6 шт.

RJ-45 1GbE × 3 шт.

Для развёртывания NGate в виде виртуальной программной платформы виртуальные машины должны удовлетворять определённым системным требованиям. Мы перечислили их в таблице далее.

Таблица 3. Системные требования для установки системы управления «КриптоПро NGate» в среде виртуализации

Параметр

ЦУС NGate

Узел NGate

Среда виртуализации

VMware Workstation (версии 11–16),
VMware ESXi (версии 5.5–7.0),
Hyper-V (версии 8, 8.1, 10, 2008, 2008 R2, 2012, 2012 R2, 2016),
Xen (Citrix Hypervisor) (версии 7.1–8.2),
Virtual Box (версии 3.2–6.1)

Гостевая операционная система

Debian Linux 11 x64

Оперативная память

1 ГБ и более

Жёсткий диск

Не менее 100 ГБ (в том числе для журналирования событий и другой информации)

Не менее 8 ГБ

Виртуальные сетевые интерфейсы

Не менее 1 шт.
(тип сетевого адаптера — E1000, тип сетевого взаимодействия — Bridged Networking)

Как видно, эти требования являются легко выполнимыми. Однако при использовании NGate в среде виртуализации возникают другие ограничения: происходит понижение класса криптографической защиты до КС1.

К программной и аппаратной частям пользовательских устройств для работы VPN-клиента NGate особых требований не предъявляется. Работа VPN-клиента возможна практически на всех популярных настольных и мобильных операционных системах, включая отечественные программные и аппаратные разработки:

  • Microsoft Windows версий 7, 8, 8.1, 10, 11,
  • macOS версий 10.10–10.15, 11,
  • Linux (RHEL, CentOS, Debian, Ubuntu, ROSA, Astra, ALTLinux и другие),
  • iOS,
  • Android,
  • «Аврора».

Для получения доступа к защищаемым ресурсам пользователь может применять VPN-клиент NGate, веб-браузер либо собственное мобильное приложение после встраивания в него криптопровайдера «КриптоПро CSP 5.0 R2» (реализует поддержку TLS с ГОСТ для операционных систем iOS, Android и «Аврора» без дополнительных тематических исследований).

Сертификация шлюза «КриптоПро NGate» и выполнение требований законодательства

NGate был включён в Единый реестр российских программ для электронных вычислительных машин и баз данных Минцифры России в 2017 году (запись № 305680). В декабре 2019 года все компоненты шлюза (и серверные, и клиентские) прошли проверку на соответствие требованиям ФСБ России к средствам криптографической защиты информации по классам защиты КС1, КС2 и КС3 (получены сертификаты № СФ/124-3629, СФ/124-3630 и СФ/124-3631 для NGate в различных исполнениях). Кроме того, компоненты шлюза удалённого доступа используют в своём составе собственный криптопровайдер «КриптоПро CSP», который также сертифицирован ФСБ России для защиты информации по тем же классам.

Успешное прохождение сертификации подтверждает высокий уровень безопасности программного и аппаратного обеспечения NGate и возможности его использования для обеспечения защищённой передачи конфиденциальной информации (включая персональные данные) в том числе в рамках программы по импортозамещению.

Выше уже упоминалось, но повторим явно в текущем разделе следующее важное замечание. В среде виртуализации можно использовать NGate без ограничений функциональности и производительности (кроме тех, что связаны с характеристиками виртуальных машин), но только с пониженным классом сертификации. Криптошлюз NGate в виде виртуальной платформы отвечает требованиям ФСБ России по классу КС1.

Помимо указанного, NGate отвечает требованиям законодательства в области обеспечения информационной безопасности в различных сферах. Общую информацию мы привели в следующей таблице.

Таблица 4. Требования законодательства РФ в области обеспечения информационной безопасности, которым отвечает «КриптоПро NGate»

Сфера ИБ

Законы

Дополнительная информация

Единая биометрическая система (ЕБС)

149-ФЗ (с изменениями 482-ФЗ) и 4-МР ЦБ РФ

NGate удовлетворяет требованиям указанных законов и методических рекомендаций в части удалённой идентификации в ЕБС, поскольку криптошлюз имеет необходимые сертификаты ФСБ России и поддерживает одновременно и ГОСТ TLS, и зарубежные криптонаборы TLS

Персональные данные (ПД) и государственные информационные системы (ГИС)

21-й / 17-й приказы ФСТЭК России

NGate реализует меры защиты информации в различных категориях:

  • управление доступом в части УПД.13,
  • защита информационных систем и передачи данных в части меры ЗИС.3,
  • идентификация и аутентификация в части мер ИАФ.1, ИАФ.5 и ИАФ.6

Критическая информационная инфраструктура

239-й приказ ФСТЭК России

NGate реализует меры защиты информации в различных категориях:

  • управление доступом в части мер УПД.13, УПД.14,
  • защита информационных систем и их компонентов в части ЗИС.19,
  • идентификация и аутентификация в части мер ИАФ.1, ИАФ.5, ИАФ.6 и ИАФ.7.

Кроме этого, криптошлюз отвечает следующим требованиям приказа (п. 31):

  • не допускается наличия удалённого доступа напрямую к защищаемым объектам критической информационной инфраструктуры (КИИ) со стороны третьих лиц, т. е. не работников объекта КИИ (такой доступ через NGate допускается, поскольку VPN-доступ не считается доступом «напрямую»),
  • должна обеспечиваться стойкость к санкциям (выполняется, поскольку NGate — полностью отечественный криптошлюз),
  • реализуется полная поддержка со стороны производителя.

Защита информации финансовых организаций

ГОСТ Р 57580.1-2017

NGate реализует большинство требований в категории защиты информации от раскрытия и модификации при осуществлении удаленного доступа (ЗУД)

Удалённый мониторинг энергооборудования

1015-й приказ Министерства энергетики РФ

от 06.11.2018

NGate реализует следующие требования к информационной безопасности объектов электроэнергетики:

  • обеспечение криптографической защиты удалённого соединения и обмена данными,
  • применение сертифицированных средств защиты информации.

Ссылки на публичные источники

[1] CMS Advanced Electronic Signatures (CAdES) – https://tools.ietf.org/html/rfc5126#ref-ISO7498-2

[2] Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP) – https://www.ietf.org/rfc/rfc3161.txt

[3] X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP – https://tools.ietf.org/html/rfc2560

[4] Усовершенствованная квалифицированная подпись — Удостоверяющий центр СКБ Контур (kontur.ru)

[5] Поддержка .NET Core (cryptopro.ru)

[6] http://qs.cryptopro.ru/tsp/tsp.srf – TSP-сервис КриптоПро

UPD1: Поменял в коде переменную, куда записываются байты файла подписи.

Также я забыл написать немного про подпись штампа времени – он подписывается сертификатом владельца TSP-сервиса. По гайду это ООО “КРИПТО-ПРО”:

Browser plug-in 2.0 ошибка установки

UPD2: Про библиотеки CAdESCOM и CAPICOM

В ответ @kotov_a и @mayorovp– Все верно: для .NET Core 3.1 сборки System.Security.Cryptography.Pkcs.dll и System.Security.Cryptography.Xml.dll подменяются, так как поддержка этих алгоритмов в бета тестировании [5], а для .NET Framework 4.8 используется CryptoPro.Sharpei – он был перенесен в состав КриптоПро .NET. Последний, судя по информации с портала документации, работает только с .NET Framework.

Если создать пустой проект на .NET Core 3.1, подключив непропатченные библиотеки, то при обращении к закрытому ключу выпадет исключение “System.NotSupportedException” c сообщением “The certificate key algorithm is not supported.”:

Читайте также:  Приложение. Требования к форме квалифицированного сертификата ключа проверки электронной подписи
.NET Core 3.1 - Исключение без пропатченных библиотек
.NET Core 3.1 – Исключение без пропатченных библиотек
<TargetFramework>netcoreapp3.1</TargetFramework>
...
<ItemGroup>
  <COMReference Include="CAdESCOM">
    <WrapperTool>tlbimp</WrapperTool>
    <VersionMinor>0</VersionMinor>
    <VersionMajor>1</VersionMajor>
    <Guid>e00b169c-ae7f-45d5-9c56-672e2b8942e0</Guid>
    <Lcid>0</Lcid>
    <Isolated>false</Isolated>
    <EmbedInteropTypes>true</EmbedInteropTypes>
  </COMReference>
  <COMReference Include="CAPICOM">
    <WrapperTool>tlbimp</WrapperTool>
    <VersionMinor>1</VersionMinor>
    <VersionMajor>2</VersionMajor>
    <Guid>bd26b198-ee42-4725-9b23-afa912434229</Guid>
    <Lcid>0</Lcid>
    <Isolated>false</Isolated>
    <EmbedInteropTypes>true</EmbedInteropTypes>
  </COMReference>
</ItemGroup>
...

Но при использовании пропатченных библиотек это исключение не выпадает и с приватным ключем можно взаимодействовать:

Browser plug-in 2.0 ошибка установки
<TargetFramework>netcoreapp3.1</TargetFramework>
...
<ItemGroup>
  <Reference Include="System.Security.Cryptography.Pkcs">
    <HintPath>.\corefx\artifacts\bin\runtime\netcoreapp-Windows_NT-Debug-x64\System.Security.Cryptography.Pkcs.dll</HintPath>
  </Reference>
  <Reference Include="System.Security.Cryptography.Xml">
    <HintPath>.\corefx\artifacts\bin\runtime\netcoreapp-Windows_NT-Debug-x64\System.Security.Cryptography.Xml.dll</HintPath>
  </Reference>
</ItemGroup>
...

Также код из гайда работает с .NET Framework 4.8 без использования пропатченных библиотек, но вместо обращения к пространству имен “System.Security.Cryptography”, которое подменяется пропатченными библиотеками для .NET Core, CSP Gost3410_2012_256CryptoServiceProvider будет использован из пространства имен “CryptoPro.Sharpei”:

Browser plug-in 2.0 ошибка установки
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
...
<ItemGroup>
    <COMReference Include="CAdESCOM">
      <Guid>{E00B169C-AE7F-45D5-9C56-672E2B8942E0}</Guid>
      <VersionMajor>1</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
    <COMReference Include="CAPICOM">
      <Guid>{BD26B198-EE42-4725-9B23-AFA912434229}</Guid>
      <VersionMajor>2</VersionMajor>
      <VersionMinor>1</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
    <COMReference Include="CERTENROLLLib">
      <Guid>{728AB348-217D-11DA-B2A4-000E7BBB2B09}</Guid>
      <VersionMajor>1</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
      <EmbedInteropTypes>True</EmbedInteropTypes>
    </COMReference>
  </ItemGroup>
...

Done.

Гайд написан с исследовательской целью – проверить возможность подписания документов УКЭП с помощью самописного сервиса на .NET Core 3.1 с формированием штампов подлинности и времени подписания документов.

Безусловно это решение не стоит брать в работу “как есть” и нужны некоторые доработки, но в целом оно работает и подписывает документы подписью УКЭП.

Архитектура «КриптоПро NGate»

С точки зрения архитектуры NGate состоит из следующих компонентов: клиента (в виде VPN-клиента или браузера), сервера (самого шлюза) и системы управления (центра управления сетью, ЦУС). Дополнительно потребуется организовать автоматизированное рабочее место (АРМ) для администратора.

Основой серверной части NGate является криптопровайдер «КриптоПро CSP». В новой версии шлюза используется обновлённая его редакция — 5.0 R2. В ней помимо прочего реализована работа с алгоритмами «Кузнечик» (ГОСТ 34.12-2015) и «Магма» (ГОСТ 28147-89), добавлена и расширена поддержка отечественных операционных систем («Аврора», Astra Linux, ALT Linux). Кроме того, появились возможности по построению решений на базе отечественных процессоров «Байкал». Таким образом, стало возможным полноценное импортозамещение при внедрении криптографического шлюза для организации защищённого удалённого доступа ко критическим ресурсам.

В зависимости от размера конкретной организации, её сетевой инфраструктуры, предполагаемого количества клиентов, одновременных подключений и других параметров возможны два варианта конфигурации.

Минимальная — единое решение из одного криптошлюза, объединённого с центром управления на одной аппаратной или же виртуальной платформе. Такой вариант подойдёт для использования небольшими организациями, у которых нет филиалов или сетевая инфраструктура которых не разнесена по разным центрам обработки данных (ЦОДам). Эта конфигурация является самой простой в установке и настройке, однако не может обеспечить высокую отказоустойчивость и производительность при доступе к ресурсам, системам и приложениям.

Рисунок 1. Схема внедрения «КриптоПро NGate» в минимальной конфигурации

Схема внедрения «КриптоПро NGate» в минимальной конфигурации

Кластерная конфигурация позволяет построить распределённую, отказоустойчивую и хорошо масштабируемую в части производительности систему. В этом варианте предусматривается объединение нескольких криптошлюзов (до 32 узлов единовременно) в один кластер. При этом центр управления сетью устанавливается отдельно и образует единую (централизованную) систему для настройки, мониторинга работы всех криптошлюзов и управления доступом к требуемым ресурсам и системам организации. Возможности центра управления по автоматизированной загрузке настроек и конфигураций на новые криптошлюзы в кластерах существенно облегчают и ускоряют процессы связанные как с вертикальной, так и с горизонтальной масштабируемостью системы. При этом выход из строя какого-либо узла кластера не приводит к разрыву соединений, поскольку балансировщик синхронизирует данные о сессии между устройствами и соединение перераспределяется на свободные узлы кластера. Может использоваться любой балансировщик, способный распределять TCP-соединения по узлам кластера, в том числе бесплатный HAProxy.

Рисунок 2. Схема внедрения «КриптоПро NGate» в виде кластера

Схема внедрения «КриптоПро NGate» в виде кластера

Рисунок 3. Реализация технологии TLS VPN с помощью «КриптоПро NGate» в виде кластера

Реализация технологии TLS VPN с помощью «КриптоПро NGate» в виде кластера

Соберем проект с поддержкой ГОСТ Р 34. 11-2012 256 bit

Гайд разделен на несколько этапов. Основная инструкция по сборке опубликована вместе с репозиторием DotnetCoreSampleProject – периодически я буду на нее ссылаться.

Первым делом создадим новую папку

… и положим туда все необходимое.

Инструкция делится на 2 этапа – мне пришлось выполнить оба, чтобы решение заработало. В папку добавьте подпапки .\runtime и .\packages

I – Сборка проекта без сборки corefx для Windows

  1. Установите КриптоПро 5.0 и убедитесь, что у вас есть действующая лицензия. – для меня подошла втроенная в ЭП;

  2. Установите core 3.1 sdk и runtime и распространяемый пакет Visual C++ для Visual Studio 2015 обычно ставится вместе со студией; прим.: на II этапе мне пришлось через установщик студии поставить дополнительное ПО для разработки на C++ – сборщик требует предустановленный DIA SDK.

  3. Задайте переменной среды DOTNET_MULTILEVEL_LOOKUP значение 0 – не могу сказать для чего это нужно, но в оригинальной инструкции это есть;

    1. package_windows_debug.zip распакуйте в .\packages

    2. runtime-debug-windows.zip распакуйте в .\runtime

  4. Добавьте источник пакетов NuGet в файле %appdata%\NuGet\NuGet.Config – источник должен ссылаться на путь .\packages в созданной вами папке. Пример по добавлению источника есть в основной инструкеии. Для меня это не сработало, поэтому я добавил источник через VS Community;

  5. git clone https://github.com/CryptoProLLC/NetStandard.Library
    New-Item -ItemType Directory -Force -Path "$env:userprofile\.nuget\packages\netstandard.library"
    Copy-Item -Force -Recurse ".\NetStandard.Library\nugetReady\netstandard.library" -Destination "$env:userprofile\.nuget\packages\"
  6. Склонируйте репизиторий DotnetCoreSampleProject в .\

  7. Измените файл .\DotnetSampleProject\DotnetSampleProject.csproj – для сборок System.Security.Cryptography.Pkcs.dll и System.Security.Cryptography.Xml.dll укажите полные пути к .\runtime;

  8. Перейдите в папку проекта и попробуйте собрать решение. Я собирал через Visual Studio после открытия проекта.

II – Сборка проекта со сборкой corefx для Windows

  1. Выполните 1-3 и 6-й шаги из I этапа;

  2. Склонируйте репозиторий corefx в .\

  3. Выполните сборку запустив .\corefx\build.cmd – на этом этапе потребуется предустановленный DIA SDK

  4. Выполните шаги 5, 7-9 из I этапа. Вместо условного пути .\packages укажите .\corefx\artifacts\packages\Debug\NonShipping, а вместо .\runtime укажите .\corefx\artifacts\bin\runtime\netcoreapp-Windows_NT-Debug-x64

На этом месте у вас должно получиться решение, которое поддерживает ГОСТ Р 34.11-2012 256 bit.

Дополнительные библиотеки Java

Нам понадобится библиотека iscjcp.jar (исходники здесь), в которой содержится ряд вспомогательных классов для работы с JCP из Caché. Кроме этого, потребуются три open source библиотеки — Commons Logging, Santuario (aka XML Security) и WSS4J. Их использование регулируется лицензией Apache Software License 2.0.

Загрузите архив jars.zip с четырьмя перечисленными библиотеками и распакуйте его в папку jre\lib\ext.

В случае использования Windows 7, необходимо выдать полномочия группе «Все» на чтение и выполнение всех библиотек в папке jre\lib\ext.

Просмотр сертификатов

1. Просмотр установленных сертификатов:

certmgr -list

2. Просмотр установленных сертификатов в локальном хранилище uMy:

certmgr -list -store uMy

3. Просмотр сертификатов в хранилище ПК (обычно сюда устанавливаются корневых сертификаты):

$ certmgr -list -store uRoot

4. Просмотр сертификатов в контейнере:

certmgr -list -container '\\.\Aladdin R.D. JaCarta 00 00\8df47e71-18ae-49c1-8738-9b4b0944dcd4'

5. Просмотр промежуточных сертификатов:

certmgr -list -store uca

Удаление сертификатов

1. Удалить сертификат из личного хранилища сертификатов

Просмотрите установленные сертификаты:

certmgr -list

Изучите список всех установленных сертификатов (в общем списке отображаются абсолютно все сертификаты).

Для удаления следует выполнить команду в Терминале:

certmgr -delete -store uMy

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

2. Удалить сертификаты, установленные в хранилище КриптоПро:

certmgr -delete -store uRoot

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

3. Удалить все сертификаты, установленные в хранилище КриптоПро:

certmgr -delete -all -store uRoot

4. Удалить все сертификаты, установленные в хранилище ПК:

certmgr -delete -store mRoot

Перенос контейнера с flash-носителя в локальное хранилище ПК

1. Активируем хранилище HDIMAGE:

cpconfig -hardware reader -add HDIMAGE store 

Adding new reader:
Nick name: HDIMAGE
Succeeded, code:0x0

2. Посмотрим, какие контейнеры доступны на флешке:

csptest -keyset -enum_cont -fqcn -verifyc 

CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 32114099
\\.\FLASH\bob
OK.
Total: SYS: 0,020 sec USR: 0,080 sec UTC: 0,190 sec
[ErrorCode: 0x00000000]

3. Перейдите на Flash-носитель и скопируйте этот контейнер — каталог bob.000 с приватными (закрытыми) ключами в /var/opt/cprocsp/keys/user – в этом каталоге находится локальное хранилище HDIMAGE

4. Посмотрим доступные контейнеры:

csptest -keyset -enum_cont -fqcn -verifyc 

CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 36951475
\\.\FLASH\bob
\\.\HDIMAGE\bob
OK.
Total: SYS: 0,000 sec USR: 0,070 sec UTC: 0,160 sec
[ErrorCode: 0x00000000]

Как видим, появился новый контейнер \\.\HDIMAGE\bob Теперь flash-носитель можно отключить, он нам больше не понадобится.

5. Установим пользовательский сертификат с привязкой к закрытому контейнеру \\.\HDIMAGE\bob

certmgr -inst -file cert-bob.cer -cont '\\.\HDIMAGE\bob'

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

Формирование ЭЦП для исходящих SOAP-сообщений веб-сервиса

Далее рассмотрим случай, когда все ответы веб-сервиса должны быть подписаны ЭЦП организации. В такой ситуации на сервере системы размещается хранилище, содержащее секретный ключ, который используется при формировании подписи. Кроме того, должен быть доступен сертификат, соответствующий этому ключу. В библиотеке iscjcp.jar реализована работа с хранилищем типа «FloppyStore». Поэтому, для формирования ЭЦП нам потребуется виртуальная дискета с хранилищем ключей.

Размещение секретного ключа и сертификата на виртуальной дискете на сервере системы

Чтобы создать такую дискету, выполните следующие действия:

  1. Установите драйвер, имитирующий FDD привод, например, ImDisk.
  2. Из панели управления Windows запустите программу настройки «ImDisk Virtual Disk Driver» и настройте диск с параметрами:
    • Drive letter: A,
    • Size of virtual disk: 1 Megabyte,
    • Device type: Floppy.
  3. Отформатируйте виртуальную дискету, задав файловую систему FAT.
  4. Распакуйте содержимое архива 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”. Этот сертификат соответствует секретному ключу, который будет использоваться при формировании ЭЦП. Скомпилируйте класс.

Теперь, чтобы добавить в метод веб-сервиса функционал по формированию ЭЦП для возвращаемых сообщений, необходимо вставить следующую строку в код этого метода:

do ..SecurityOut.AddElement(##class(smev.JcpSignature).%New())

Это работает на версиях Caché/Ensemble, начиная с 2009.1, по 2012.1 включительно. Ниже приведен пример веб-сервиса, где в метод echo() добавлено подписывание ответа.

Class test.TestService Extends %SOAP.WebService
{
  Parameter SERVICENAME = "TestService";

  Parameter NAMESPACE = "http://test/wsdl";

  Method echo(request As %String) As %String [ ProcedureBlock = 1, SoapAction = "urn:echo",
       SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
  {
     do ..SecurityOut.AddElement(##class(smev.JcpSignature).%New())
     quit request
  }

  Method OnPreSOAP(mode As %String, action As %String, request)
  {
    do ##super(mode, action, request)

    #dim stream As %Stream.Object = request

    if '$isObject(stream)
    {
      // на случай MIME attachments
      #dim index As %Integer = %request.NextMimeData("")
      set stream = $select(index="":"", 1:%request.GetMimeData(index))
    }

    if $isObject(stream)
    {
      #dim fault As %SOAP.Fault = ##class(smev.JcpUtils).verifySignatureOnPreSoap(stream)
      if $isObject(fault) set ..SoapFault = fault
    }
  }
}

Работа с криптоконтейнерами

1. Проверить наличие доступных контейнеров:

csptest -keyset -enum_cont -fqcn -verifyc | iconv -f cp1251  

CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 16778675
\\.\Aladdin R.D. JaCarta 00 00\8df47e71-18ae-49c1-8738-9b4b0944dcd4
\\.\FLASH\bob
\\.\HDIMAGE\bob
OK.
Total: SYS: 0,010 sec USR: 0,110 sec UTC: 6,240 sec
[ErrorCode: 0x00000000]

Имена контейнеров используются для установки личных сертификатов.

  • Считыватель FLASH означает, что используется флешка для хранения приватных ключей.
  • Также считывателем может выступать токен.

2. Имена контейнеров могут содержать символы на кириллице, поэтому чтобы корректно отобразить контейнеры используйте следующую команду:

csptest -keyset -enum_cont -fqcn -verifyc | iconv -f cp1251

Для дальнейшего использования имен контейнеров содержащих кодировку cp1251, выведем список контейнеров с уникальными именами:

csptest -keyset -enum_cont -fqcn -verifyc -uniq 

CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 23397811
\\.\Aladdin R.D. JaCarta 00 00\8df47e71-18ae-49c1-8738-9b4b0944dcd4 | \\.\Aladdin R.D. JaCarta 00 00\SCARD\JACARTA_6082028344937676\CC00\E412
OK.
Total: SYS: 0,000 sec USR: 0,110 sec UTC: 6,230 sec
[ErrorCode: 0x00000000]

3. Просмотр подробной информации о контейнере:

csptest -keyset -container '\\.\HDIMAGE\bob' -info

4. Перечисление контейнеров пользователя:

csptest -keyset -enum_cont -verifycontext -fqcn

5. Перечисление контейнеров компьютера:

csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys

6. Открыть(проверить) контейнер пользователя:

csptest -keyset -check -cont '\\.\имя считывателя\имя контейнера'

7. Открыть(проверить) контейнер компьютера:

csptest -keyset -check -cont '\\.\имя считывателя\имя контейнера' -machinekeyset

Так, а что надо на выходе?

А на выходе надо получить готовое решение, которое сделает отсоединенную ЭП в формате .sig со штампом времени на подпись и доказательством подлинности. Для этого зададим следующие критерии:

  1. ЭП проходит проверку на портале Госуслуг, через сервис для подтверждения подлинности ЭП формата PKCS#7 в электронных документах;

  2. КриптоАРМ после проверки подписи

    1. Заполнит поле “Время создания ЭП” – в конце проверки появится окно, где можно выбрать ЭП и кратко посмотреть ее свойства

      Стобец "Время создация ЭП"
      Стобец “Время создация ЭП”
    2. В информации о подписи и сертификате (двойной клик по записе в таблице) на вкладке “Штампы времени” в выпадающем списке есть оба значения и по ним заполнена информация:

      1. В протоколе проверки подписи есть блоки “Доказательства подлинности”, “Штамп времени на подпись” и “Время подписания”. Для сравнения: если документ подписан просто КЭП, то отчет по проверке будет достаточно коротким в сравнении с УКЭП.

    3. Контур.Крипто при проверке подписи выдаст сообщение, что совершенствованная подпись подтверждена, сертификат на момент подписания действовал и указано время создания подпись:

      Усовершенствованная подпись подтверждена
      Усовершенствованная подпись подтверждена

    Установка сертификатов pfx

    1. Необходимо установить пакет cprocsp-rsa, который находится в составе дистрибутива КриптоПро (linux-amd64).

    Читайте также:  КриптоПро | КриптоПро DSS 2.0

    2. Выполним команду от локального (доменного) пользователя:

    /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -pfx -pin <пинкод> -file 'путь до pfx'

    Цепочка сертификатов будет отображаться в утилите «Ключевые носители и сертификаты» в «Личное хранилище сертификатов».

    Что имеем на входе?

    1. КриптоПро CSP версии 5.0 – для поддержки Российских криптографических алгоритмов (подписи, которые выпустили в аккредитованном УЦ в РФ)

    2. КриптоПро TSP Client 2.0 – нужен для штампа времени

    3. КриптоПро OCSP Client 2.0 – проверит не отозван ли сертификат на момент подписания

    4. КриптоПро .NET Client – таков путь

    5. Любой сервис по проверке ЭП – я использовал Контур.Крипто как основной сервис для проверки ЭП и КриптоАРМ как локальный. А еще можно проверить ЭП на сайте Госуслуг

    6. КЭП по ГОСТ Р 34.11-2012/34.10-2012 256 bit, которую выпустил любой удостоверяющий центр

    Лицензирование ПО и версии
    1. КриптоПро CSP версии 5.0 – у меня установлена версия 5.0.11944 КС1, лицензия встроена в ЭП.

    2. КриптоПро TSP Client 2.0 и КриптоПро OCSP Client 2.0 – лицензии покупается отдельно, а для гайда мне хватило демонстрационного срока.

    3. КриптоПро .NET Client версии 1.0.7132.2 – в рамках этого гайда я использовал демонстрационную версию клиентской части и все действия выполнялись локально. Лицензию на сервер нужно покупать отдельно.

    4. Контур.Крипто бесплатен, но требует регистрации. В нем также можно подписать документы КЭП, УКЭП и проверить созданную подпись загрузив ее файлы.

    Тестирование веб-сервиса

    Чтобы протестировать проверку/формирование ЭЦП веб-сервисом test.TestService, исходный код которого приведен выше, выполним следующие действия.

    1. При помощи Studio создадим класс test.TestService в той же области, куда были импортированы классы smev.*. Исходный код нового класса скопируем из вышеприведенного листинга.
    2. Запустим в терминале Caché метод signFile() класса smev.JcpUtils:
      write ##class(smev.JcpUtils).signFile(“id1”, “C:\Temp\input.xml”, “C:\Temp\output.xml”)

      Убедимся в том, что в результате работы метода был создан файл C:\Temp\output.xml, содержащий подписанное SOAP-сообщение (Envelope): в заголовке (Header) находится ЭЦП в формате WS-Security, а тело (Body) представляет собой XML-документ, взятый из файла input.xml.

      Готовый файл output.xml имеется в архиве xmls.zip.

    3. Направим полученное SOAP-сообщение с ЭЦП на вход сервиса test.TestService. Для этого выполним в терминале Caché следующие команды (при необходимости, замените порт веб-сервера – “57772” на правильный, а также область “user” в предпоследней команде):

      set httprequest = ##class(%Net.HttpRequest).%New()
      set httprequest.Server = "localhost"
      set httprequest.Port = "57772"
      set httprequest.WriteRawMode = 1
      set httprequest.ContentType = "text/xml"
      do httprequest.SetHeader("SOAPAction","urn:echo")
      set fileStream = ##class(%Library.FileBinaryStream).%New()
      set fileStream.Filename = "C:\Temp\output.xml"
      do httprequest.EntityBody.CopyFrom(fileStream)
      do httprequest.Post("/csp/user/test.TestService.cls")
      do httprequest.HttpResponse.OutputToDevice()
      

      Если успешно прошла проверка ЭЦП входящего сообщения, а затем и формирование ЭЦП исходящего, то в окне терминала появится ответ веб-сервиса примерно такого вида:

    Все действия, описанные в статье, можно посмотреть в следующем видеоролике:

    Функциональные возможности «КриптоПро NGate»

    Режимы работы

    Подробное описание основных режимов работы шлюза приведено на основной странице, посвящённой его особенностям. Мы дадим краткое определение этих режимов, достаточное для формирования чёткого представления о них.

    Режим TLS-терминатора (TLS offload) или TLS-сервера для доступа к информационным ресурсам. При реализации такого формата функционирования шлюз становится промежуточным звеном между защищаемым публичным ресурсом и пользователем, который пытается получить доступ к нему используя веб-браузер (при этом установка VPN-клиента не требуется). NGate в режиме терминатора не осуществляет аутентификацию пользователей, но обеспечивает криптографическую защиту данных, передаваемых не только по HTTP, но и по HTTP/2, REST, gRPC, WebSockets и произвольным TCP-протоколам. Наиболее распространёнными и понятными примерами систем, для доступа к которым можно использовать криптографический шлюз в режиме терминатора, могут выступать различные государственные порталы (например, Единый портал государственных услуг), электронные торговые площадки, сайты дистанционного банковского обслуживания, видео-конференц-связи и телемедицины.

    В режиме сервера портального доступа криптошлюз также находится посередине между пользователями и защищаемыми ресурсами, к которым пользователь также подключается через браузер, но, в отличие от предыдущего варианта, берёт на себя аутентификацию пользователей и предоставляет доступ к целевым ресурсам через промежуточный веб-портал, являющийся частью NGate. Криптошлюз позволяет гибко управлять доступом на основе определённых политик, правил, пользовательских ролей и других параметров таким образом, что становится возможным разграничивать области видимости в зависимости от уровня доверия по отношению к пользователю.

    Режим VPN-сервера предназначен для реализации безопасного удалённого доступа сотрудников организации (на их устройства устанавливается VPN-клиент) к произвольным корпоративным ресурсам (файловым хранилищам, доступ по RDP и т. д.) с использованием технологии динамического туннелирования VPN TLS.

    Методы аутентификации

    NGate поддерживает разнообразные способы аутентификации, а также возможность их комбинировать:

    • по логину и паролю (Microsoft Active Directory, AD);
    • по сертификату (реализована не только простая проверка на валидность, но и аутентификация по различным полям сертификата: Organization, Organizational Unit (O / OU), Enhanced Key Usage, а также по дополнительным наборам полей, например СНИЛС, ИНН и т. д., в том числе при пустых полях O / OU);
    • по имени участника-пользователя (User Principal Name, UPN) в Microsoft AD;
    • с использованием сертификата присутствующего во внешней службе каталогов (Microsoft AD, LDAP);
    • по одноразовому паролю (One-Time Password, OTP) при интеграции с RADIUS-сервером;
    • с использованием сертификатов расположенных на различных токенах и смарт-картах (Aladdin, «Рутокен», Esmart и др.).

    Возможности интеграции

    Для расширения функциональных возможностей и формирования комплексных решений по защите сети, а также различных систем и ресурсов организации в соответствии с существующими потребностями бизнеса NGate можно гибко интегрировать с различными системами.

    Таблица 5. Примеры сторонних систем, с которыми возможна интеграция «КриптоПро NGate»

    Тип

    Системы

    Решения по обеспечению безопасности ЕБС

    Типовые решения «Ростелекома», «Центра Финансовых Технологий» (ЦФТ) и IDSystems по обеспечению безопасности при взаимодействии банков с ЕБС 

    Специализированные аппаратные платформы

    Промышленные планшеты MIG T10 и MIG T8, планшет «ПКЗ 2020», тонкие клиенты Dell Wyse и ТОНК, аппаратные платформы Getac

    Системы видео-конференц-связи

    TrueConf Server

    Межсетевые экраны для веб-приложений

    Сервис защиты веб-приложений Wallarm

    Межсетевые экраны

    Межсетевые экраны компаний Check Point, Fortinet, Ideco, UserGate

    Системы класса Mobile Device Management (MDM)

    SafePhone MDM, Microsoft Intune

    Системы мониторинга и SIEM

    «КриптоПро Центр Мониторинга» и любые сторонние системы, поддерживающие стандартные протоколы SNMP и Syslog

    Системы аутентификации

    Внешние службы каталогов (Microsoft AD, LDAP, FreeIPA, OpenLDAP, ApacheDS и др), RADIUS-серверы (Windows Server NPS, FreeRADIUS и т. д.)

    Системы аутентификации на основе OTP

    Продукт JaCarta Authentication Server (JAS) компании «Аладдин Р.Д.», решения компании Indeed-ID

    Новые функции и улучшения

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

    Далее мы кратко перечислим новые функции и возможности или улучшения NGate версии 1.0 R2:

    • Произошёл переход на новую базовую систему Debian 11.
    • Выполнен переход на новую версию программного кода Python 3 в связи с окончанием поддержки Python 2.x.
    • Произведено обновление криптопровайдера «КриптоПро CSP», составляющего основу серверной части шлюза, до версии 5.0 R2. В разделе с описанием архитектуры криптошлюза мы уже указали основные изменения, произошедшие в новой версии, поэтому дублировать их не будем.
    • Расширена поддержка RADIUS-серверов для многофакторной аутентификации: теперь можно получать одноразовые пароли не только через SMS, появилась возможность одновременного ввода различных комбинаций OTP, кода OTP PIN и пароля пользователя из AD или LDAP, а также совместно с пользовательским сертификатом.
    • Расширены возможности аутентификации по сертификату (Certificate Access Control List, ACL) на портале. Под порталом понимается сайт или группа сайтов, то есть совокупность ресурсов защищаемых криптошлюзом. Напомним, что теперь аутентификация возможна не только по полям Organization или Organizational Unit (O / OU), но и по дополнительным наборам полей.
    • Добавлена возможность разграничения доступа к защищаемым ресурсам в зависимости от поддержки (или её отсутствия) клиентским устройством криптографических алгоритмов ГОСТ.
    • Доработан и оптимизирован веб-интерфейс администратора. В частности, появилась панель для просмотра сессий подключённых пользователей и управления ими, добавлен способ быстрого копирования портала со всеми конфигурациями, расширен перечень вариантов фильтрации сертификатов, реализована функция создания резервной копии сразу из веб-интерфейса. Кроме того, были значительно дополнены комментарии к различным полям, упрощающие процессы взаимодействия с интерфейсом.
    • Добавлена возможность криптографической защиты трафика передаваемого по HTTP/2, REST, gRPC, WebSockets и произвольным TCP-протоколам. Последнее выступает аналогом инструмента Stunnel и используется в основном для реализации доступа к ресурсам управления промышленными устройствами, защиты почтового трафика, передачи файлов (например, по FTP), удалённого доступа к устройствам по SSH и т. д.
    • Реализована функция смены пароля пользователя в каталоге AD / LDAP при использовании клиента NGate.
    • Добавлены возможности более тонкой настройки маршрутизации, а также управления приоритетом опроса — в том числе DNS-серверов — при разрешении имён через туннель (путём настройки метрики туннельного интерфейса).
    • Значительно расширен перечень динамических HTTP-заголовков с информацией о клиенте, которые шлюз может отправлять защищаемым ресурсам. Кроме того, добавлена функция реализующая криптографическую защиту целостности передаваемых заголовков таким образом, чтобы ресурс мог проверить, кто является источником (или автором) конкретных заголовков и можно ли ему доверять. Отметим, что в случае передачи информации о паролях пользователей в HTTP-запросах она всегда шифруется с помощью специального алгоритма, построенного на базе симметричных шифров ГОСТ.
    • Расширены функции по контролю соединений пользователей и управлению ими: добавлены возможности по настройке задержки синхронизации, таймаута для постоянных (keep-alive) HTTP-соединений, ограничения количества одновременных сессий пользователя, а также автоматического отключения при отзыве пользовательского сертификата. Кроме того, появилась функция принудительного разрыва соединений администратором.
    • Добавлена поддержка TLS 1.3.
    Оцените статью
    ЭЦП Эксперт
    Добавить комментарий