Крипто-Про на сервере

по сравнению с
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (42)

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

Для полноценной работы необходимо добавить три хука

{toc}

h1. Выгрузка
h1. Установка крипто-про

rkn_download.sh
[Инструкция по установке и использованию на сайте altlinux|http://www.altlinux.org/КриптоПро], может не быть совместимой с CentOS на 100%.

На самом деле там много полезной информации помимо установки.

Часть её будет продублирована здесь:

Архив с программным обеспечением (КриптоПро CSP 3.6 R3) можно [загрузить|http://www.cryptopro.ru/downloads] после [предварительной регистрации|http://www.cryptopro.ru/products/csp/overview]:


Скачиваем linux-amd64.zip (9,1 МБ, для x86_64), далее, уже на сервере:

{code}
yum -y install unzip lsb pcsc-lite pcsc-lite-devel pcsc-lite-libs ccid
unzip linux-amd64.zip
yum -y install lsb-cprocsp* cprocsp*
#!/bin/bash {code}

prepare_request() {
Установить Драйвер с [http://www.rutoken.ru/support/download/drivers-for-nix/]
в нашем случае "Драйвер Рутокен S для GNU/Linux RPM для 64-bit (x64)"
PIN=ВАШ_ПИНКОД {code}
KEY=СТРОКА_ПОИСКА_КЛЮЧА # например email
REQUEST=$SSLDIR/php/request.xml ifd-rutokens
SIGN=$REQUEST.sign {code}

chroot $CHROOTDIR /bin/gen_request.sh || return 1
/opt/cprocsp/bin/amd64/cryptcp -sign -dn $KEY -der -pin $PIN -nochain $REQUEST $SIGN || return 2
}
Добавить бинарники в PATH
{code}
export PATH="$PATH:$(ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')"
{code}

h1. Диагностика
Зарегистрировать копию КриптоПро
{code}
#cpconfig -license -view
#cpconfig -license -set <license key>
#cpconfig -license -view
{code}

diagnostic.sh Перезагрузиться

Подключить ключ к серверу

Проверить наличие считывателя
{code}
#!/bin/bash #list_pcsc
available reader: Aktiv Co. Rutoken S 00 00
{code}

# проверка актуальности сертификата
check_cert_date() {
date_human="$(/opt/cprocsp/bin/amd64/certmgr -list | grep 'Not valid after' | sed -e 's/.*: //')"
read ddmmyyyy time mod <<< "$date_human"
IFS=/ read dd mm yyyy <<< "$ddmmyyyy"
date_finish_utc="$(date +%s --date "$yyyy-$mm-$dd $time $mod")"
days_before_finish=$(( ($date_finish_utc - $(date +%s))/ 86400 ))
echo -n " $days_before_finish дней"
[ "$days_before_finish" -gt '14' ]
Проверить что находится в списке настроенных считывателей
} {code}
#cpconfig -hardware reader -view

# заглушки, т.к. файла ключа нет
check_cert() {
return 0
}
Nick name: Aktiv Co. Rutoken S 00 00
Connect name:
Reader name: All PC/SC readers

check_key_in_cert() {
return 0
Nick name: FLASH
Connect name:
Reader name: FLASH
}
Nick name: HDIMAGE
Connect name:
Reader name:
{code}

h1. Получение информации о сертификате
Проверить что ключ подключен и читается
{code}
#csptest -keyset -enum_cont -verifycontext -fqcn

SP (Type:75) v3.6.5364 KC1 Release Ver:3.6.7491 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 22396611
\\.\Aktiv Co. Rutoken S 00 00\<UUID>
show_stat.sh OK.
Total:
[ErrorCode: 0x00000000]
{code}
cert_date() {
date_human="$(/opt/cprocsp/bin/amd64/certmgr -list | grep 'Not valid after' | sed -e 's/.*: //')"
read ddmmyyyy time mod <<< "$date_human"
IFS=/ read dd mm yyyy <<< "$ddmmyyyy"
date_finish_utc="$(date +%s --date "$yyyy-$mm-$dd $time $mod")"
days_before_finish=$(( ($date_finish_utc - $(date +%s))/ 86400 ))
echo "$days_before_finish"
}
Установить сертификат из контейнера
{code}
#certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 00\<UUID>'
{code}

Проверить что сертификат импортирован
{code}
#certmgr --list
{code}

Команда для создания подписи запроса (проще тестировать подложив нужные хуки на место и запуская команду service reductor update)

{code}
#cryptcp -sign -dn <строка поиска ключа> -der -pin <pin ключа> -nochain <файл запроса (request.xml)>
{code}

Источники:
# [https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/87/2/ustnovk-kriptopro-csp-ubuntu--rutoken]
# [http://www.rutoken.ru/support/download/drivers-for-nix/]



h1. Хуки

Установить их нужно следующими командами:

{code}
cd /usr/local/Reductor
# выгрузка
cp -vp contrib/examples/rkn_download.sh_with_cryptopro userinfo/hooks/rkn_download.sh
# показ статистики в меню и вебке
cp -vp contrib/examples/show_stat.sh_with_cryptopro userinfo/hooks/show_stat.sh
# диагностика (проверка времени работы ключа и его наличия)
cp -vp contrib/examples/diagnostic.sh_with_cryptopro userinfo/hooks/diagnostic.sh
{code}

В скрипте
{code}
userinfo/hooks/rkn_download.sh
{code}
Необходимо заполнить указать переменные PIN=ВАШ_ПИНКОД и KEY=СТРОКА_ПОИСКА_КЛЮЧА # например email