КриптоПро под Linux

Установка КриптоПро под Linux

Важно для версии КриптоПро 3.6: для amd64 архитектуры следует использовать lsb-cprocsp-base версии 3.6.1-4, а для i386 версию 3.6.4-4. Хоть этот пакет и не имеет тега архитектуры, на самом деле версия важна. Вероятная причина тут такая: в версии 3.6.1 в файле /etc/init.d/cprocsp установлена проверка на LSB «версии 3 и выше», а в 3.6.4 «версии 3 ровно», при этом в современных дистрибутивах LSB имеет версию 4. Также в этом init.d есть другие изменения.

CryptoPro устанавливается в /opt/cprocsp/. Все нужные бинарники лежат в bin/архитектура. В случае x64 версий архитектура amd64, в случае x32 — ia32. Соответственно вносите поправки в указанные ниже команды с учетом своей архитектуры.

Для того, чтобы можно было подписывать на сервере нужно устанавливать сертификаты с привязкой к приватному ключу. Т.к. криптопра написана матерыми виндузятниками, то кириллицу она отображает исключительно в кодировке 1251, а на серверах обычно UTF8, поэтому если криптопра пишет вопросиками или иероглифами — добавляйте в конец команды «|iconv -f windows-1251 -t utf-8».

Настройка ключей для подписывания на сервере

Установка сертификата с ключем:

  1. определяем пользователя, которым будет осуществляться подпись (тот же, под которым работает веб сервер). Далее делаем sudo -u юзер bash и остальные операции производим из-под этого пользователя;
  2. копируем каталог с ключами в /var/opt/cprocsp/keys/юзер/, где юзер — это соответственно пользователь из предыдущего пункта;
  3. командой /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc получаем список контейнеров с ключами, они будут иметь вид \\.\HDIMAGE\le-8da6f692-8c56-4742-8222-e5467a0cf472 или аналогичный, где куча буков-цифер как правило соответствует серийнику ключа. Находим в полученном списке тот ключ, который нужно добавить (в простейшем случае он будет просто единственным);
    • если ключей нет, то проверьте права доступа (каталог /var/opt/cprocsp/keys/юзер/ и все его содержимое должен принадлежать указанному юзеру, права на каталог должны быть 700), а также версию пакета lsb-cprocsp-base (см. выше);
  4. устанавливаем сертификат: /opt/cprocsp/bin/amd64/certmgr -inst -cont 'контейнер' -store uMy

    Бывают контейнеры без сертификата, только с ключем, в таком случае сертификат необходимо поместить в файл, а при его установке пользоваться ключем -file. Либо утилитой certfix можно установить сертификат в контейнер.

    • -cont 'контейнер' — контейнер, в котором лежат ключики сертификата (в соответствии с предыдущим пунктом)
    • -store uMy — это хранилице, в которое добавлять сертификат (по-умолчанию как раз uMy).

Посмотреть установленные сертификаты можно командой /opt/cprocsp/bin/amd64/certmgr -list Установленный сертификат должен иметь вид:

1-------
Issuer         : Блаблабла
Subject        : Блаблаблабла
Serial         : 0xXXXXXXXXXXXXXXXXXXXX
PrivateKey Link: Yes. Container: HDIMAGE\\le-8da6f.000\4CF6

Обратите внимание на строку со словами PrivateKey Link: Yes, если там стоит No, то ключ не установился и сертификатом будет нельзя ничего подписать. Просмотр имеющихся ридеров: /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -view

Еще мануал: http://estmnenie.com/cryptopro-csp-3-linux-how-to.html

Установка криптопры 4.0 и плагина 2 к хрому в Debian

  1. качаем дистр криптопры 4.0: https://www.cryptopro.ru/products/csp/downloads (я качал сертифицированную версию), и алилуйя — теперь там штатно есть .deb’ки;
  2.  качаем дистр плагина 2.0: https://www.cryptopro.ru/products/cades/downloads. deb’ок нет, поэтому конвертим rpm’ки:
    • fakeroot alien -kc cprocsp-pki-2.0.0-amd64-cades.rpm
    • fakeroot alien -kc cprocsp-pki-2.0.0-amd64-plugin.rpm
  3. ставим криптопру: распаковываем архив и запускаем там install.sh — нормально отработал, при этом сам удалил старые версии себя и почистил конфиги, встал через инсталлер с первого раза;
  4. ставим плагин:
    • dpkg -i cprocsp-pki-cades_2.0.0-1_amd64.deb cprocsp-pki-plugin_2.0.0-1_amd64.deb
  5. теперь пошли неочевидные фокусы: устанавливаем плагин в хром. В винде инсталлятор ставит его сам, но в линупсе все прописывается, но собственно хромовый плагин автоматом не ставится, и вообще отсутствует в дистрибутиве. Такша запускаем хром, идем в магазин расширений и ищем там iifchhfnnmpdbibifmljnfjhpififfog — найдется плагин криптопры для хрома. Ставим его;
  6. еще менее очевидный момент — криптопра сама ставит манифесты плагина в кучу разных мест, однако мой хром (chromium, возможно в официальном chrome ситуация иная) ни в одно из них так и не посмотрел, соответственно плагин не работает. Поэтому пихаем манифест в правильное место:
    • mkdir ~/.config/chromium/NativeMessagingHosts
    • ln -s /etc/opt/chrome/native-messaging-hosts/ru.cryptopro.nmcades.json ~/.config/chromium/NativeMessagingHosts/
  7. Страница доступна по адресу chrome-extension://iifchhfnnmpdbibifmljnfjhpififfog/trusted_sites.html однако даже если она работает, она не позволяет указать адрес с нестандартным портом, поэтому редактирование ini файла все равно может потребоваться.

    в линуксе в плагине 2й версии перестала работать страница настройки доверенных сайтов. Поэтому для возможности использования плагина, доверенные домены необходимо добавлять вручную. Это делается редактированием файла /var/opt/cprocsp/users/юзер/local.ini:

    • [Software\"Crypto Pro"\CAdESplugin]
      TrustedSites = msz:"http://ololo.cc", \
        "http://домен2", \
        "http://домен3"