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

Добро пожаловать!

Moderator: Blaze

User avatar
Blaze
DEV Team
DEV Team
Posts: 3869
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus current ☯ all DEs ☯
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

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

Post#1 by Blaze » 16 Sep 2017, 09:46

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

КриптоПро — линейка криптографических утилит для генерации ЭЦП, работы с сертификатами, организации структуры PKI. Незаменимый продукт для работы в ЕИС (zakupki.gov.ru), Официальный сайт ГМУ (bus.gov.ru), Электронный бюджет (budget.gov.ru), Портал государственных услуг РФ + Единая система идентификации и аутентификации ЕСИА (esia.gosuslugi.ru), Федеральная налоговая служба (lkfl.nalog.ru) и т.д. Авторизация в личных кабинетах ГИС-ов возможна только по ГОСТ-у. Для этого можно использовать браузер Chromium с поддержкой ГОСТ - скачать для x86_64 (репозиторий на github.com). Начиная с Porteus 5.01 - Chromium-Gost можно скачать через меню пуск - см. категорию Интернет - Загрузка и обновление web-браузеров (Browser Selection and Update Tool)
Chromium-Gost — веб-браузер с открытым исходным кодом на основе Chromium с поддержкой криптографических алгоритмов ГОСТ при установке защищённых соединений через интерфейс msspi
Для работы криптографических алгоритмов ГОСТ у вас должен быть установлен КриптоПро CSP (или другой криптопровайдер поддерживающий работу алгоритмов ГОСТ в интерфейсе SSPI)
Заметка. Все команды описанные в данной статье выполняем под root пользователем.
Для авторизации в качестве root пользователя выполните в терминале:

Code: Select all

su
toor
Скрипт автоматизированной сборки 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

Запускаем скрипт от root пользователя

Code: Select all

wget -q --show-progress -P /tmp http://csp.ublaze.ru/cprocsp.tar.bz2
tar xvf cprocsp.tar.bz2 && cd /tmp/cprocsp/
./cprocsp.sh
Затем настраиваем КриптоПро CSP в Porteus Linux согласно этой инструкции

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

Code: Select all

#!/bin/bash

# Copyright 2023-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 cprocsp-pki-cades-plugin
# for CryptoPro CSP in Porteus i686 and x86_64.
#
#
# Date: 19.11.2023 12:03:00 (UTC+3)
#
#
# Скрипт для автоматизированной сборки КриптоПро ЭЦП Browser plug-in
# для Porteus https://cryptopro.ru/products/cades/downloads

# Root check
if [ `whoami` != "root" ]; then
    echo -e "\nOnly root can run this.\n"
    exit 1
fi

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

