Настройка КриптоПро (на примере версии 4.0)
Настройка в операционной системе Windows
Общие настройки
Скачайте дистрибутив КриптоПро с официального сайта КриптоПРО в разделе загрузка. Доступ к скачиванию обеспечивается после регистрации на сайте.
Установите КриптоПро.
Настройте провайдер через Панель управления->КриптоПро CSP. На вкладке Алгоритмы настраиваются параметры для криптопровайдера (рисунок 1).
Рис. 1 Настройка алгоритмов
Название криптопровайдера –
GOST R 34.10-2012 Signature with Diffie_Hellman Key Exchange. Используется в параметреProviderNameфайла конфигурацииfirebird.conf;Параметры алгоритма шифрования – название алгоритма шифрования по умолчанию. Используется в параметре
SymmetricMethodфайла конфигурацииfirebird.conf;Параметры алгоритма подписи – название алгоритма ЭЦП по умолчанию, аналогично использование псевдонима
AT_SIGNATUREкак значение параметра для утилитыmint;Параметры алгоритма Диффи-Хелмана – название алгоритма, который будет использоваться по умолчанию для обмена сессионными ключами, аналогично использованию псевдонима
AT_KEYEXCHANGEкак значение параметра для утилитыmint.
Создание контейнеров с закрытыми ключами
Сессионные ключи генерируются плагином автоматически на время сессии. Для более безопасного обмена ими и аутентификации с использованием сертификата желательно использовать секретные ключи, которые хранятся в контейнерах.
Контейнеры сохраняются на считывателях, соответственно, необходимо настроить считыватели на вкладке оборудование.
Необходимо установить биологический датчик случайных чисел на вкладке оборудование.
Инициализировать датчик случайных чисел Крипто Про:
csptest -keyset -verifycontext -hard_rng
Если датчик случайных чисел не инициализирован, возможно появление его интерактивного окна при работе с функциями шифрования.
Для генерирования секретных ключей можно воспользоваться средством КриптоПро
<каталог_установки_КриптоПро>\csptest.exe:csptest –keyset -provtype 81 -newkeyset -container <имя контейнера с секретным ключом>
Необходимо создавать ключи без паролей, так как при аутентификации используется режим
CRYPT_SILENT(чтобы не нарушать работу сервера(рисунок 4)).
Рис. 4 Запрос установки пароля
При создании ключа следует учитывать разграничение доступа среди пользователей Windows, то есть ключ, созданный одним пользователем, не будет доступен другому. Если сервер работает в режиме службы (то есть от имени системного пользователя), то необходимо, чтобы владельцем контейнера с серверными ключами была сама операционная система. Для этого необходимо при создании серверного контейнера указать опцию
-machinekeys:csptest –keyset -provtype 81 -newkeyset -container <имя контейнера> -machinekeys
Ключи хранятся в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\SID пользователя\Keys\<имя контейнера>
Пример создания ключевой пары
csptest -keyset -newkeyset -container test_keyq
CSP (Type:80) v4.0.9014 KC1 Release Ver:4.0.9842 OS:Windows CPU:IA32
FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 8411672
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 Cryptographic
Service Provider
Container name: "test_keys"
Signature key is not available.
Attempting to create a signature key...
a signature key created.
Exchange key is not available.
Attempting to create an exchange key...
an exchange key created.
Keys in container:
signature key
exchange key
Extensions:
OID: 1.2.643.2.2.37.3.9
PrivKey: Not specified - 17.08.2018 19:19:40 (UTC)
OID: 1.2.643.2.2.37.3.10
PrivKey: Not specified - 17.08.2018 19:19:59 (UTC)
Total: SYS: 0,515 sec USR: 0,359 sec UTC: 121,656 sec
[ErrorCode: 0x00000000]
Получение сертификата
Для получения сертификата в ОС Windows с помощью тестового центра КриптоПро выполните следующие действия:
Сформируйте запрос на получение сертификата с помощью утилиты
cryptcpи ее командыcreatrqst.-creatrqst -dn <RDN> [-provtype <N>] [-provname <CSP>] [-SMIME] [-nokeygen|-exprt] [-keysize <n>] [-hashAlg <OID>] [-ex|-sg|-both] [-ku|-km] [-cont <имя>] [-silent] [-pin <пароль>|-askpin] [-certusage <OIDs>] [-der] [-ext <расширение>] <имя файла>
При генерации запроса для клиентского сертификата необходимо указать заранее созданный клиентский контейнер с ключевой парой. Для этого используется опция
-nokeygen. Например:cryptcp -creatrqst -nokeygen -cont test_keys -provtype 81 -dn CN=tester test.req
Подробнее о командах и входных параметрах этой утилиты см. руководство по приложению командной строки
CryptCPпо адресу: http://cryptopro.ru/sites/default/files/products/cryptcp/cryptcp_5.0.x.pdf.Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
Нажмите "Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64"
Вставьте в поле "Base-64-шифрованный запрос сертификата" содержимое файла
test.reqи нажмите кнопку "Выдать".Сохраните файл по ссылке "Загрузить сертификат". Выгрузку сертификата необходимо проводить в формате Base64.
Установите полученный от УЦ сертификат в указанный ключевой контейнер:
certmgr -inst -store uMy -file certnew.cer -cont test_keys
Также в ОС Windows возможно получение сертификата с помощью тестового центра КриптоПро без самостоятельного создания запроса.
Для этого нажмите "Сформировать ключи и отправить запрос на сертификат" и заполните некоторые данные.
Выданные сертификаты можно посмотреть в окне "Сертификаты" (Пуск\(\longrightarrow\)КРИПТО-ПРО\(\longrightarrow\)Сертификаты).
Рис. 5 Просмотр сертификатов
Настройка в операционной системе Linux
Общие настройки
Архив с программным обеспечением можно загрузить с официального сайта КриптоПРО в разделе загрузка:
linux-ia32.tgz, linux-amd64.tgz.Примечание
По умолчанию при скачивании с сайта КриптоПро выдается лицензия на три месяца
Распакуйте архив и перейдите в распакованную папку.
Установите основные пакеты:
rpm -i lsb-cprocsp-base-X.X.X-X.rpm rpm -i lsb-cprocsp-rdr-X.X.X-X.rpm rpm -i lsb-cprocsp-capilite-X.X.X-X.rpm rpm -i lsb-cprocsp-kc1-X.X.X-X.rpm
На ОС, основанных на Debian (Debian/Ubuntu) сначала необходимо поставить (если не установлены) пакеты LSB из состава дистрибутива, а также пакет
alien, который является штатным средством для установки.rpm:apt-get install lsb-base alien lsb-core
Затем при помощи
alienпоставить необходимые пакеты CSP, например:alien -kci ./lsb-cprocsp-base-X.X.X-X.rpm alien -kci ./lsb-cprocsp-rdr-X.X.X-X.rpm alien -kci ./lsb-cprocsp-capilite-X.X.X-X.rpm alien -kci ./lsb-cprocsp-kc1-X.X.X-X.rpm
КриптоПро устанавливается по пути
/opt/cprocsp. Контейнер должен быть доступен для пользователяreddatabase. Для этого скопируйте содержимое папки/var/opt/cprocsp/keys/userв/var/opt/cprocsp/keys/reddatabaseи назначьте права:chown -R reddatabase: /var/opt/cprocsp/keys/reddatabase
По мере удовлетворения зависимостей, возможно, потребуется установить другие пакеты.
В Linux поддерживается провайдер
Crypto-Pro GOST R 34.10-2012 KC1 CSP.Настройте сервер «РЕД База Данных» на работу с криптоплагином. Для этого в конфигурационном файле
firebird.confуказываются следующие параметры:CryptoPlugin– имя криптоплагина (значение по умолчаниюCrypto_API)SymmetricMethod– алгоритм, используемый для симметричного шифрования. Можно указывать название алгоритма или его идентификатор в криптопровайдере (AlgId). Идентификатор алгоритма можно узнать утилитамиmintиhashgenпри запуске без параметров (параметрCryptoPluginв конфигурационном файле должен быть задан) или утилитой КриптоПроcsptestс параметрами-enum -info.Если используется неанглоязычные названия алгоритмов, необходимо перекодировать их в 2-х байтный юникод, напримерГОСТ Р 34.11-2012примет вид%D0%93%D0%9E%D0%A1%D0%A2+%D0%A0+34.11-2012HashMethod– название или идентификатор алгоритма хэширования. Способ представления аналогиченSymmetricMethod.ProviderName– название или идентификатор алгоритма криптопровайдера. Способ представления аналогиченSymmetricMethod.
Создание контейнера с закрытыми ключами
Предупреждение
Убедитесь, что пользователь операционной системы, от которого выполняется подключение, имеет достаточно прав на файл .registry_lock.
При использовании криптографических функций (например, во время многофакторной аутентификации) СУБД может падать внутри библиотеки КриптоПро версии 4.0 и ниже,
если на файл /var/opt/cprocsp/tmp/.registry_lock установлены неправильные права (владелец root, например).
В таком случае при попытке доступа к этому файлу из библиотеки КриптоПро происходит падение приложения, которое её использует.
Таким приложением может быть клиент (например, ISQL) или процесс сервера.
При этом выводится ошибка "support_mutex_open("registry_lock") failed:: Permission denied".
Ридеры (readers) — устройства размещения контейнеров (аппаратные токены, каталог для размещения файлов). Просмотр доступных ридеров:
$ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251
Ридер
HDIMAGEразмещается на/var/opt/cprocsp/keys/<имя пользователя>/.Инициализация ридера
HDIMAGE(под правами root):cpconfig -hardware reader -add HDIMAGE store
Инициализировать датчик случайных чисел Крипто Про:
$ csptest -keyset -verifycontext -hard_rng
Если датчик случайных чисел не инициализирован, возможно появление его интерактивного окна при работе с функциями шифрования.
Создадим контейнер с именем
testв локальном ридереHDIMAGE. Команды для работы с сертификатом нужно выполнять от имени пользователя ОС, от которого в дальнейшем будет запускаться клиентское приложение:$ csptest -keyset -provtype 81 -newkeyset -cont '\\.\HDIMAGE\test' -keytype exchange
Для аутентификации по сертификату необходимо создать только ключи обмена (
-keytype exchange). Если создать ключи и обмена и подписи, то сертификат будет по умолчанию привязан к ключу подписи и аутентификация с ним работать не будет.При установленном пакете
cprocsp-rdr-gui-gtkбудет показано графическое окно, где предложат двигать курсором мыши. Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры. После показа окна будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет) и снова предложат двигать курсором мыши.CSP (Type:81) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. AcquireContext: OK. HCRYPTPROV: 6679219 GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP Container name: "card" Signature key is not available. Attempting to create a signature key... signature key created. Exchange key is not available. Attempting to create an exchange key... an exchange key created. Keys in container: signature key exchange key Extensions: OID: 1.2.643.2.2.37.3.9 OID: 1.2.643.2.2.37.3.10 Total: SYS: 0,030 sec USR: 0,160 sec UTC: 22,910 sec [ErrorCode: 0x00000000]
Ключи в Linux хранятся в
/var/opt/cprocsp/keys/<имя пользователя>/<имя контейнера>.Просмотр доступных контейнеров:
$ csptest -keyset -enum_cont -fqcn -verifyc
Удаление контейнера:
$ csptest -keyset -deletekeyset -cont '\\.\HDIMAGE\test'
Создание сертификата
Для получения сертификата в ОС Linux с помощью тестового центра КриптоПро выполните следующие действия:
Сформируйте запрос на получение сертификата с помощью утилиты
cryptcpи ее командыcreatrqst.-creatrqst -dn <RDN> [-provtype <N>] [-provname <CSP>] [-SMIME] [-nokeygen|-exprt] [-keysize <n>] [-hashAlg <OID>] [-ex|-sg|-both] [-ku|-km] [-cont <имя>] [-silent] [-pin <пароль>|-askpin] [-certusage <OIDs>] [-der] [-ext <расширение>] <имя файла>
При генерации запроса для клиентского сертификата необходимо указать заранее созданный клиентский контейнер с ключевой парой. Для этого используется опция
-nokeygen. Контейнер может быть указан без спецификатораHDIMAGE. Например:/opt/cprocsp/bin/ia32/cryptcp -creatrqst -nokeygen -cont '\\.\HDIMAGE\test' -provtype 81 -dn 'CN=tester' test.req
Предупреждение
Контейнер с ключевой парой, который используется для генерации запроса на получение клиентского сертификата, должен принадлежать тому же пользователю, для которого запрашивается сертификат.
Подробнее о командах и входных параметрах этой утилиты см. руководство по приложению командной строки
CryptCPпо адресу: https://www.cryptopro.ru/sites/default/files/products/cryptcp/cryptcp_5.0.x.pdf.Откройте тестовый удостоверяющий центр КриптоПро.
Нажмите "Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64"
Вставьте в поле "Base-64-шифрованный запрос сертификата" содержимое файла
test.reqи нажмите кнопку "Выдать".Сохраните файл по ссылке "Загрузить сертификат". Выгрузку сертификата необходимо проводить в формате Base64.
Примечание
Не все браузеры в ОС Linux могут поддерживать выгрузку сертификатов. Это зависит от настроек сервера центра сертификации.
Устанавливаем, полученный от УЦ сертификат, в указанный ключевой контейнер:
$ certmgr -inst -store uMy -file certnew.cer -cont '\\.\HDIMAGE\test'
Чтобы посмотреть сертификаты, введите команду:
$ certmgr -list
Чтобы удалить сертификат, введите команду:
$ certmgr -delete 1 $ certmgr -delete -all
Проверка сертификата
При проверке сертификата КриптоПро необходимо проверить сертификат центра сертификации и список отзыва. Можно в режиме онлайн, если с хоста сервера СУБД разрешено подключение к серверу УЦ КриптоПро. Если подключение запрещено или невозможно, для проверки сертификата нужно установить сертификат ЦС и список отзыва, скачав их по ссылке.
Установка должна выполняться в хранилище root от имени пользователя ОС, от которого будет запущен сервер СУБД. Пример команды установки сертификата ЦС:
sudo -u reddatabase /opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file /tmp/ca.cer
Установка списка отзыва сертификатов:
sudo -u reddatabase /opt/cprocsp/bin/amd64/certmgr -inst -crl -store uRoot -file /tmp/certcrl.crl