Offline

Fellix

 


#1
Оставлено
:

26 ноября 2020 г. 15:21:46(UTC)

Fellix

Статус: Новичок

Группы: Участники

Зарегистрирован: 26.11.2020(UTC)
Сообщений: 1

Здравствуйте. Не получается установить КриптоПро 5.0 на Ubuntu 18.04.
При установке

sudo ./install.sh

Error: the following packages are not available in the current directory:
* lsb-cprocsp-rdr
* lsb-cprocsp-kc1
* lsb-cprocsp-capilite
* cprocsp-curl


Вверх


Offline

Александр Лавник

 


#2
Оставлено
:

26 ноября 2020 г. 17:01:49(UTC)

Александр Лавник

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,359
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 769 раз в 711 постах

Автор: Fellix Перейти к цитате

Здравствуйте. Не получается установить КриптоПро 5.0 на Ubuntu 18.04.
При установке

sudo ./install.sh

Error: the following packages are not available in the current directory:
* lsb-cprocsp-rdr
* lsb-cprocsp-kc1
* lsb-cprocsp-capilite
* cprocsp-curl

Здравствуйте.

Вероятно, Вы пытаетесь использовать для установки дистрибутив КриптоПро CSP, который не предназначен для Вашей операционной системы.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

  • #1

Всем привет! Пытаюсь установить крипто про 4 CSP в astra linux из tar. При запуске выдает что не хватает пакетов (выделил жирным).
Подскажите где икать / как ставить ?

user@astra:~/Загрузки/linux-ia32_deb$ sudo ./install.sh
Error: the following packages are not available in the current directory:
* lsb-cprocsp-rdr
* lsb-cprocsp-kc1
* lsb-cprocsp-capilite
* cprocsp-curl

Последнее редактирование:

  • #6

Еще вопрос, как установить в astra linux через консоль fly цепочки сертификатов .p7b ?:unsure:
Нигде не нашел как ставить…

Попробуй сконвертировать .p7b в .cer
openssl pkcs7 -inform der -in a.p7b -out a.cer

Потом поставить
Если исходный сертификат имеет кодировку DER
openssl x509 -inform DER -in /path/certificate.cer -out certificate.crt

Если исходный сертификат имеет кодировку PEM
openssl x509 -inform PEM -in /path/certificate.cer -out certificate.crt

Скопировать полученный сертификат в папку /usr/share/ca-certificates:
sudo cp /path/certificate.crt /usr/share/ca-certificates


0

1

Ребята, здорова! У меня ИП, хочу участвовать в торгах.
Получил сегодня подпись бесплатную в Налоговой на железку Рутокен Lite (https://www.rutoken.ru/products/all/rutoken-lite/, бордовый пластиковый полу-прозрачный с надписью Контур).

Я пытаюсь действовать по инструкции https://zakupki.gov.ru/auth/welcome.

Итак, начинаем с "КриптоПро CSP" версии 4.0
https://cryptopro.ru/products/csp/downloads#latest_csp40r4_linux

Что делаю:

dragonserw@raspberrypi:~ $ cd '/home/dragonserw/Documents/КриптоПро CSP 4.0 для Linux (arm64, deb)/linux-arm64_deb/'
dragonserw@raspberrypi:~/Documents/КриптоПро CSP 4.0 для Linux (arm64, deb)/linux-arm64_deb $ sudo sh '/home/dragonserw/Documents/КриптоПро CSP 4.0 для Linux (arm64, deb)/linux-arm64_deb/install_gui.sh'

Сразу скажу, что ежели нужна машина x86_64, то таковая тоже есть, но она с пропеллером, не хочу ее включать вместо Малинки.

Итак, запускаю я /install_gui.sh:

CryptoPro CSP Setup
Error: the following packages are not available in the current directory:
lsb-cprocsp-rdr                                                          
lsb-cprocsp-kc1                                                          
lsb-cprocsp-capilite                                                     
cprocsp-curl                                                             
lsb-cprocsp-kc1                                                                      

Для работы нужна электронная подпись. Ключ — USB флешка. Для подписания документов нужна программа КриптоПро CSP 4.0 R3 — она есть в deb и rpm. В АУРЕ нет. Точно нет. Да искал. Нет не нашел.
Суть проблемы — скачал программу, формат linux-ia32_deb.tgz Софт: Наболевшее, установка .deb \ .rpm, собственно как я понял архив. Распаковываем, и видим кучу .deb пакетов и файл install.sh Софт: Наболевшее, установка .deb \ .rpm

Открываем install.sh и видим, то ли лицензию, то ли предупреждение и, как я понял (честно — не понял) инструкцию на исполнение установки, или как это называется

COMPAT_VERSION=«1.0.0-1»
VERSION=«4.0.*-5»
PACKAGE_NAMES=””
FROM_REPO=0

# Exit codes.
SUCCESS=0
FAILURE=1
PACKAGES_NOT_AVAILABLE=2

parse_args() {
_enclosure=«kc1»
while! [ -z “$1” ]; do
case “$1” in
«kc1»)
;;
«kc2»)
_enclosure=«kc2»
;;
“–from-repo”)
FROM_REPO=1
;;
“-help”|”–help”)
show_help
exit “${SUCCESS}”
;;
*)
_additional_packages=”$*”
break
;;
esac
shift
done
PACKAGE_NAMES=«lsb-cprocsp-base \
lsb-cprocsp-rdr lsb-cprocsp-${_enclosure} lsb-cprocsp-capilite cprocsp-curl \
lsb-cprocsp-ca-certs \
${_additional_packages}»
}