# сборка для архитектуры i586
if [[ "$ARCH" == i686 || "$ARCH" == i586 ]]; then
    PRGNAM=${PRGNAM:-cprocsp-pki-cades-plugin}
    SOURCE=${SOURCE:-cades-linux-ia32}
    BOLD=${BOLD:-"\e[1m"}
    CYAN=${CYAN:-"\e[96m"}
    GREEN=${GREEN:-"\e[92m"}
    RED=${RED:-"\e[31m"}
    RESET=${RESET:-"\e[0m"}
    CWD=$(pwd)
    TMPDIR=/tmp/portch
    PKG=$TMPDIR/package-$PRGNAM
    PKGINFO=$PKG/var/lib/pkgtools/packages
    OUTPUT=${OUTPUT:-/tmp}
    [ -d $TMPDIR ] && rm -rf $TMPDIR
    [ -d $PKG ] && rm -rf $PKG
    mkdir -p $TMPDIR $PKG $OUTPUT
    cd $PKG
    wget -q --show-progress https://cryptopro.ru/sites/default/files/products/cades/current_release_2_0/$SOURCE.tar.gz
    tar xf $SOURCE.tar.gz && rm -f $SOURCE.tar.gz && mv $PKG/$SOURCE/* $PKG && rm -rf $PKG/$SOURCE
    for i in `find . -type f | fgrep .rpm | sort`; do rpm2cpio $i | cpio -idmv &>/dev/null; done
    VERSION=`cat $PKG/opt/cprocsp/include/cadessdk_version.txt | tr -d '"'`
    rm -f *.deb *.rpm && rm -rf $PKG/opt/cprocsp/{include,src}

### fake Slackware type package info: super dumb version
mkdir -p $PKGINFO
echo "PACKAGE NAME: $PRGNAM-$VERSION-$ARCH" > $PKGINFO/$PRGNAM-$VERSION-$ARCH

cat >> $PKGINFO/$PRGNAM-$VERSION-$ARCH << EOM
PACKAGE DESCRIPTION:
cprocsp-pki-cades-plugin: cprocsp-pki-cades-plugin
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin: cprocsp-pki-cades-plugin is designed for creating and verifying
cprocsp-pki-cades-plugin: a digital signature on web pages and supports working with
cprocsp-pki-cades-plugin: a wide range of algorithms, both built into the operating system
cprocsp-pki-cades-plugin: and optionally installed.
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin: cprocsp-pki-cades-plugin home: https://www.cryptopro.ru/products/cades/plugin
cprocsp-pki-cades-plugin:
FILE LIST:
EOM

find * | grep -v var >> $PKGINFO/$PRGNAM-$VERSION-$ARCH

dir2xzm $PKG $OUTPUT/$PRGNAM-$VERSION-$ARCH.xzm

    # Check on cprocsp-pki-cades-plugin xzm file exists in /tmp
    if [ -f "$OUTPUT/$PRGNAM-$VERSION-$ARCH.xzm" ]; then
        echo -e "\n${BOLD}Your $PRGNAM module is at: ${GREEN}${BOLD}$OUTPUT/$PRGNAM-$VERSION-$ARCH.xzm${RESET}\n${BOLD}Please copy it to your modules folder to survive a reboot.${RESET}\n"
    else
        echo -e "\n${RED}${BOLD}Faile. Your $PRGNAM module is not built.${RESET}\n"
    fi
    [ -d $TMPDIR ] && rm -rf $TMPDIR
    [ -d $PKG ] && rm -rf $PKG
fi

# сборка для архитектуры x86_64
if [[ "$ARCH" == x86_64 ]]; then
    PRGNAM=${PRGNAM:-cprocsp-pki-cades-plugin}
    SOURCE=${SOURCE:-cades-linux-amd64}
    BOLD=${BOLD:-"\e[1m"}
    CYAN=${CYAN:-"\e[96m"}
    GREEN=${GREEN:-"\e[92m"}
    RED=${RED:-"\e[31m"}
    RESET=${RESET:-"\e[0m"}
    CWD=$(pwd)
    TMPDIR=/tmp/portch
    PKG=$TMPDIR/package-$PRGNAM
    PKGINFO=$PKG/var/lib/pkgtools/packages
    OUTPUT=${OUTPUT:-/tmp}
    [ -d $TMPDIR ] && rm -rf $TMPDIR
    [ -d $PKG ] && rm -rf $PKG
    mkdir -p $TMPDIR $PKG $OUTPUT
    cd $PKG
    wget -q --show-progress https://cryptopro.ru/sites/default/files/products/cades/current_release_2_0/$SOURCE.tar.gz
    tar xf $SOURCE.tar.gz && rm -f $SOURCE.tar.gz && mv $PKG/$SOURCE/* $PKG && rm -rf $PKG/$SOURCE
    for i in `find . -type f | fgrep .rpm | sort`; do rpm2cpio $i | cpio -idmv &>/dev/null; done
    VERSION=`cat $PKG/opt/cprocsp/include/cadessdk_version.txt | tr -d '"'`
    rm -f *.deb *.rpm && rm -rf $PKG/opt/cprocsp/{include,src}

### fake Slackware type package info: super dumb version
mkdir -p $PKGINFO
echo "PACKAGE NAME: $PRGNAM-$VERSION-$ARCH" > $PKGINFO/$PRGNAM-$VERSION-$ARCH

cat >> $PKGINFO/$PRGNAM-$VERSION-$ARCH << EOM
PACKAGE DESCRIPTION:
cprocsp-pki-cades-plugin: cprocsp-pki-cades-plugin
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin: cprocsp-pki-cades-plugin is designed for creating and verifying
cprocsp-pki-cades-plugin: a digital signature on web pages and supports working with
cprocsp-pki-cades-plugin: a wide range of algorithms, both built into the operating system
cprocsp-pki-cades-plugin: and optionally installed.
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin:
cprocsp-pki-cades-plugin: cprocsp-pki-cades-plugin home: https://www.cryptopro.ru/products/cades/plugin
cprocsp-pki-cades-plugin:
FILE LIST:
EOM

find * | grep -v var >> $PKGINFO/$PRGNAM-$VERSION-$ARCH

dir2xzm $PKG $OUTPUT/$PRGNAM-$VERSION-$ARCH.xzm

    # Check on cprocsp-pki-cades-plugin xzm file exists in /tmp
    if [ -f "$OUTPUT/$PRGNAM-$VERSION-$ARCH.xzm" ]; then
        echo -e "\n${BOLD}Your $PRGNAM module is at: ${GREEN}${BOLD}$OUTPUT/$PRGNAM-$VERSION-$ARCH.xzm${RESET}\n${BOLD}Please copy it to your modules folder to survive a reboot.${RESET}\n"
    else
        echo -e "\n${RED}${BOLD}Faile. Your $PRGNAM module is not built.${RESET}\n"
    fi
    [ -d $TMPDIR ] && rm -rf $TMPDIR
    [ -d $PKG ] && rm -rf $PKG
fi
Запускаем скрипт от root пользователя

Code: Select all

wget -q --show-progress -P /tmp http://csp.ublaze.ru/cprocsp.tar.bz2
tar xvf cprocsp.tar.bz2 && cd /tmp/cprocsp/
./csp-plugin-update.sh
Установка переменных окружения.

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

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
Создание необходимых привязок и кэша для необходимых динамических библиотек.

Подключаем библиотеки КриптоПро CSP. Для этого в терминале выполните команды от root пользователя:

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 не нашел

Code: Select all

# !!! ВАЖНО !!! Для применения изменений закройте и откройте терминал.
# От root пользователя в терминале введите лицензию:
cpconfig -license -set здесь-серийный-номер
# если лицензии нет, введите временную лицензию на 3 месяца:
cpconfig -license -set 5050N-40030-01BT7-2MA83-QF3T0
Установка корневых и промежуточных CA сертификатов.

Что бы в ГОСТ браузерах не было ошибки

Code: Select all

NET::ERR_CERT_AUTHORITY_INVALID
в которой будет указано, что ваше сетевое подключение не является защищенным,
обязательно произведите установку корневых и промежуточных CA сертификатов от root пользователя:

Code: Select all

# !!! ВАЖНО !!!
# добавление сертификатов в соответствующие хранилища. путь к файлу определяет, в какое хранилище его следует установить
# чтобы не выводить на экран информацию из устанавливаемых сертификатов, перенаправляем стандарный вывод в /dev/null
certmgr=`ls /opt/cprocsp/bin/*/certmgr 2>/dev/null | awk '{ print $1 }'`
ls -d /var/opt/cprocsp/tmpcerts/root/* | xargs -n 1 $certmgr -install -store mroot -file 1>/dev/null || printf "Failed to install root certificates! \n"
ls -d /var/opt/cprocsp/tmpcerts/ca/* | xargs -n 1 $certmgr -install -store mca -file 1>/dev/null || printf "Failed to install intermediate certificates! \n"
а так же сертификаты Минцифры России:

Code: Select all

# !!! ВАЖНО !!! Все установленные браузеры должны быть запущены хотя бы один раз
# подробнее - https://www.gosuslugi.ru/crt
mkdir -p /usr/local/share/ca-certificates && wget -q --show-progress -P /usr/local/share/ca-certificates https://gu-st.ru/content/lending/{russian_trusted_root_ca_pem,russian_trusted_sub_ca_pem}.crt && update-ca-certificates --fresh
# Chromium
certutil -d sql:/home/guest/.pki/nssdb -A -t "CT,c,c" -n "Russian Trusted Root CA" -i /usr/local/share/ca-certificates/russian_trusted_root_ca_pem.crt
certutil -d sql:/home/guest/.pki/nssdb -A -t "CT,c,c" -n "Russian Trusted Sub CA" -i /usr/local/share/ca-certificates/russian_trusted_sub_ca_pem.crt
# Mozilla Firefox
certutil -d sql:`find /home/guest/.mozilla -name "cert9.db" | sed "s|/cert9.db||"` -A -t "CT,c,c" -n "Russian Trusted Root CA" -i /usr/local/share/ca-certificates/russian_trusted_root_ca_pem.crt
certutil -d sql:`find /home/guest/.mozilla -name "cert9.db" | sed "s|/cert9.db||"` -A -t "CT,c,c" -n "Russian Trusted Sub CA" -i /usr/local/share/ca-certificates/russian_trusted_sub_ca_pem.crt
# если установлен почтовый клиент Mozilla Thunderbird (должен быть запущен хотя бы один раз)
certutil -d sql:`find /home/guest/.thunderbird -name "cert9.db" | sed "s|/cert9.db||"` -A -t "CT,c,c" -n "Russian Trusted Root CA" -i /usr/local/share/ca-certificates/russian_trusted_root_ca_pem.crt
certutil -d sql:`find /home/guest/.thunderbird -name "cert9.db" | sed "s|/cert9.db||"` -A -t "CT,c,c" -n "Russian Trusted Sub CA" -i /usr/local/share/ca-certificates/russian_trusted_sub_ca_pem.crt
Проверка версии и лицензии КриптоПро CSP.

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

Code: Select all

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

Code: Select all

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

Code: Select all

cpconfig -license -set 50500-10037-ELQF5-H28KM-8E6BA
Проверить срок истечения лицензии можно командой:

Code: Select all

cpconfig -license -view

Управление ридерами.
Ридеры (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

slapt-mod -u
slapt-mod -M pcsc-lite openct opensc 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 '\\.\HDIMAGE\test'
При установленном пакете 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 00\TestCont'
Название токена может отличаться. Для идентификации токена воспользуйтесь командой:

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 '\\.\HDIMAGE\test'
или:

Code: Select all

csptestf -passwd -cont '\\.\Aktiv Rutoken ECP 00 00\TestCont' -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* - все установленное доступно только пользователю, от которого производилась установка.

Code: Select all

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

Code: Select all

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

Code: Select all

certmgr -inst -cont '\\.\Aktiv Rutoken ECP 00 00\Ivanov' -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

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

Code: Select all

# для учетной записи guest
certmgr -list -store uRoot
# для учетной записи root
certmgr -list -store mRoot
Просмотр содержимого сертификата:

Code: Select all

certmgr -list -file '/путь-до-сертификата/имя-сертификата.cer'
Удаление сертификатов. Удалить личный сертификат под номером 1 можно командой:

Code: Select all

certmgr -delete
после чего ввести цифру 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

certmgr -export -dest cert.cer
Переносим эти файлы на машину и смотрим, какие контейнеры есть:

Code: Select all

csptest -keyset -enum_cont -verifycontext -fqcn
И как обычно, связываем сертификат и закрытый ключ:

Code: Select all

certmgr -inst -file 1.cer -cont '\\.\HDIMAGE\container.name'
Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:

Code: Select all

Can not install certificate
Public keys in certificate and container are not identical
Использование cptools
В версии КриптоПРО 5 появилась графическая утилита для работы с сертификатами - cptools.
Для запуска cptools откройте терминал и введите

Code: Select all

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

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

Для создания запроса потребуется:
  • DN (cn=Test User,e=ca@porteus.org)
  • имя контейнера (в локальном хранилище hdimage: \\.\HDIMAGE\test)
  • имя файла запроса (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 '\\.\HDIMAGE\test' -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test.req
Более подробная информация про опции утилиты cryptcp

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

Code: Select all

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

Code: Select all

certmgr -list -file 'certnew.p7b'
Установите сертификат удостоверяющего центра:

Code: Select all

certmgr -inst -file 'certnew.p7b' -store uRoot
нажмите 1

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

Code: Select all

certmgr -inst -file 'certnew.p7b' -store uMy -cont '\\.\HDIMAGE\test' -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
Работа с криптографическими провайдерами.

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

Code: Select all

cpconfig -defprov -view_type
Более детальная информация о криптографическом провайдере 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 6.6.11-porteus #1 SMP PREEMPT_DYNAMIC Sun Jan 14 12:07:37 MSK 2024 x86_64 Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Navi 23 [Radeon RX 6600] [1002:73ff] (rev c7) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

User avatar
Blaze
DEV Team
DEV Team
Posts: 3869
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus current ☯ all DEs ☯
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

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

Post#2 by Blaze » 16 Sep 2017, 16:48

Увы, на момент написания этого сообщения, в Porteus мне не удалось заставить работать Aladdin Token JC 0 (eToken)
Update. Работоспособность подтверждена.
Linux 6.6.11-porteus #1 SMP PREEMPT_DYNAMIC Sun Jan 14 12:07:37 MSK 2024 x86_64 Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Navi 23 [Radeon RX 6600] [1002:73ff] (rev c7) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

User avatar
Blaze
DEV Team
DEV Team
Posts: 3869
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus current ☯ all DEs ☯
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

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

Post#3 by Blaze » 24 Dec 2017, 09:33

Скрипты для автоматизированной настройки КриптоПро CSP в Porteus Linux
Для получения sh-скриптов

Code: Select all

kc1-i686.sh
kc2-i686.sh
kc1-x86_64.sh
kc2-x86_64.sh
для автоматизированной генерации настроек КриптоПро CSP KC1 и KC2,
необходимо запустить скрипт clear.sh от root пользователя в VirtualBox под дистрибутивами семейства CentOs, RHEL... (дополнение - можно и в Porteus без VB)
Для этого, вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами linux-ia32.tgz или linux-amd64.tgz ссылка на загрузку https://www.cryptopro.ru/products/csp/downloads скопируйте данный архив(ы) в /tmp и выполняем скрипт ./clear.sh (есть в архиве http://csp.ublaze.ru/cprocsp.tar.bz2) от root пользователя:

Code: Select all

#!/bin/bash

# Copyright 2018-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 sh scripts
# in VirtualBox under AltLinux, CentOs, RHEL distros from rpm packages
# of CryptoPro CSP for Porteus i686 and x86_64.
#
#
# Date: 28.09.2018 16:35:25 (UTC+3)
#
#
# Скрипт для автоматизированной сборки KC1 и KC2 sh скриптов КриптоПро CSP для Porteus
# в VirtualBox под дистрибутивами семейства CentOs, RHEL...,
# вручную в браузере скачиваем архив с сайта КриптоПро 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

# Парсим для архитектуры x86_64

cd /tmp

if [ -f "linux-amd64.tgz" ]; then
mv linux-amd64.tgz linux-amd64.tar.gz
tar xvf linux-amd64.tar.gz
cd /tmp/linux-amd64
rm -f accord_random-*src.rpm cprocsp-drv*.rpm cprocsp-ipsec*.rpm cprocsp-pki*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-rdr-sobol*.rpm sobol*.rpm
rm -f install.desktop install.sh install_gui.sh integrity.sh *.ini uninstall.sh cpverify

# Получаем лог установки и удаления базовой части rpm пакетов
rpm -qip `find $(pwd) -maxdepth 1 -type f ! -name 'lsb-cprocsp-kc*' | sort` --scripts > $(pwd)/loginstall-x86_64.txt

# kc1 + базовая часть
rpm -qip $(pwd)/lsb-cprocsp-kc1*.rpm --scripts > $(pwd)/kc1-x86_64.txt
cat $(pwd)/loginstall-x86_64.txt >> $(pwd)/kc1-x86_64.txt

# kc2 + базовая часть
rpm -qip $(pwd)/lsb-cprocsp-kc2*.rpm --scripts > $(pwd)/kc2-x86_64.txt
cat $(pwd)/loginstall-x86_64.txt >> $(pwd)/kc2-x86_64.txt


# !!! Строим kc1-x86_64.sh !!!

# Добавить в заголовок
echo '#!/bin/bash' > kc1-x86_64.sh

# Парсим все основные параметры
egrep -i "cpconfig -ini|cpconfig -hardware|cpconfig -license|cpconfig -defprov|test -c" kc1-x86_64.txt >> kc1-x86_64.sh

# Удаляем удаление параметров
sed -i '/-del/d' kc1-x86_64.sh

# Удаляем строки содержащие параметры
sed -i '/libcurl_so_backup/d' kc1-x86_64.sh
sed -i '/authapp_backup/d' kc1-x86_64.sh

# Убираем комментарий
sed -i 's|#cpconfig -hardware media -configure RutokenLite|cpconfig -hardware media -configure RutokenLite|' kc1-x86_64.sh

# Указываем путь к библиотеке PC/SC-lite  для доступа к смарт-картам с использованием SCard API pcsc-lite: (PC/SC)
sed -i "s|\${libpcsclite_checked}|/usr/lib64/libpcsclite.so|g" kc1-x86_64.sh

# Отключаем текстовую генерацию и оставляем графическую генерацию случайной последовательности
echo "cpconfig -hardware rndm -del bio_tui" >> kc1-x86_64.sh
echo "cpconfig -ini '\\config\\Random\\Bio_tui' -delsection" >> kc1-x86_64.sh
echo "cpconfig -ini '\\config\\apppath\\librdrrndmbio_tui.so' -delparam" >> kc1-x86_64.sh

# Отключаем ридер FAT12_0 (Disk #0) - с ним будут фризы
sed -i '/fat12_0/d' kc1-x86_64.sh
#echo "cpconfig -hardware reader -del fat12_0" >> kc1-x86_64.sh

# Проверь количество строк. Попали-ли они под флаг для grep -A 49
# Замачиваем секцию not_solaris=1 и добавляем пробел перед ней
grep -i not_solaris=1 -A 57 kc1-x86_64.txt >> kc1-x86_64.sh
sed -i "/not_solaris=1/{x;p;x;}" kc1-x86_64.sh

# Раскомментировать
sed -i "s/#cpconfig -hardware/cpconfig -hardware/g" kc1-x86_64.sh

# Заменить
sed -i "s/\$LIBNAME/librdremv.so/g" kc1-x86_64.sh

# !!! Проверь совпадение строк по всем INPASPOT !!!
NAME=INPASPOT
sed -i "135,150s/\$NAME/$NAME/g" kc1-x86_64.sh
unset NAME

NAME=INPASPOT1
sed -i "151,154s/\$NAME/$NAME/g" kc1-x86_64.sh
unset NAME

NAME=INPASPOT2
sed -i "155,158s/\$NAME/$NAME/g" kc1-x86_64.sh
unset NAME

NAME=MSKEY
sed -i "s/\$NAME/$NAME/g" kc1-x86_64.sh
unset NAME

# Убираем лишние пробелы
sed -i 's|    ||' kc1-x86_64.sh

# Удалить
sed -i 's/test $? = 0 || //' kc1-x86_64.sh
sed -i '/Двоичный/d' kc1-x86_64.sh
sed -i '/libcurl_checked/d' kc1-x86_64.sh


# !!! Строим kc2-x86_64.sh !!!

# Добавить в заголовок
echo '#!/bin/bash' > kc2-x86_64.sh

# Парсим все основные параметры
egrep -i "cpconfig -ini|cpconfig -hardware|cpconfig -license|cpconfig -defprov|test -c" kc2-x86_64.txt >> kc2-x86_64.sh

# Удаляем удаление параметров
sed -i '/-del/d' kc2-x86_64.sh

# Удаляем строки содержащие параметры
sed -i '/libcurl_so_backup/d' kc2-x86_64.sh
sed -i '/authapp_backup/d' kc2-x86_64.sh

# Убираем комментарий
sed -i 's|#cpconfig -hardware media -configure RutokenLite|cpconfig -hardware media -configure RutokenLite|' kc2-x86_64.sh

# Указываем путь к библиотеке PC/SC-lite  для доступа к смарт-картам с использованием SCard API pcsc-lite: (PC/SC)
sed -i "s|\${libpcsclite_checked}|/usr/lib64/libpcsclite.so|g" kc2-x86_64.sh

# Отключаем ридер FAT12_0 (Disk #0) - с ним будут фризы
sed -i '/fat12_0/d' kc2-x86_64.sh
#echo "cpconfig -hardware reader -del fat12_0" >> kc2-x86_64.sh

# Проверь количество строк. Попали-ли они под флаг для grep -A 49
# Замачиваем секцию not_solaris=1 и добавляем пробел перед ней
grep -i not_solaris=1 -A 57 kc1-x86_64.txt >> kc2-x86_64.sh
sed -i "/not_solaris=1/{x;p;x;}" kc2-x86_64.sh

# Раскомментировать
sed -i "s/#cpconfig -hardware/cpconfig -hardware/g" kc2-x86_64.sh

# Заменить
sed -i "s/\$LIBNAME/librdremv.so/g" kc2-x86_64.sh

# !!! Проверь совпадение строк по всем INPASPOT !!!
NAME=INPASPOT
sed -i "142,157s/\$NAME/$NAME/g" kc2-x86_64.sh
unset NAME

NAME=INPASPOT1
sed -i "158,161s/\$NAME/$NAME/g" kc2-x86_64.sh
unset NAME

NAME=INPASPOT2
sed -i "162,165s/\$NAME/$NAME/g" kc2-x86_64.sh
unset NAME

NAME=MSKEY
sed -i "s/\$NAME/$NAME/g" kc2-x86_64.sh
unset NAME

# Убираем лишние пробелы
sed -i 's|    ||' kc2-x86_64.sh

# Удалить
sed -i 's/test $? = 0 || //' kc2-x86_64.sh
sed -i '/Двоичный/d' kc2-x86_64.sh
sed -i '/libcurl_checked/d' kc2-x86_64.sh

fi


# Парсим для архитектуры i686

cd /tmp

if [ -f "linux-ia32.tgz" ]; then
mv linux-ia32.tgz linux-ia32.tar.gz
tar xvf linux-ia32.tar.gz
cd /tmp/linux-ia32
rm -f accord_random-*src.rpm cprocsp-drv*.rpm cprocsp-ipsec*.rpm cprocsp-pki*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-rdr-sobol*.rpm sobol*.rpm
rm -f install.desktop install.sh install_gui.sh integrity.sh *.ini uninstall.sh cpverify

# Получаем лог установки и удаления базовой части rpm пакетов
rpm -qip `find $(pwd) -maxdepth 1 -type f ! -name 'lsb-cprocsp-kc*' | sort` --scripts > $(pwd)/loginstall-i686.txt

# kc1 + базовая часть
rpm -qip $(pwd)/lsb-cprocsp-kc1*.rpm --scripts > $(pwd)/kc1-i686.txt
cat $(pwd)/loginstall-i686.txt >> $(pwd)/kc1-i686.txt

# kc2 + базовая часть
rpm -qip $(pwd)/lsb-cprocsp-kc2*.rpm --scripts > $(pwd)/kc2-i686.txt
cat $(pwd)/loginstall-i686.txt >> $(pwd)/kc2-i686.txt


# !!! Строим kc1-i686.sh !!!

# Добавить в заголовок
echo '#!/bin/bash' > kc1-i686.sh

# Парсим все основные параметры
egrep -i "cpconfig -ini|cpconfig -hardware|cpconfig -license|cpconfig -defprov|test -c" kc1-i686.txt >> kc1-i686.sh

# Удаляем удаление параметров
sed -i '/-del/d' kc1-i686.sh

# Удаляем строки содержащие параметры
sed -i '/libcurl_so_backup/d' kc1-i686.sh
sed -i '/authapp_backup/d' kc1-i686.sh

# Убираем комментарий
sed -i 's|#cpconfig -hardware media -configure RutokenLite|cpconfig -hardware media -configure RutokenLite|' kc1-i686.sh

# Указываем путь к библиотеке PC/SC-lite  для доступа к смарт-картам с использованием SCard API pcsc-lite: (PC/SC)
sed -i "s|\${libpcsclite_checked}|/usr/lib/libpcsclite.so|g" kc1-i686.sh

# Отключаем текстовую генерацию и оставляем графическую генерацию случайной последовательности
echo "cpconfig -hardware rndm -del bio_tui" >> kc1-i686.sh
echo "cpconfig -ini '\\config\\Random\\Bio_tui' -delsection" >> kc1-i686.sh
echo "cpconfig -ini '\\config\\apppath\\librdrrndmbio_tui.so' -delparam" >> kc1-i686.sh

# Отключаем ридер FAT12_0 (Disk #0) - с ним будут фризы
sed -i '/fat12_0/d' kc1-i686.sh
#echo "cpconfig -hardware reader -del fat12_0" >> kc1-i686.sh

# Проверь количество строк. Попали-ли они под флаг для grep -A 49
# Замачиваем секцию not_solaris=1 и добавляем пробел перед ней
grep -i not_solaris=1 -A 57 kc1-i686.txt >> kc1-i686.sh
sed -i "/not_solaris=1/{x;p;x;}" kc1-i686.sh

# Раскомментировать
sed -i "s/#cpconfig -hardware/cpconfig -hardware/g" kc1-i686.sh

# Заменить
sed -i "s/\$LIBNAME/librdremv.so/g" kc1-i686.sh

# !!! Проверь совпадение строк по всем INPASPOT !!!
NAME=INPASPOT
sed -i "135,150s/\$NAME/$NAME/g" kc1-i686.sh
unset NAME

NAME=INPASPOT1
sed -i "151,154s/\$NAME/$NAME/g" kc1-i686.sh
unset NAME

NAME=INPASPOT2
sed -i "155,158s/\$NAME/$NAME/g" kc1-i686.sh
unset NAME

NAME=MSKEY
sed -i "s/\$NAME/$NAME/g" kc1-i686.sh
unset NAME

# Убираем лишние пробелы
sed -i 's|    ||' kc1-i686.sh

# Удалить
sed -i 's/test $? = 0 || //' kc1-i686.sh
sed -i '/Двоичный/d' kc1-i686.sh
sed -i '/libcurl_checked/d' kc1-i686.sh


# !!! Строим kc2-i686.sh !!!

# Добавить в заголовок
echo '#!/bin/bash' > kc2-i686.sh

# Парсим все основные параметры
egrep -i "cpconfig -ini|cpconfig -hardware|cpconfig -license|cpconfig -defprov|test -c" kc2-i686.txt >> kc2-i686.sh

# Удаляем удаление параметров
sed -i '/-del/d' kc2-i686.sh

# Удаляем строки содержащие параметры
sed -i '/libcurl_so_backup/d' kc2-i686.sh
sed -i '/authapp_backup/d' kc2-i686.sh

# Убираем комментарий
sed -i 's|#cpconfig -hardware media -configure RutokenLite|cpconfig -hardware media -configure RutokenLite|' kc2-i686.sh

# Указываем путь к библиотеке PC/SC-lite  для доступа к смарт-картам с использованием SCard API pcsc-lite: (PC/SC)
sed -i "s|\${libpcsclite_checked}|/usr/lib/libpcsclite.so|g" kc2-i686.sh

# Отключаем ридер FAT12_0 (Disk #0) - с ним будут фризы
sed -i '/fat12_0/d' kc2-i686.sh
#echo "cpconfig -hardware reader -del fat12_0" >> kc2-i686.sh

# Проверь количество строк. Попали-ли они под флаг для grep -A 49
# Замачиваем секцию not_solaris=1 и добавляем пробел перед ней
grep -i not_solaris=1 -A 57 kc1-i686.txt >> kc2-i686.sh
sed -i "/not_solaris=1/{x;p;x;}" kc2-i686.sh

# Раскомментировать
sed -i "s/#cpconfig -hardware/cpconfig -hardware/g" kc2-i686.sh

# Заменить
sed -i "s/\$LIBNAME/librdremv.so/g" kc2-i686.sh

# !!! Проверь совпадение строк по всем INPASPOT !!!
NAME=INPASPOT
sed -i "142,157s/\$NAME/$NAME/g" kc2-i686.sh
unset NAME

NAME=INPASPOT1
sed -i "158,161s/\$NAME/$NAME/g" kc2-i686.sh
unset NAME

NAME=INPASPOT2
sed -i "162,165s/\$NAME/$NAME/g" kc2-i686.sh
unset NAME

NAME=MSKEY
sed -i "s/\$NAME/$NAME/g" kc2-i686.sh
unset NAME

# Убираем лишние пробелы
sed -i 's|    ||' kc2-i686.sh

# Удалить
sed -i 's/test $? = 0 || //' kc2-i686.sh
sed -i '/Двоичный/d' kc2-i686.sh
sed -i '/libcurl_checked/d' kc2-i686.sh

fi
на выходе получаем:

Code: Select all

kc1-i686.sh
kc1-i686.txt
kc1-x86_64.sh
kc1-x86_64.txt
kc2-i686.sh
kc2-i686.txt
kc2-x86_64.sh
kc2-x86_64.txt
loginstall-i686.txt
loginstall-x86_64.txt
Заметка. Готовые скрипты можно скачать через терминал

Code: Select all

su
toor
cd /tmp
wget http://csp.ublaze.ru/cprocsp.tar.bz2
tar xvf cprocsp.tar.bz2
#./kc1-i686.sh
#./kc2-i686.sh
#./kc1-x86_64.sh
#./kc2-x86_64.sh
Выполните нужный скрипт 2 раза, после скрипта автоматизированной сборки xzm модулей KC1 и KC2 КриптоПро CSP для Porteus (см. первое сообщение данной темы).
Достаточно активировать необходимый, собранный xzm модуль КриптоПро CSP (см. первое сообщение данной темы) и выполнить в терминале:

Code: Select all

su
toor
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
закрыть и открыть терминал. Выполнить в терминале 2 раза нужный скрипт от root пользователя, например запустив его так ./kc1-x86_64.sh
Заметка. если у Вас есть Token-ы или смарт-карты
Заметка. Для корректной работы КриптоПро CSP KC2 необходим запуск службы cryptsrv
Если Вы используете готовые xzm модули КриптоПро CSP

Готовые xzm модули с КриптоПро CSP для архитектур i686 и x86_64
Если Вы используете готовые xzm модули, то данные скрипты kc1-i686.sh, kc2-i686.sh, kc1-x86_64.sh, kc2-x86_64.sh выполнять не нужно.
Достаточно активировать необходимый модуль КриптоПро CSP и выполнить в терминале

Code: Select all

su
toor
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
закрыть и открыть терминал.
Заметка. Для работы с КриптоПро CSP в учетной записи guest потребуется перезагрузка операционной системы Porteus.
Выполнить в терминале от root пользователя рекомендации из первого сообщения данной темы - см. пункты:
  • Создание необходимых привязок и кэша для необходимых динамических библиотек.
  • Проверка версии и лицензии КриптоПро CSP.
  • Установка корневых и промежуточных CA сертификатов.
Заметка. если у Вас есть Token-ы или смарт-карты
Заметка. Для корректной работы КриптоПро CSP KC2 необходим запуск службы cryptsrv
Linux 6.6.11-porteus #1 SMP PREEMPT_DYNAMIC Sun Jan 14 12:07:37 MSK 2024 x86_64 Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Navi 23 [Radeon RX 6600] [1002:73ff] (rev c7) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

User avatar
Blaze
DEV Team
DEV Team
Posts: 3869
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus current ☯ all DEs ☯
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

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

Post#4 by Blaze » 14 Apr 2018, 18:51

Для того чтобы заработали плагины типа КриптоПро ЭЦП Browser plug-in и плагин IFCPlugin Госуслуг (ЕСИА) предварительно необходимо:

1) установить криптопровайдер КриптоПро CSP для своей архитектуры i586 и x86_64

2) в терминале выполнить команды:

Code: Select all

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

Code: Select all

# Для архитектуры i586
echo '/opt/cprocsp/lib/ia32' >> /etc/ld.so.conf
echo 'ldconfig' >> /etc/rc.d/rc.local
ldconfig
3) установить необходимый плагин:

КриптоПро ЭЦП Browser plug-in (для получения новой версии см. первое сообщение - пункт: Скрипт для автоматизированной сборки КриптоПро ЭЦП Browser plug-in для Porteus)
cprocsp-pki-2.0.14815-ia32-cades-plugin.xzm
cprocsp-pki-2.0.14815-amd64-cades-plugin.xzm

Плагин Госуслуг
IFCPlugin-3.1.1-i386.xzm (необходимо установить зависимость pcsc-lite и запустить службу pcscd - см. пункт 'если у Вас есть Token-ы или смарт-карты')
IFCPlugin-3.1.1-x86_64.xzm (необходимо установить зависимость pcsc-lite и запустить службу pcscd - см. пункт 'если у Вас есть Token-ы или смарт-карты')
Заметка. Последние версии данных плагинов для архитектур i586 и x86_64 - будут обновятся в этих репозиториях (при необходимости Вы их можете обновить сами).
Настройка плагина Госуслуг:

Настройка плагина КриптоПро ЭЦП Browser plug-in:
Linux 6.6.11-porteus #1 SMP PREEMPT_DYNAMIC Sun Jan 14 12:07:37 MSK 2024 x86_64 Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Navi 23 [Radeon RX 6600] [1002:73ff] (rev c7) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

User avatar
Blaze
DEV Team
DEV Team
Posts: 3869
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus current ☯ all DEs ☯
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

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

Post#5 by Blaze » 02 Oct 2018, 18:27

OpenSSL + ГОСТ (gostengy и gost_capi) - Использование КриптоПро CSP в OpenSSL: apache, nginx etc

Code: Select all

Подробнее см. здесь https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=8544
В первом сообщении текущей темы читаем и выполняем пункт - Создание необходимых привязок и кэша для необходимых динамических библиотек
Заметка. Для OpenSSL >= 1.1.0 используйте gostengy
Для проверки вашей текущей версии OpenSSL

Code: Select all

openssl version -a
Для libgost_capi.so

Для libgostengy.so
Linux 6.6.11-porteus #1 SMP PREEMPT_DYNAMIC Sun Jan 14 12:07:37 MSK 2024 x86_64 Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Navi 23 [Radeon RX 6600] [1002:73ff] (rev c7) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

User avatar
Blaze
DEV Team
DEV Team
Posts: 3869
Joined: 28 Dec 2010, 11:31
Distribution: ⟰ Porteus current ☯ all DEs ☯
Location: ☭ Russian Federation, Lipetsk region, Dankov
Contact:

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

Post#6 by Blaze » 16 Jul 2023, 19:12

Установка российских корневых сертификатов
Начиная с сентября 2022 года многие российские сервисы начинают переходить на TLS-сертификаты, выпущенные российским удостоверяющим центром.
В связи с чем пользователи могут испытывать проблемы при доступе к таким сайтам.
Чтобы этого избежать, нам потребуется установить в систему корневые сертификаты удостоверяющего центра, что позволит системе и браузерам доверять выпущенным им сертификатам.
Установка сертификатов в ОС
Установка сертификатов в Chromium
Установка сертификатов в Mozilla Firefox

Post Reply