Настройка КриптоПро (на примере версии 4.0)

Настройка в операционной системе Windows

Общие настройки

  1. Скачайте дистрибутив КриптоПро с официального сайта КриптоПРО в разделе загрузка. Доступ к скачиванию обеспечивается после регистрации на сайте.

  2. Установите КриптоПро.

  3. Настройте провайдер через Панель управления->КриптоПро 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.

Создание контейнеров с закрытыми ключами

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

  1. Контейнеры сохраняются на считывателях, соответственно, необходимо настроить считыватели на вкладке оборудование.

  2. Необходимо установить биологический датчик случайных чисел на вкладке оборудование.

    _images/cryptopro_readers.png

    Рис. 2 Настройка считывателей

    _images/cryptopro_random.png

    Рис. 3 Настройка датчиков случайных чисел

  3. Инициализировать датчик случайных чисел Крипто Про:

    csptest -keyset -verifycontext -hard_rng
    

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

  4. Для генерирования секретных ключей можно воспользоваться средством КриптоПро <каталог_установки_КриптоПро>\csptest.exe:

    csptest –keyset -provtype 81 -newkeyset -container <имя контейнера с секретным ключом>
    
  5. Необходимо создавать ключи без паролей, так как при аутентификации используется режим CRYPT_SILENT (чтобы не нарушать работу сервера(рисунок 4)).

    Запрос установки пароля

    Рис. 4 Запрос установки пароля

  6. При создании ключа следует учитывать разграничение доступа среди пользователей Windows, то есть ключ, созданный одним пользователем, не будет доступен другому. Если сервер работает в режиме службы (то есть от имени системного пользователя), то необходимо, чтобы владельцем контейнера с серверными ключами была сама операционная система. Для этого необходимо при создании серверного контейнера указать опцию -machinekeys:

    csptest –keyset -provtype 81 -newkeyset -container <имя контейнера>
    -machinekeys
    
  7. Ключи хранятся в следующем разделе реестра:

    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 с помощью тестового центра КриптоПро выполните следующие действия:

  1. Сформируйте запрос на получение сертификата с помощью утилиты 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.

  2. Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).

  3. Нажмите "Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64"

  4. Вставьте в поле "Base-64-шифрованный запрос сертификата" содержимое файла test.req и нажмите кнопку "Выдать".

  5. Сохраните файл по ссылке "Загрузить сертификат". Выгрузку сертификата необходимо проводить в формате Base64.

  6. Установите полученный от УЦ сертификат в указанный ключевой контейнер:

    certmgr -inst -store uMy -file certnew.cer -cont test_keys
    

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

Для этого нажмите "Сформировать ключи и отправить запрос на сертификат" и заполните некоторые данные.

Выданные сертификаты можно посмотреть в окне "Сертификаты" (Пуск\(\longrightarrow\)КРИПТО-ПРО\(\longrightarrow\)Сертификаты).

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

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

Настройка в операционной системе Linux

Общие настройки

  1. Архив с программным обеспечением можно загрузить с официального сайта КриптоПРО в разделе загрузка: linux-ia32.tgz, linux-amd64.tgz.

    Примечание

    По умолчанию при скачивании с сайта КриптоПро выдается лицензия на три месяца

  2. Распакуйте архив и перейдите в распакованную папку.

  3. Установите основные пакеты:

    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
    

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

  4. В Linux поддерживается провайдер Crypto-Pro GOST R 34.10-2012 KC1 CSP.

  5. Настройте сервер «РЕД База Данных» на работу с криптоплагином. Для этого в конфигурационном файле 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-2012

    • HashMethod – название или идентификатор алгоритма хэширования. Способ представления аналогичен SymmetricMethod.

    • ProviderName – название или идентификатор алгоритма криптопровайдера. Способ представления аналогичен SymmetricMethod.

Создание контейнера с закрытыми ключами

Предупреждение

Убедитесь, что пользователь операционной системы, от которого выполняется подключение, имеет достаточно прав на файл .registry_lock.

При использовании криптографических функций (например, во время многофакторной аутентификации) СУБД может падать внутри библиотеки КриптоПро версии 4.0 и ниже, если на файл /var/opt/cprocsp/tmp/.registry_lock установлены неправильные права (владелец root, например). В таком случае при попытке доступа к этому файлу из библиотеки КриптоПро происходит падение приложения, которое её использует. Таким приложением может быть клиент (например, ISQL) или процесс сервера. При этом выводится ошибка "support_mutex_open("registry_lock") failed:: Permission denied".

  1. Ридеры (readers) — устройства размещения контейнеров (аппаратные токены, каталог для размещения файлов). Просмотр доступных ридеров:

    $ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251
    

    Ридер HDIMAGE размещается на /var/opt/cprocsp/keys/<имя пользователя>/.

  2. Инициализация ридера HDIMAGE (под правами root):

    cpconfig -hardware reader -add HDIMAGE store
    
  3. Инициализировать датчик случайных чисел Крипто Про:

    $ csptest -keyset -verifycontext -hard_rng
    

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

  4. Создадим контейнер с именем 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]
    
  5. Ключи в Linux хранятся в /var/opt/cprocsp/keys/<имя пользователя>/<имя контейнера>.

  6. Просмотр доступных контейнеров:

    $ csptest -keyset -enum_cont -fqcn -verifyc
    
  7. Удаление контейнера:

    $ csptest -keyset -deletekeyset -cont '\\.\HDIMAGE\test'
    

Создание сертификата

Для получения сертификата в ОС Linux с помощью тестового центра КриптоПро выполните следующие действия:

  1. Сформируйте запрос на получение сертификата с помощью утилиты 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.

  2. Откройте тестовый удостоверяющий центр КриптоПро.

  3. Нажмите "Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64"

  4. Вставьте в поле "Base-64-шифрованный запрос сертификата" содержимое файла test.req и нажмите кнопку "Выдать".

  5. Сохраните файл по ссылке "Загрузить сертификат". Выгрузку сертификата необходимо проводить в формате Base64.

    Примечание

    Не все браузеры в ОС Linux могут поддерживать выгрузку сертификатов. Это зависит от настроек сервера центра сертификации.

  6. Устанавливаем, полученный от УЦ сертификат, в указанный ключевой контейнер:

    $ certmgr -inst -store uMy -file certnew.cer -cont '\\.\HDIMAGE\test'
    
  7. Чтобы посмотреть сертификаты, введите команду:

    $ certmgr -list
    
  8. Чтобы удалить сертификат, введите команду:

    $ 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