show_help() {
echo “\
usage: ./install.sh [kc1|kc2] [package […]]
kc1: install kc1 packages (by default)
kc2: install kc2 packages
[package […]]: list of additional packages”
}

which_architecture() {
machine_architecture=”$(uname -m)”
case “${machine_architecture}” in
«x86_64»|«amd64»|«ppc64»|«ppc64le»)
bits_postfix=”-64″
;;
*)
bits_postfix=””
;;
esac
case “${machine_architecture}” in
arm*)
is_arm=1
;;
*)
is_arm=0
;;
esac
}

check_if_debian_system() {
if [ -f /etc/debian_version ] ||
grep Ubuntu /etc/lsb-release > /dev/null 2>&1
then
is_debian_system=1
else
is_debian_system=0
fi
}

check_release_attributes() {
if ls ./lsb-cprocsp-base*.deb > /dev/null 2>&1; then
is_debian_release=1
else
is_debian_release=0
fi
if ls ./lsb-cprocsp-base*.rpm > /dev/null 2>&1; then
is_rpm_release=1
else
is_rpm_release=0
fi
if ls ./lsb-cprocsp-rdr-64* > /dev/null 2>&1; then
is_64_release=1
else
is_64_release=0
fi
}

# Use dpkg or alien on debian systems, otherwise use rpm.
set_inst_cmd() {
if [ “${is_debian_system}” -eq 1 ]; then
if [ “${is_debian_release}” -eq 1 ]; then
inst_cmd=«dpkg -i»
else
inst_cmd=«alien -kci»
fi
else
if [ “${is_rpm_release}” -eq 1 ]; then
inst_cmd=«rpm -i»
else
echo «Error: you are trying to install debian packages on not debian package system»
exit “${FAILURE}”
fi
fi
}

