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

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

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

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

Установка крипто-про

Инструкция по установке и использованию на сайте altlinux, может не быть совместимой с CentOS на 100%.

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

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

Архив с программным обеспечением (КриптоПро CSP 3.6 R3) можно загрузить после предварительной регистрации:

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

yum -y install unzip lsb pcsc-lite pcsc-lite-devel pcsc-lite-libs ccid
unzip linux-amd64.zip
yum -y install lsb-cprocsp* cprocsp*

Установить Драйвер с http://www.rutoken.ru/support/download/drivers-for-nix/
в нашем случае "Драйвер Рутокен S для GNU/Linux RPM для 64-bit (x64)"

ifd-rutokens

Добавить бинарники в PATH

export PATH="$PATH:$(ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')"

Зарегистрировать копию КриптоПро

#cpconfig -license -view
#cpconfig -license -set <license key>
#cpconfig -license -view

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

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

Проверить наличие считывателя

#list_pcsc
available reader: Aktiv Co. Rutoken S 00 00

Проверить что находится в списке настроенных считывателей

#cpconfig -hardware reader -view

Nick name: Aktiv Co. Rutoken S 00 00
Connect name:
Reader name: All PC/SC readers

Nick name: FLASH
Connect name:
Reader name: FLASH

Nick name: HDIMAGE
Connect name:
Reader name:

Проверить что ключ подключен и читается

#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>
OK.
Total:
[ErrorCode: 0x00000000]

Установить сертификат из контейнера

#certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 00\<UUID>'

Проверить что сертификат импортирован

#certmgr --list

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

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

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

Хуки

Выгрузка

rkn_download.sh

#!/bin/bash

prepare_request() {
	PIN=ВАШ_ПИНКОД
	KEY=СТРОКА_ПОИСКА_КЛЮЧА # например email
	REQUEST=$SSLDIR/php/request.xml
	SIGN=$REQUEST.sign

	chroot $CHROOTDIR /bin/gen_request.sh || return 1
	/opt/cprocsp/bin/amd64/cryptcp -sign -dn $KEY -der -pin $PIN -nochain $REQUEST $SIGN || return 2
}

Диагностика

diagnostic.sh

#!/bin/bash

# проверка актуальности сертификата
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' ]
}

# заглушки, т.к. файла ключа нет
check_cert() {
	return 0
}

check_key_in_cert() {
	return 0
}

Получение информации о сертификате

show_stat.sh

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"
}
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.