# The release variables are used to construct full names of packages.
set_release_variables() {
if [ “${is_debian_system}” -eq 1 ] &&
[ “${is_debian_release}” -eq 1 ]
then
first_delimeter=”_”
noarch=«all»
second_delimeter=”_”
extension=”.deb”
else
first_delimeter=”-“
noarch=«noarch»
second_delimeter=”.”
extension=”.rpm”
fi
case “${machine_architecture}” in
# Enforce to install 64-bit packages on 64-bit system.
«x86_64»|«amd64»)
if [ “${is_debian_system}” -eq 1 ] &&
[ “${is_debian_release}” -eq 1 ]
then
arch=«amd64»
else
arch=«x86_64»
fi
;;
«ppc64»|«ppc64le»)
arch=”${machine_architecture}”
;;
arm*|«mips»)
arch=”${noarch}”
;;
*)
if [ “${is_debian_system}” -eq 1 ] &&
[ “${is_debian_release}” -eq 1 ]
then
arch=«i386»
elif ls ./*.i686.rpm > /dev/null 2>&1; then
arch=«i686»
else
arch=«i486»
fi
;;
esac
}

lsb_warning() {
echo «Warning: lsb-core or lsb-compat package not installed — installing cprocsp-compat-debian.
If you prefer to install system lsb-core or lsb-compat package then
* uninstall CryptoPro CSP
* install lsb-core or lsb-compat manually
* install CryptoPro CSP again
»
}

construct_compat_package() {
if [ -f /etc/cp-release ]; then
if grep Gaia /etc/cp-release > /dev/null 2>&1; then
_distr=«gaia»
else
_distr=«splat»
fi
elif [ -f /etc/altlinux-release ]; then
_distr=«altlinux${bits_postfix}»
elif [ -f /etc/os-rt-release ]; then
_distr=«osrt${bits_postfix}»
elif [ “${is_arm}” -eq 1 ]; then
_distr=«armhf»
elif [ “${is_debian_system}” -eq 1 ]; then
if dpkg -s lsb-core > /dev/null 2>&1 ||
dpkg -s lsb-compat > /dev/null 2>&1
then
compat_package=””
return
else
lsb_warning
_distr=«debian»
fi
else
compat_package=””
return
fi
compat_package=«cprocsp-compat-\
${_distr}\
${first_delimeter}\
${COMPAT_VERSION}\
${second_delimeter}\
${noarch}\
${extension}»
}

construct_other_packages() {
other_packages=””
_absent=””
for _name in ${PACKAGE_NAMES}; do
_package=”${_name}”
if [ “${is_64_release}” -eq 1 ]; then
_package=”${_package}${bits_postfix}”
fi
_package=”${_package}\
${first_delimeter}\
${VERSION}\
${second_delimeter}\
${arch}\
${extension}”
# There are several packages which are NOT architecture-specific,
# e.g. lsb-cprocsp-base, lsb-cprocsp-ca-certs and devel-packages.
# If the architecture-specific package is not found, try to install
# the noarch package.
# shellcheck disable=SC2086
if! [ -f ${_package} ]; then
_package=”${_name}\
${first_delimeter}\
${VERSION}\
${second_delimeter}\
${noarch}\
${extension}”
fi
# Even the noarch package wasn’t found.
# shellcheck disable=SC2086
if! [ -f ${_package} ]; then
_absent=”${_absent} ${_name}”
else
other_packages=”${other_packages} ${_package}”
fi
done
if! [ -z “${_absent}” ]; then
echo «Error: the following packages are not available in the current directory:»
echo “${_absent}” | xargs -n1 echo “*”
exit “${PACKAGES_NOT_AVAILABLE}”
fi
}

construct_list_of_packages() {
packages=””
construct_compat_package
packages=”${packages} ${compat_package}”
# Other packages are the base packages and additional packages
# specified by command-line arguments.
construct_other_packages
packages=”${packages} ${other_packages}”
# Remove duplicate packages.
packages=”$(
echo “${packages}” \
| awk ‘{for(i=1;i<=NF;i++)if(!a[$i]++)print $i}’ | xargs
)”
}

check_fail() {
echo «Error: installation failed. LSB package may not be installed.
Install LSB package and reinstall CryptoPro CSP. If it does not help, please
read installation documentation or contact the manufacturer: support@cryptopro.ru.»
exit “$1”
}

# Install packages one at a time before capilite, then batch install.
install_packages() {
while! [ -z “${packages}” ]; do
_head=”$(echo “${packages}” | awk ‘{print $1}’)”
_tail=”$(echo “${packages}” | awk ‘{for(i=2;i<=NF;i++)print $i}’ | xargs)”
echo «Installing ${_head}…» >&2
# shellcheck disable=SC2086
${inst_cmd} ${_head} >&2 || check_fail “$?”
if echo “${_head}” | grep capilite > /dev/null 2>&1 &&
! [ -z “${_tail}” ]
then
echo «Installing ${_tail}…» >&2
# shellcheck disable=SC2086
${inst_cmd} ${_tail} >&2 || check_fail “$?”
return
fi
packages=”${_tail}”
done
}

construct_list_of_packages_from_repository() {
_tmp_repo=”$(mktemp)”
# Если файл со списком пакетов в репозитории существует и единственный, то скопировать его во временный файл _tmp_repo.
# shellcheck disable=SC2144
if [ -f /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages* ]; then
cp /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages* “${_tmp_repo}”
fi
# Если lz-архив со списком пакетов в репозитории существует и единственный, то разархивировать его во временный файл _tmp_repo.
# shellcheck disable=SC2144
if [ -f /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages*.lz ]; then
lzip -d -c /var/lib/apt/lists/cryptopro.ru_debrepo_dists_*-unstable_main_binary-*_Packages*.lz > “${_tmp_repo}”
fi
packages=””
_absent=””
for _name in ${PACKAGE_NAMES}; do
_package=”${_name}${bits_postfix}”
if! grep ‘Package:’ “${_tmp_repo}” | grep “${_package}” > /dev/null 2>&1
then
_package=”${_name}”
fi
if! grep ‘Package:’ “${_tmp_repo}” | grep “${_package}” > /dev/null 2>&1
then
_absent=”${_absent} ${_name}”
else
packages=”${packages} ${_package}”
fi
done
rm -f “${_tmp_repo}”
if! [ -z “${_absent}” ]; then
echo «Error: the following packages are not available in the current repository:»
echo “${_absent}” | xargs -n1 echo “*”
exit “${PACKAGES_NOT_AVAILABLE}”
fi
# Remove duplicate packages.
packages=”$(
echo “${packages}” \
| awk ‘{for(i=1;i<=NF;i++)if(!a[$i]++)print $i}’ | xargs
)”
}

main() {
if [ “$(id -u)” -ne 0 ]; then
echo «Error: this script must be run as root»
exit “${FAILURE}”
fi
cd “$(dirname “$0″)” || check_fail “$?”
parse_args “$@”
which_architecture
if [ “${FROM_REPO}” -eq 1 ]; then
construct_list_of_packages_from_repository
sh ./uninstall.sh >&2 || check_fail “$?”
# shellcheck disable=SC2086
apt-get –yes install ${packages} >&2 || check_fail “$?”
echo «CSP packages have been successfully installed from a repository»
exit “${SUCCESS}”
fi
check_if_debian_system
check_release_attributes
set_inst_cmd
set_release_variables
construct_list_of_packages
sh ./uninstall.sh >&2 || check_fail “$?”
install_packages
echo «CSP packages have been successfully installed»
exit “${SUCCESS}”
}

main “$@”

.
И собственно вопрос, как мне из всего этого собрать пакет для установки программы?

Установка и настройка КриптоПро CSP в Porteus Linux

КриптоПро — линейка криптографических утилит для генерации ЭЦП, работы с сертификатами, организации структуры PKI. Незаменимый продукт для работы в ЕИС (zakupki.gov.ru), Официальный сайт ГМУ (bus.gov.ru), Электронный бюджет (budget.gov.ru), Портал государственных услуг РФ + Единая система идентификации и аутентификации ЕСИА (esia.gosuslugi.ru), Федеральная налоговая служба (lkfl.nalog.ru) и т.д. Авторизация в личных кабинетах ГИС-ов возможна только по ГОСТ-у. Для этого можно использовать браузер Chromium с поддержкой ГОСТ —

скачать для x86_64

(

репозиторий на github.com

)

chromium-gost — веб-браузер с открытым исходным кодом на основе Chromium с поддержкой криптографических алгоритмов ГОСТ при установке защищённых соединений через интерфейс msspi
Для работы криптографических алгоритмов ГОСТ у вас должен быть установлен КриптоПро CSP (или другой криптопровайдер поддерживающий работу алгоритмов ГОСТ в интерфейсе SSPI)

Заметка. Все команды описанные в данной статье выполняем под root пользователем.
Для авторизации в качестве root пользователя выполните в терминале:

Скрипт автоматизированной сборки xzm модулей KC1 и KC2 КриптоПро CSP для Porteus

Code: Select all

#!/bin/bash

# Copyright 2017-2025  Blaze, Russian Federation, Lipetsk region, Dankov
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# This is script for the automated building KC1 and KC2 xzm modules from rpm packages
# of CryptoPro CSP for Porteus i686 and x86_64.
#
#
# Date: 11.09.2017 20:58:47 (UTC+3)
#
#
# Скрипт для автоматизированной сборки KC1 и KC2 xzm модулей КриптоПро CSP для Porteus
# Вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами
# linux-ia32.tgz или linux-amd64.tgz, в зависимости от архитектуры ПК
# ссылка на загрузку https://www.cryptopro.ru/products/csp/downloads
# скопируйте данный архив в /tmp

if [ `whoami` != "root" ]; then
   echo 'Этот скрипт должен быть запущен с правами root'
   exit 1
fi

cd /tmp

# сборка для архитектуры i586
if [ -f "linux-ia32.tgz" ]; then
   mv linux-ia32.tgz linux-ia32.tar.gz
   tar xvf linux-ia32.tar.gz
   cd /tmp/linux-ia32
   VER=$(cat linux-ia32.ini | grep version= | cut -d "=" -f2)
   rm accord_random-*src.rpm
   rm cprocsp-drv*.rpm
   rm cprocsp-ipsec*.rpm
   rm cprocsp-pki*.rpm
   rm lsb-cprocsp-devel*.rpm
   rm lsb-cprocsp-rdr-sobol*.rpm
   rm sobol*.rpm
   rpm2xzm *.rpm *.xzm
   rm {*.rpm,*.sh,*.ini,cpverify}
   for x in `find . -type f ! -name 'lsb-cprocsp-kc1*' ! -name 'lsb-cprocsp-kc2*' | fgrep .xzm | sort`; do unsquashfs -n -f $x >/dev/null; done
   mkdir cprocsp-kc2-$VER-$(arch)
   cp -a squashfs-root/* cprocsp-kc2-$VER-$(arch)
   mv squashfs-root cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc1*.xzm cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc2*.xzm cprocsp-kc2-$VER-$(arch)
   rm *.xzm
   dir2xzm cprocsp-kc1-$VER-$(arch) cprocsp-kc1-$VER-i686.xzm
   dir2xzm cprocsp-kc2-$VER-$(arch) cprocsp-kc2-$VER-i686.xzm
   rm -rf /tmp/linux-ia32/cprocsp-kc?-$VER-$(arch) && rm install.desktop
   else echo "Архив linux-ia32.tgz не найден в директории /tmp"
fi

cd /tmp

# сборка для архитектуры x86_64
if [ -f "linux-amd64.tgz" ]; then
   mv linux-amd64.tgz linux-amd64.tar.gz
   tar xvf linux-amd64.tar.gz
   cd /tmp/linux-amd64
   VER=$(cat linux-amd64.ini | grep version= | cut -d "=" -f2)
   rm accord_random-*src.rpm
   rm cprocsp-drv*.rpm
   rm cprocsp-ipsec*.rpm
   rm cprocsp-pki*.rpm
   rm lsb-cprocsp-devel*.rpm
   rm lsb-cprocsp-rdr-sobol*.rpm
   rm sobol*.rpm
   rpm2xzm *.rpm *.xzm
   rm {*.rpm,*.sh,*.ini,cpverify}
   for x in `find . -type f ! -name 'lsb-cprocsp-kc1*' ! -name 'lsb-cprocsp-kc2*' | fgrep .xzm | sort`; do unsquashfs -n -f $x >/dev/null; done
   mkdir cprocsp-kc2-$VER-$(arch)
   cp -a squashfs-root/* cprocsp-kc2-$VER-$(arch)
   mv squashfs-root cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc1*.xzm cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc2*.xzm cprocsp-kc2-$VER-$(arch)
   rm *.xzm
   dir2xzm cprocsp-kc1-$VER-$(arch) cprocsp-kc1-$VER-x86_64.xzm
   dir2xzm cprocsp-kc2-$VER-$(arch) cprocsp-kc2-$VER-x86_64.xzm
   rm -rf /tmp/linux-amd64/cprocsp-kc?-$VER-$(arch) && rm install.desktop
   else echo "Архив linux-amd64.tgz не найден в директории /tmp"
fi

Скачиваем и распаковываем под root-ом мой скрипт

cprocsp.tar.bz2

в директории /tmp
Вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами linux-ia32.tgz или linux-amd64.tgz, в зависимости от архитектуры ПК
ссылка на загрузку

https://www.cryptopro.ru/products/csp/downloads

скопируйте данный архив(ы) в /tmp

Запускаем скрипт

Code: Select all

cd /tmp
# wget http://csp.ublaze.ru/cprocsp.tar.bz2
# tar xvf cprocsp.tar.bz2
./cprocsp.sh

Затем настраиваем КриптоПро CSP в Porteus Linux согласно этой инструкции

Готовые xzm модули с КриптоПро CSP для архитектур

i586

и x86_64

Заметка. Требования к уровню защиты информации КС2 содержат требования к уровню КС1 плюс дополнительные требования. Уровень защиты информации определяется потенциальными возможностями нарушителя, в соответсвии с базовой моделью нарушителя, разработанной ФАПСИ. Вкратце — для уровня КС1 предполагается, что имеем случайного внешнего нарушителя который может перхватывать информацию в каналах связи — следоватлеьно достаточные требования — математическая стойкость, корректности реализации и качество ключей. Уровень КС2 — неавторизованный внутренний нарушитель — следовательно достаточные дополнительные требования — разграничение доступа к СКЗИ, ну там есть еще кое-чего. Это влечет за собой наличие в системе сертифицированного фапси/фсб электронного замка, его основная задача — идентфикация и аутентфикация пользователя, проверка целсотности, доверенная загрузка. дополнительно — качественный аппаратный датчик случайных чисел и интерфейс к носителью ключевой информации.

Установка переменных окружения.

Чтобы каждый раз не вводить полный путь к утилитам КриптоПро CSP выполните команды:

Code: Select all

sed -i "s|ENV_SUPATH     PATH=|ENV_SUPATH     PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr 'n' ':')"|g" /etc/login.defs
sed -i "s|/usr/games|/usr/games:"$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr 'n' ':'| rev | cut -d: -f2- | rev)"|g" /etc/profile

Создание необходимых привязок и кэша для необходимых динамических библиотек.

Указываем чтобы считывались нестандартные библиотеки, для этого терминале выполните команды:

Code: Select all

# Для архитектуры x86_64
echo '/opt/cprocsp/lib/amd64' >> /etc/ld.so.conf
echo 'ldconfig' >> /etc/rc.d/rc.local
ldconfig

#в новой версии CSP - cp-openssl не требуется
#echo '/opt/cprocsp/cp-openssl/lib/amd64' >> /etc/ld.so.conf

# для GostEngy (обеспечивает поддержку ключей и алгоритмов ГОСТ через вызовы КриптоПро CSP) 
# ссылка https://update.cryptopro.ru/support/nginx-gost/bin/
#echo '/opt/cprocsp/cp-openssl-1.1.0/lib/amd64' >> /etc/ld.so.conf

Code: Select all

# Для архитектуры i586
echo '/opt/cprocsp/lib/ia32' >> /etc/ld.so.conf
echo 'ldconfig' >> /etc/rc.d/rc.local
ldconfig

#в новой версии CSP - cp-openssl не требуется
#echo '/opt/cprocsp/cp-openssl/lib/ia32' >> /etc/ld.so.conf

# GostEngy под i586 не нашел

Проверка версии и лицензии КриптоПро CSP.

Для проверки версии КриптоПро CSP выполните:

Для установки лицензии КриптоПро CSP выполните:

Code: Select all

cpconfig -license -set здесь-серийный-номер

например:

Code: Select all

cpconfig -license -set 50500-10037-ELQF5-H28KM-8E6BA

Проверить срок истечения лицензии можно командой:

Управление ридерами.

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

Для просмотра доступных ридеров (в зависимости от кодировки):

Code: Select all

csptest -enum -info -type PP_ENUMREADERS | iconv -f utf8

или

Code: Select all

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

Ридер HDIMAGE размещается в /var/opt/cprocsp/keys/имя_пользователя (guest или root)

Заметка. В /var/opt/cprocsp/keys/имя_пользователя хранятся ключевые контейнеры пользователей guest или root
В директории /var/opt/cprocsp/users находится хранилище сертификатов пользователей guest или root

Инициализация ридера HDIMAGE:

Code: Select all

cpconfig -hardware reader -add HDIMAGE store

Современные аппаратные и программно-аппаратные хранилища ключей, такие как Рутокен ЭЦП или eSmart ГОСТ, поддерживаются через интерфейс PCSC. За реализацию этого интерфейса отвечает служба pcscd, которую необходимо запустить перед началом работы с соответствующими устройствами:

Code: Select all

su
toor
chmod +x /etc/rc.d/rc.pcscd
/etc/rc.d/rc.pcscd start

Заметка. Предварительно скачайте и активируйте модули

Code: Select all

usm -u usm
usm -u all
usm -g pcsc-lite
usm -g openct
usm -g opensc
usm -g ccid

затем подключите токен к компьютеру и выполните скрипт:

Code: Select all

#!/bin/bash
not_solaris=1
if test ! -z "$not_solaris"; then
  search_dirs=''
  for d in `echo /usr/lib*/pcsc /usr/local/lib*/pcsc /usr/libexec/SmartCardServices/*`; do
    if echo $d|grep -v '*'; then
      search_dirs="$d $search_dirs";
    fi;
  done
  if test ! -z "$search_dirs"; then
    folder=`find -L $search_dirs -name "*ccid.bundle"`
    if test ! -z "$folder"; then
      pList_files=`find -L $folder -name "Info.plist"`
      if test ! -z "$pList_files"; then
        for pList in $pList_files; do
          ccid_reg.sh -add $pList 0x072F 0x90CC "ACS ACR 38U-CCID - CP"
          ccid_reg.sh -add $pList 0x072F 0x1204 "ACS ACR101 ICC Reader - CP"
          ccid_reg.sh -add $pList 0x072F 0x8201 "ACS APG8201 PINhandy 1 - CP"
          ccid_reg.sh -add $pList 0x072F 0x8202 "ACS APG8201 USB Reader - CP"
          ccid_reg.sh -add $pList 0x072F 0x90DB "ACS CryptoMate64 - CP"
          ccid_reg.sh -add $pList 0x0483 0xACD1 "Ancud Crypton SCR/RNG - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0025 "Aktiv Rutoken lite - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0030 "Aktiv Rutoken ECP - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0080 "Aktiv PINPad Ex - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0081 "Aktiv PINPad In - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0060 "Aktiv Co., ProgramPark Rutoken Magistra - CP"
          ccid_reg.sh -add $pList 0x072f 0x90de "ACS Token - CP"
          ccid_reg.sh -add $pList 0x24dc 0x0102 "ARDS ZAO JaCarta LT - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0002 "Infocrypt Token++ - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0004 "Infocrypt Token++ - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0006 "Infocrypt Token++ lite - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0008 "Infocrypt Token++ lite - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x003a "Infocrypt Token++ lite - CP"
          ccid_reg.sh -add $pList 0x2022 0x078a "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2022 0x016c "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2022 0x0172 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2022 0x0226 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x078a "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x016c "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0172 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0226 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2a0c 0x0001 "MultiSoft ltd. SCR2 - CP"
          ccid_reg.sh -add $pList 0x23a0 0x0008 "BIFIT ANGARA - CP"
          ccid_reg.sh -add $pList 0x1fc9 0x7479 "ISBC ESMART reader - CP"
          ccid_reg.sh -add $pList 0x2ce4 0x7479 "ESMART Token - CP"
          ccid_reg.sh -add $pList 0x04d8 0x003f "zis-group PRIVATE Security System Key"
        done
      fi
    fi
  fi
fi
cpconfig -hardware reader -add "Aktiv Rutoken ECP 00 00" -name 'Rutoken ECP 0'
cpconfig -hardware reader -add "Aktiv Rutoken ECP 01 00" -name 'Rutoken ECP 1'
cpconfig -hardware reader -add "Aktiv Rutoken lite 00 00" -name 'Rutoken lite 0'
cpconfig -hardware reader -add "Aktiv Rutoken lite 01 00" -name 'Rutoken lite 1'
cpconfig -hardware reader -add "Aktiv Co. Rutoken S 00 00" -name 'Rutoken S 0'
cpconfig -hardware reader -add "Aktiv Co. Rutoken S 01 00" -name 'Rutoken S 1'
cpconfig -hardware reader -add "Aktiv Rutoken Magistra 00 00" -name 'Rutoken Magistra 0'
cpconfig -hardware reader -add "Aktiv Rutoken Magistra 01 00" -name 'Rutoken Magistra 1'

Управление контейнерами.

Создание контейнера. Создадим контейнер с именем test в локальном ридере HDIMAGE.

Code: Select all

csptest -keyset -provtype 75 -newkeyset -cont '\.HDIMAGEtest'

При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где предложат двигать курсором мыши
Image
После показа окна будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет) и снова предложат двигать курсором мыши.
Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры

В КриптоПро 5 появилась возможность интерактивно выбирать ридер и тип создаваемого контейнера.
Теперь можно создавать неизвлекаемые контейнеры. Для этого необходимо выполнить команду:

Code: Select all

csptest -keyset -provtype 75 -newkeyset -cont  'имя_контейнера'

Откроется окно выбора ридера и способа создания неизвлекаемого контейнера или обычного контейнера.
Для неизвлекаемого контейнера, в GTK-окне следует выбрать «Вид приложения» → «Active token without secure channel».

Для добавления контейнера в носитель токена следует воспользоваться командой:

Code: Select all

csptest -keyset -newkeyset -cont '\.Aktiv Rutoken ECP 00 00TestCont'

Название токена может отличаться. Для идентификации токена воспользуйтесь командой:

Code: Select all

csptest -card -enum -v -v
# или
list_pcsc
# или можно просмотреть доступные ридеры
csptest -enum -info -type PP_ENUMREADERS | iconv -f utf8

Для удаления контейнера:

Code: Select all

csptest -keyset -deletekeyset -cont '\.HDIMAGEtest'

или:

Code: Select all

csptestf -passwd -cont '\.Aktiv Rutoken ECP 00 00TestCont' -deletek

Копирование контейнера. Для примера скопируем контейнер из локального хранилища в хранилище Рутокена ЕЦП:

Code: Select all

csptestf -keycopy -contsrc '\.HDIMAGEКонтейнер_оригинал' -contdest '\.Aktiv Rutoken ECP 00 00Контейнер_копия'

или

Code: Select all

csptest -keycopy -contsrc '<полное название контейнера>' -contdest '\.<название токена><желаемое название контейнера>'

Заметка. Полное название контейнера см. с помощью команды

Code: Select all

csptest -keyset -enum_cont -fqcn -verifyc -uniq | iconv -f cp1251

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

Code: Select all

csptestf -keyset -container 'ИМЯ' -info

Для того чтобы проверить работу контейнера, следует выполнить команду:

Code: Select all

csptestf -keyset -container 'ИМЯ' -check

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

Code: Select all

csptest -keyset -enum_cont -fqcn -verifyc -uniq | iconv -f cp1251

Работа с сертификатами.

4 категории сертификатов:

  1. личные сертификаты (ставятся в хранилище umy, где u = User, my — имя хранилища) — как правило для них есть закрытый ключ (и они требуют особой установки, чтобы в хранилище появилась ссылка на этот закрытый ключ). В результате с их использованием можно, например, подписать файл.
  2. корневые сертификаты — краеугольнй камень безопасности, так как цепочки доверия строятся от них, то их надо добавлять в хранилища осознанно и внимательно (ставятся в uroot, также администратор может поставить их в mroot, где m = Machine, такие сертификаты будут видны в read only в root-хранилищах всех пользователей)
  3. промежуточные сертификаты — появляются, когда есть промежуточные УЦ (головной -> промежуточный -> пользовательский). Прямое доверие к ним не требуется (ставятся в uca, также администратор может поставить их в mca). В это же хранилище ставятся CRL-и. Обычно точки получения промежуточных сертификатов и CRL-ей правильно указаны в пользовательских сертификатах, поэтому они автоматом выкачиваются и попадают в хранилище ucache. В общем про них можно ничего особо не знать и ничего не делать.
    Из под учетной записи пользователя guest промежуточные сертификаты устанавливать в uca, из под учетной записи администратора root ставить в mca.
  4. сертификаты партнёров по общению, чтобы проверять их подписи и зашифровывать для них сообщения. Ставятся либо в umy (это беспорядок, но популярный), либо в uAddressBook

Заметка. При установке в хранилище m* — все установленное доступно Всем пользователям системы.
При установке в хранилище u* — все установленное доступно только пользователю, от которого производилась установка.

Имена хранилищ указаны в формате certmgr, у cryptcp похожий формат: -mroot и -uAddressBook

  • Подробная инструкция по утилите сertmgr.
  • Руководство по использованию cryptcp

Установка сертификата с токена:

Code: Select all

certmgr -inst -cont '<путь к контейнеру, начинающийся на \.>' -store uMy

Например:

Code: Select all

certmgr -inst -cont '\.Aktiv Rutoken ECP 00 00Ivanov' -store uMy

Установка всех личных сертификатов с Рутокена в uMy:

Code: Select all

csptestf -absorb -cert -pattern 'rutoken'

Заметка. В опции -pattern ‘rutoken‘ может быть другим в зависимости от подключенного токена.
В опции -pattern так же можно указать пустые ‘ ‘ чтобы установить все сертификаты в uMy. Пример:

Code: Select all

csptestf -absorb -cert -pattern ''

Установка личного сертификата в контейнер ридера HDIMAGE:

Code: Select all

certmgr -inst -file '/путь-до-сертификата/имя-сертификата.cer' -cont '<путь к контейнеру, начинающийся на \.>' -store uMy

Пример установки личного сертификата с пин-кодом 12345 по ГОСТ 2012 в контейнер ридера HDIMAGE

Code: Select all

certmgr -inst -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -cont '<путь к контейнеру, начинающийся на \.>' -pin 12345 -file '/путь-до-сертификата/имя-сертификата.cer'

Установка корневого сертификата удостоверяющего центра для учетной записи guest в uRoot (для учетной записи root установку нужно произвести в mRoot):

Code: Select all

certmgr -inst -cert -file '/путь-до-сертификата/имя-сертификата.cer' -store uRoot

Установка списка отозванных сертификатов (CRL) для учетной записи guest в uca (для учетной записи root установку нужно произвести в mca):

Code: Select all

certmgr -inst -crl -file '/путь-до-файла/имя-файла.crl' -store uca

Установка цепочки промежуточных сертификатов для учетной записи guest в uca (для учетной записи root установку нужно произвести в mca):

Code: Select all

certmgr -inst -cert -file '/путь-до-файла/имя-файла.p7b' -store uca

Для просмотра установленных сертификатов воспользуйтесь командой:

Просмотр корневых сертификатов:

Code: Select all

# для учетной записи guest
certmgr -list -store uRoot
# для учетной записи root
certmgr -list -store mRoot

Просмотр содержимого сертификата:

Code: Select all

certmgr -list -file '/путь-до-сертификата/имя-сертификата.cer'

Удаление сертификатов. Удалить личный сертификат под номером 1 можно командой:

после чего ввести цифру 1 для подтверждения.

Удалить корневой сертификат под номером 1

Code: Select all

# для учетной записи guest
certmgr -delete 1 -store uRoot
# для учетной записи root
certmgr -delete 1 -store mRoot

Удалить все сертификаты:

Code: Select all

# удалить все сертификаты
certmgr -delete -all
# удалить все сертификаты из хранилища uMy
certmgr -delete -store uMy
# удалить все сертификаты из хранилища uRoot для учетной записи guest
certmgr -delete -store uRoot
# удалить все сертификаты из хранилища mRoot для учетной записи root
certmgr -delete -store mRoot

Экспорт сертификатов на другую машину
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys.
Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.

Экспорт сертификата:

Переносим эти файлы на машину и смотрим, какие контейнеры есть:

Code: Select all

csptest -keyset -enum_cont -verifycontext -fqcn

И как обычно, связываем сертификат и закрытый ключ:

Code: Select all

certmgr -inst -file 1.cer -cont '\.HDIMAGEcontainer.name'

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

Code: Select all

Can not install certificate
Public keys in certificate and container are not identical

Использование cptools
В версии КриптоПРО 5 появилась графическая утилита для работы с сертификатами — cptools.
Для запуска cptools откройте терминал и введите

Image Image
Image Image
Так же, с его помощью, можно установить сертификат из токена в хранилище uMy.

Создание запроса и получение сертификата в УЦ.

Для создания запроса потребуется:

  • DN (cn=Test User,e=ca@porteus.org)
  • имя контейнера (в локальном хранилище hdimage: \.HDIMAGEtest)
  • имя файла запроса (test.req)

Внимание! Для использования проверки подлинности клиента в браузере потребуется также указать, что запрос создается по ГОСТ 2001 и добавляется тип применения подлинности клиента: -provtype 75 -certusage «1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2».
С помощью опции -certusage можно указать OID назначение сертификата
Назначение сертификата представляется в сертификате объектным идентификатором, присвоенным этой политике, — OID. Если в сертификате указано несколько политик, то это означает, что сертификат соответствует всем этим политикам списка.

Типы применения:

Code: Select all

        OID 	                       Назначение
1.3.6.1.5.5.7.3.1 	        Аутентификация сервера
1.3.6.1.5.5.7.3.2 	        Аутентификация клиента
1.3.6.1.5.5.7.3.3 	        Подписывание кода
1.3.6.1.5.5.7.3.4 	        Защищенная электронная почта
1.3.6.1.5.5.7.3.8 	        Простановка штампов времени
1.3.6.1.5.5.7.3.9               Может использоваться для формирования электронной подписи OCSP-запросов
1.3.6.1.4.1.311.10.5.1          Цифровые права
1.3.6.1.4.1.311.10.3.12 	Подписывание документа

Объектные идентификаторы (OID) определяют отношения, при осуществлении которых электронный документ, подписанный ЭЦП, будет иметь юридическое значение. OID, зарегистрированные в Удостоверяющем центре, включаются состав следующих расширений сертификата ключа подписи: Key Usage (использование ключа), Extended Key Usage (расширенное использование ключа), Application Policy (политики применения сертификата).

Code: Select all

cryptcp -creatrqst -dn "cn=Test User,e=ca@porteus.org" -provtype 75 -nokeygen -cont '\.HDIMAGEtest' -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test.req

Более подробная информация про опции утилиты cryptcp

Показать содержимое запроса:

  • Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
  • Нажмите «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64».
  • Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла test.req и нажмите кнопку «Выдать».
  • Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя certnew.p7b)

Просмотреть полученный сертификат:

Установите сертификат удостоверяющего центра:

Code: Select all

certmgr -inst -file 'certnew.p7b' -store uRoot

нажмите 1

Установите сертификат клиента (введите пароль на контейнер \.HDIMAGEtest при запросе):

Code: Select all

certmgr -inst -file 'certnew.p7b' -store uMy -cont '\.HDIMAGEtest' -inst_to_cont

нажмите 2

Проверка цепочки сертификатов.

Внимание! В кэше сертификатов для выпущенного сертификата должны присутствовать корневые сертификаты удостоверяющих центров. В противном случае он будет недоступен в плагине для браузера!

Сертификаты популярных удостоверяющих центров

Code: Select all

Удостоверяющий Центр 	                                   Источник 	                      Сертификаты
ЗАО «Национальный удостоверяющий центр» 	https://www.nucrf.ru/info/ 	https://www.nucrf.ru/download/nucrf.p7b
Удостоверяющий центр СКБ Контур 	https://ca.kontur.ru/about/certificates (выбрать 2015 год) 	http://cdp.skbkontur.ru/certificates/kontur-root-2015.crt

Для проверки можно скопировать персональный сертификат в файл:

Code: Select all

cryptcp -copycert -dn E=user@test.ru -df personal.cer

Запуск с отладкой цепочки:

Code: Select all

CP_PRINT_CHAIN_DETAIL=1 cryptcp -copycert -dn E=user@test.ru -df personal.cer

То есть нам надо установить сертификат УЦ с CN=uc skb kontur (root):

Code: Select all

certmgr -inst -store uRoot -file kontur-root-2015.crt

После этого:

Code: Select all

cryptcp -copycert -dn E=user@test.ru -df personal.cer

Всё в порядке и сертификат виден в плагине Cades.

Электронная подпись.
Для электронной подписи файла необходимо указать сертификат и имя подписываемого файла:

Примечание: Проще всего для указания сертификата использовать адрес e-mail.

Code: Select all

cryptcp -sign -dn E=user@test.ru -der zayavlenie.pdf

где

  • -dn E=user@test.ru — сертификат по e-mail;
  • -der — использовать формат DER для файла подписи (по умолчанию используется формат Base64);
  • zayavlenie.pdf — имя подписываемого файла.

На выходе появляется файл zayavlenie.pdf.sig, содержащий как сам подписываемый файл, так и электронную подпись.

Для проверки подписи выполните:

Code: Select all

cryptcp -verify zayavlenie.pdf.sig

Показано, кто подписывал и что подпись проверена.

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

Code: Select all

cryptcp -verify zayavlenie.pdf.sig zayavlenie.pdf

Работа с криптографическими провайдерами.

Для просмотра доступных криптографических провайдеров:

Более детальная информация о криптографическом провайдере 75:

Code: Select all

cpconfig -defprov -view -provtype 75

Установка криптографического провайдера 75 по умолчанию:

Code: Select all

cpconfig -defprov -setdef -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC1 CSP"

Установка криптографического провайдера 80 по умолчанию:

Code: Select all

cpconfig -defprov -setdef -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 KC1 CSP"

Установка криптографического провайдера 81 по умолчанию:

Code: Select all

cpconfig -defprov -setdef -provtype 81 -provname "Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP"

Linux 5.15.11-porteus #1 SMP Sat Dec 25 13:08:57 MSK 2021 x86_64 Intel(R) Core(TM) i5-6600K CPU @ up to 4.60GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Navi 23 [Radeon RX 6600] [1002:73ff] (rev c7) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *