- Astra linux орёл 2.12 криптопро 4.0.9963 госзакупки и площадки
- Firefox
- Google chrome / chromium
- Mozilla network security services (nss)
- Rosa crypto tool
- Thunderbird
- Trusted esign
- Добавление сертификатов в базу данных nss
- Как добавить корневой сертификат в доверенные в linux в веб браузеры
- Как добавить корневой сертификат в доверенные в linux на уровне системы
- Настройка «криптопро» csp
- Настройка работы с рутокен эцп 2.0
- Общесистемные корневые ca сертификаты
- Подпись средствами «криптопро csp»
- Получаем тестовый сертификат
- Проверка содержимого csr
- Просмотр содержимого ключей и сертификатов
- Резюме
- Создание корневого приватного ключа
- Создание самоподписанного корневого сертификата
- Создание файла с запросом на подпись сертификата (csr)
Astra linux орёл 2.12 криптопро 4.0.9963 госзакупки и площадки
astralinux доступ к госзакупкам
Работа с КриптоПро CSP
Инструкция по настройке и работе с Крипто-Про для государственных порталов
Установка и настройка КриптоПро CSP в Porteus Linux
Вход с помощью электронной подписи на портал Госуслуг на Linux.
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install samba ssh
$ sudo systemctl enable ssh
$ sudo systemctl start ssh
Два варианта либо ставим xrdp
$ sudo apt install xrdp
либо
==================================
Установка дополнений VirtualBox $ sudo apt install gcc make perl linux-headers-generic linux-headers-`uname -r`
Подключить образ диска Дополнений гостевой ОС
$ sudo mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
$ sudo bash /mnt/VBoxLinuxAdditions.run
$ sudo reboot
Проверка:
$ sudo modinfo vboxguest
filename: /lib/modules/4.15.3-1-generic/kernel/ubuntu/vbox/vboxguest/vboxguest.ko
version: 5.2.8_KernelUbuntu r120774
license: GPL
description: Oracle VM VirtualBox Guest Additions for Linux Module
author: Oracle Corporation
srcversion: F2E5886E3B0544500D404A1
alias: pci:v000080EEd0000CAFEsv00000000sd00000000bc*sc*i*
depends:
retpoline: Y
intree: Y
name: vboxguest
vermagic: 4.15.3-1-generic SMP mod_unload
signat: PKCS#7
signer:
sig_key:
sig_hashalgo: md4
==================================
$ cat /etc/astra_version
CE 2.12.8 (orel)
Загружаем КриптоПро 4.0.9963
Устанавливаем КриптоПро 4.0.9963
$ tar -zxf linux-amd64_deb.tgz
$ cd linux-amd64_deb
$ sudo ./install_gui.sh
Ставим все галки, лицензию позднее.
Ставим
лицензию на Крипто-Про при наличии
$ sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set *****-*****-*****-*****-*****
Если при установке не ввели лицензию, установится demo лицензия
$ /opt/cprocsp/sbin/amd64/cpconfig -license -view
License validity:
4040E-G0037-EK8R3-C6K4U-*****
Expires: 3 month(s) 2 day(s)
License type: Server.
Проверяем версию:
$ /opt/cprocsp/bin/amd64/csptest -keyset -verifycontext
CSP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 9196739
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2021 KC2 CSP
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,020 sec
[ErrorCode: 0x00000000]
==================================================================================
Сертификат сайта госзакупок, кривой:
Не должно быть тут русских букв???
Реакция:
Отключаем реакцию на кривой сертификат госзакупок
Предварительная проверка:
$ sudo /opt/cprocsp/bin/amd64/csptestf -tlsc -server zakupki.gov.ru -nosave
HSECPKG_ATTR_PACKAGE_INFO not supported.
Error 0x800b010f (CERT_E_CN_NO_MATCH) returned by CertVerifyCertificateChainPolicy!
An error occurred in running the program.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/csptest/WebClient.c:769:Error authenticating server credentials!
Error number 0x800b010f (2148204815).
CN-имя сертификата не совпадает с полученным значением.
Total: SYS: 0,060 sec USR: 0,060 sec UTC: 0,350 sec
[ErrorCode: 0x800b010f]
Отключение:
$ sudo /opt/cprocsp/sbin/amd64/cpconfig -ini ‘configparameters’ -add bool Rfc6125_NotStrict_ServerName_Check true
Проверка отключения:
$ sudo /opt/cprocsp/bin/amd64/csptestf -tlsc -server zakupki.gov.ru -nosave
SECPKG_ATTR_PACKAGE_INFO not supported.
DEContext expired: OK if file is completely downloaded
Reply status: HTTP/1.1 200 OK
1 connections, 589 bytes in 1.735 seconds;
Total: SYS: 0,300 sec USR: 0,180 sec UTC: 1,780 sec
[ErrorCode: 0x00000000]
Какой результат будет?
==================================================================================
$ export PATH=”$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr ‘n’ ‘:’)$PATH”
$ sudo apt install alien
$ cd ~/
Скачать плагин в /home/user (автоматическая загрузка версии плагина, соответствующей Вашей ОС)
$ tar -zxf cades_linux_amd64.tar.gz
$ cd ~/cades_linux_amd64
Установить плагин:
$ sudo alien -dc cprocsp-pki-2.0.0-amd64-cades.rpm
$ sudo alien -dc cprocsp-pki-2.0.0-amd64-plugin.rpm
$ sudo dpkg -i cprocsp-pki-cades_2.0.0-2_amd64.deb cprocsp-pki-plugin_2.0.0-2_amd64.deb
Сертификаты которые ставит Crypto-Pro:
$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot
Certmgr 1.1 (c) “Crypto-Pro”, 2007-2021.
program for managing certificates, CRLs and stores
=============================================================================
1——-
Issuer : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва,
STREET=”125375 г. Москва, ул. Тверская, д. 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Subject : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва,
STREET=”125375 г. Москва, ул. Тверская, д. 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Serial : 0x34681E40CB41EF33A9A0B7C876929A29
SHA1 Hash : 8cae88bbfd404a7a53630864f9033606e1dc45e2
SubjKeyID : 8b983b891851e8ef9c0278b8eac8d420b255c95d
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 20/07/2021 12:31:14 UTC
Not valid after : 17/07/2027 12:31:14 UTC
PrivateKey Link : No
2——-
Issuer : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва,
STREET=”улица Тверская, дом 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Subject : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва,
STREET=”улица Тверская, дом 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Serial : 0x4E6D478B26F27D657F768E025CE3D393
SHA1 Hash : 4bc6dc14d97010c41a26e058ad851f81c842415a
SubjKeyID : c254f1b46bd44cb7e06d36b42390f1fec33c9b06
Signature Algorithm : ГОСТ Р 34.11-2021/34.10-2021 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2021 (512 bits)
Not valid before : 06/07/2021 12:18:06 UTC
Not valid after : 01/07/2036 12:18:06 UTC
PrivateKey Link : No
3——-
Issuer : OGRN=1037700085444, INN=007717107991, C=RU,
S=Moscow, L=Moscow, O=”LLC “”Crypto-Pro”””, CN=CryptoPro GOST Root CA
Subject : OGRN=1037700085444, INN=007717107991, C=RU,
S=Moscow, L=Moscow, O=”LLC “”Crypto-Pro”””, CN=CryptoPro GOST Root CA
Serial : 0x4056ED0099A9D6AF49C9FF98B9C70E70
SHA1 Hash : 34e21fc04d3576b0ada81fd081955e2778291cc5
SubjKeyID : c2364dcc24260a439625305b67579b2ac9439cd5
Signature Algorithm : ГОСТ Р 34.11-2021/34.10-2021 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2021 (512 bits)
Not valid before : 15/11/2021 14:14:09 UTC
Not valid after : 15/11/2033 14:14:09 UTC
PrivateKey Link : No
=============================================================================
[ErrorCode: 0x00000000]
Установка личного сертификата выданного казначейством:
Копируем контейнер в
$ cd /var/opt/cprocsp/keys/user
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn
CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 40317331
\.HDIMAGEPRIZMA1
OK.
Total: SYS: 0,000 sec USR: 0,010 sec UTC: 0,140 sec
[ErrorCode: 0x00000000]
или
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn
CSP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10339523
\.HDIMAGEtest
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,100 sec
[ErrorCode: 0x00000000]
Установить скопированный контейнер:
$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont ‘\.HDIMAGEPRIZMA1’
или
$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont ‘\.HDIMAGEtest’
Просмотор личных сертификатов:
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
Установить расширение firefox на страничке с проверкой плагина:
Проверка плагина
Дожаться сообщения:
Проверить подпись.
Сертификат головного удостверящего центра центра уже установлен в mRoot
Просмотр:
$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot
Если случайно удалили:
Скачаем и установим в mRoot
Если нужно удалить:
#$ sudo /opt/cprocsp/bin/amd64/certmgr -delete -all -store mRoot
Сертификаты zakupki.gov.ru
Качаем:
Сертификат Минкомсвязи России (Головного удостверяющего центра) ГОСТ Р 34.102021-2021
Сертификат Удостоверяющего центра Федерального казначейства ГОСТ Р 34.102021-2021
или wget
$ cd ~
Этот сертификат уже стоит, ставить не нужно:
#$ wget http://www.roskazna.ru/upload/iblock/7e3/guts_2021.cer
#$ sudo /opt/cprocsp/bin/amd64/certmgr -inst -cert -file guts_2021.cer -store mRoot
$ wget http://www.roskazna.ru/upload/iblock/acb/fk_2021.cer
$ sudo /opt/cprocsp/bin/amd64/certmgr -inst -cert -file fk_2021.cer -store mRoot
Просмотр:
$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot
~$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot
Certmgr 1.1 (c) “Crypto-Pro”, 2007-2021.
program for managing certificates, CRLs and stores
=============================================================================
1——-
Issuer : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва,
STREET=”улица Тверская, дом 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Subject : E=uc_fk@roskazna.ru, S=г. Москва,
INN=007710568760, OGRN=1047797019830, STREET=”Большой Златоустинский
переулок, д. 6, строение 1″, L=Москва, C=RU, O=Федеральное казначейство,
CN=Федеральное казначейство
Serial : 0x00B5F132D300000000015A
SHA1 Hash : ab0e24e9a206877ab7dc4625dfcceb9c18b0cb0d
SubjKeyID : c0d6d60a7d6b7ec98e39bcda89faaf942c585a8d
Signature Algorithm : ГОСТ Р 34.11-2021/34.10-2021 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2021 (512 bits)
Not valid before : 19/11/2021 15:56:01 UTC
Not valid after : 19/11/2033 15:56:01 UTC
PrivateKey Link : No
CA cert URL : http://reestr-pki.ru/cdp/guc_gost12.crt
CDP : http://reestr-pki.ru/cdp/guc_gost12.crl
CDP : http://company.rt.ru/cdp/guc_gost12.crl
CDP : http://rostelecom.ru/cdp/guc_gost12.crl
2——-
Issuer : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва,
STREET=”улица Тверская, дом 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Subject : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва,
STREET=”улица Тверская, дом 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Serial : 0x4E6D478B26F27D657F768E025CE3D393
SHA1 Hash : 4bc6dc14d97010c41a26e058ad851f81c842415a
SubjKeyID : c254f1b46bd44cb7e06d36b42390f1fec33c9b06
Signature Algorithm : ГОСТ Р 34.11-2021/34.10-2021 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2021 (512 bits)
Not valid before : 06/07/2021 12:18:06 UTC
Not valid after : 01/07/2036 12:18:06 UTC
PrivateKey Link : No
3——-
Issuer : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва,
STREET=”125375 г. Москва, ул. Тверская, д. 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Subject : E=dit@minsvyaz.ru, C=RU, S=77 г. Москва, L=Москва,
STREET=”125375 г. Москва, ул. Тверская, д. 7″, O=Минкомсвязь России,
OGRN=1047702026701, INN=007710474375, CN=Головной удостоверяющий центр
Serial : 0x34681E40CB41EF33A9A0B7C876929A29
SHA1 Hash : 8cae88bbfd404a7a53630864f9033606e1dc45e2
SubjKeyID : 8b983b891851e8ef9c0278b8eac8d420b255c95d
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 20/07/2021 12:31:14 UTC
Not valid after : 17/07/2027 12:31:14 UTC
PrivateKey Link : No
4——-
Issuer : OGRN=1037700085444, INN=007717107991, C=RU,
S=Moscow, L=Moscow, O=”LLC “”Crypto-Pro”””, CN=CryptoPro GOST Root CA
Subject : OGRN=1037700085444, INN=007717107991, C=RU,
S=Moscow, L=Moscow, O=”LLC “”Crypto-Pro”””, CN=CryptoPro GOST Root CA
Serial : 0x4056ED0099A9D6AF49C9FF98B9C70E70
SHA1 Hash : 34e21fc04d3576b0ada81fd081955e2778291cc5
SubjKeyID : c2364dcc24260a439625305b67579b2ac9439cd5
Signature Algorithm : ГОСТ Р 34.11-2021/34.10-2021 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2021 (512 bits)
Not valid before : 15/11/2021 14:14:09 UTC
Not valid after : 15/11/2033 14:14:09 UTC
PrivateKey Link : No
=============================================================================
[ErrorCode: 0x00000000]
В принципе установивки контейнера с личным сертификтом может быть достаточно.
Проверить можно:
Проверка цепочек
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
Смотрим:
CN=’Фёдорова Галина Борисовна’
#$ /opt/cprocsp/bin/amd64/cryptcp -sign -dn mail@vt.com -errchain /tmp/test /tmp/test.sgn
$ /opt/cprocsp/bin/amd64/cryptcp -copycert -dn mail@vt.com -df ~/t.cer
$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=’Фёдорова Галина Борисовна’ -df ~/t.cer
…..
…..
…..
Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]
Если в CN много кавычек, можно смотреть по e-mail из сертификата
CN=”ООО “”РОМАШКА”””
$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn mail@vt.com -df ~/t.cer
…..
…..
…..
Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]
Отмеченное до крестиков можем не делать:
Установка головного сертификата удостверяющего центра (из сертификата Калуга-Астрал):
В личном сертификате есть:
CA cert URL : http://www.dp.keydisk.ru/root/833/astral-833-2021n.cer
$ mkdir ~/CAs
$ wget -P ~/CAs $(/opt/cprocsp/bin/amd64/certmgr -list -store uMy | awk ‘/CA cert URL/ { print $5 }’)
for cert in $(ls -1 ~/CAs/*.cer); do sudo /opt/cprocsp/bin/amd64/certmgr -inst -store mRoot -file $cert; done
или
можно посмотреть в личном сертификате
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
…
CA cert URL : http://www.dp.keydisk.ru/root/833/astral-833-2021n.cer
….
Скачать
$ wget http://www.dp.keydisk.ru/root/833/astral-833-2021n.cer
Установить.
$ sudo /opt/cprocsp/bin/amd64/certmgr -inst -cert -file astral-833-2021n.cer -store mRoot
Проверка цепочек
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
Смотрим:
CN=’Фёдорова Галина Борисовна’
$ /opt/cprocsp/bin/amd64/cryptcp -copycert -dn mail@vt.com -df ~/t.cer
$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=’Фёдорова Галина Борисовна’ -df ~/t.cer
…..
…..
…..
Certificate chains are checked.
Certificate’s been copied.
[ReturnCode: 0]
или
Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]
Firefox
Поскольку Firefox принадлежит Mozilla, то этот веб браузер, конечно, также использует Mozilla Network Security Services (NSS).
Стандартными расположениями папок с базами данных NSS являются:
- ~/.pki/nssdb (на уровне пользователей)
- /etc/pki/nssdb (на общесистемном уровне, может отсутствовать)
Firefox НЕ использует ни одно из этих стандартных расположений, база данных хранится в профиле пользователя, который имеет общий вид ~/.mozilla/firefox/СЛУЧАЙНЫЕ-БУКВЫ-ЦИФРЫ.default/cert9.db, например, ~/.mozilla/firefox/3k0r4loh.default/cert9.db.
Посмотреть корневые сертификаты CA которые использует Firefox в Linux можно следующей командой:
certutil -L -d ~/.mozilla/firefox/*.default/
У Firefox-esr это папка:
certutil -L -d ~/.mozilla/firefox/*.default-esr/
Также вы можете просмотреть корневые CA сертификаты в настройках браузера:
Приватность и Защита → Сертификаты → Просмотр сертификатов → Центры сертификации:
Google chrome / chromium
Как уже было сказано, при работе на Linux, Google Chrome использует библиотеку Mozilla Network Security Services (NSS) для выполнения верификации сертификатов.
Корневые CA сертификаты, которые добавил пользователь, хранятся в файле ~/.pki/nssdb/cert9.db, их можно просмотреть командой:
certutil -L -d ~/.pki/nssdb
Поскольку Chrome не может удалить сертификаты из хранилища NSS, то если вы отключите некоторые из них в настройках веб браузера (Privacy and security → Manage certificates → Authorities), то в том же файле, где хранятся добавленные пользователем корневые CA сертификаты, будут сохранены изменения о полномочиях отключённого сертификата:
Используемые в Google Chrome / Chromium корневые CA сертификаты в Linux можно посмотреть следующим причудливым способом:
1. Найдите расположение файла libnssckbi.so (как было сказано в предыдущем разделе, в нём NSS хранит доверенные корневые сертификаты):
locate libnssckbi.so
Примеры расположений этого файла:
- /usr/lib/libnssckbi.so
- /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
2. Теперь выполните команду вида:
ln -s /ПУТЬ/ДО/libnssckbi.so ~/.pki/nssdb
Например:
ln -s /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so ~/.pki/nssdb
2. Затем запустите команду:
certutil -L -d sql:$HOME/.pki/nssdb/ -h 'Builtin Object Token'
Вы увидите доверенные корневые сертификаты, которые использует Google Chrome в Linux.
Также вы можете просмотреть корневые CA сертификаты в настройках браузера:
Конфиденциальность и безопасность (выбрать «Ещё») → Настроить сертификаты → Центры сертификации, на английском это Privacy and security → Manage certificates → Authorities.
Mozilla network security services (nss)
Network Security Services (NSS) это набор библиотек, разработанных для поддержки кросс-платформенной разработки защищенных клиентских и серверных приложений. Приложения построенные с использование NSS могут использовать SSL v2 и v3, TLS, PKCS#5, PKCS#7, PKCS#11, PKCS#12, S/MIME, сертификаты X.509 v3 и другие стандарты обеспечения безопасности.
В отличие от OpenSSL, NSS использует файлы базы данных в качестве хранилища сертификатов.
NSS начинается с жёстко закодированного списка доверенных сертификатов CA внутри файла libnssckbi.so. Этот список можно просмотреть из любого приложения, использующего NSS, способного отображать (и манипулировать) хранилищем доверенных сертификатов, например, Chrome-совместимые или Firefox-совместимые браузеры.
Некоторые приложения, использующие библиотеку NSS, используют хранилище сертификатов, отличное от рекомендованного. Собственный Firefox от Mozilla является ярким примером этого.
В вашем дистрибутиве скорее всего уже установлен пакет NSS, в некоторых дистрибутивах он называется libnss3 (Debian и производные) в некоторых — nss (Arch Linux, Gentoo и производные).
Если вы хотите просматривать и изменять хранилища сертификатов NSS, то понадобиться утилита certutil. В Arch Linux эта утилита входит в пакет nss и, следовательно, предустановлена в Arch Linux. А в Debian и производные установка делается так:
sudo apt install libnss3-tools
Rosa crypto tool
Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.
Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2021 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 0.2.2.
Что внутри? Утилита написана на Python с использованием PyQt4 для графического интерфейса.
Установить ее можно, использовав «Управление программами» в Rosa Linux.
Вставляем токен и запускаем утилиту.
Видим, что токен определился успешно и был найден наш сертификат.
Интерфейс программы настолько прост, что описывать и показывать в статье все его функции не имеет смысла. Попробуем только подписать файл.
Выбираем файл и жмем “Подписать файл”. Получаем вот такое предупреждение.
Нажимаем «OK» и получаем информацию о том, что файл был подписан успешно.
Основное достоинство этой утилиты в том, что она совершенно бесплатная, в отличии нашего следующего продукта.
По сравнению с использованием «КриптоПро CSP» из консоли:
На порядок проще использовать;— Отсутствуют различные параметры подписи.
Исходный код программы доступен в публичном репозитории на ABF:abf.io/uxteam/rosa-crypto-tool-develСистема контроля версий, которую использует «НТЦ ИТ РОСА», интегрирована в сборочную среду и базируется на Git. Можно вполне использовать любой клиент git.
Надеюсь, разработчики других отечественных дистрибутивов Linux, таких как Astra Linux, GosLinux и другие добавят в свои дистрибутивы пакеты с rosa-crypto-tool.
Thunderbird
Чтобы просмотреть, каким CA доверяет Thunderbird:
certutil -L -d ~/.thunderbird/*.default/
Чтобы найти все файлы cert9.db выполните команду:
find ~/ -name "cert9.db"
Trusted esign
Второй продукт, про который мы поговорим, это Trusted eSign от компании “Цифровые технологии”. Она известна на российском рынке ИБ как разработчик средства по работе с подписью и шифрованием для ОС Windows – «КриптоАРМ».
Главное, не путать этот продукт с Trusted.eSign – web-сервисом по работе с подписью этой же компании.
Добавление сертификатов в базу данных nss
Некоторые приложения используют базу данных NSS, и у вас может быть необходимость добавить доверенные CA в неё.
Последующие изменения повлияют только на приложения, использующие базу данных NSS и учитывающие файл /etc/pki/nssdb.
1. Сначала создайте структуру каталогов для системных файлов базы данных NSS:
sudo mkdir -p /etc/pki/nssdb
Затем создайте новый набор файлов базы данных. Пароль нужен для того, чтобы базу данных могли редактировать только люди, которые его знают. Если все пользователи в системе (и с доступом к резервным копиям) заслуживают доверия, этот пароль можно оставить пустым.
sudo certutil -d sql:/etc/pki/nssdb -N
2. Убедитесь, что файлы базы данных доступны для чтения всем:
sudo chmod go r /etc/pki/nssdb/*
3. Теперь, когда доступны файлы базы данных NSS, добавьте сертификат в хранилище следующим образом:
sudo certutil -d sql:/etc/pki/nssdb -A -i ФАЙЛ-СЕРТИФИКАТА.crt -n "ИМЯ-СЕРТИФИКАТА" -t "C,,"
Например:
sudo certutil -d sql:/etc/pki/nssdb -A -i ./HackWareCA.crt -n "HackWare CA" -t "C,,"
Биты доверия, используемые в приведённом выше примере, помечают сертификат как надёжный для подписи сертификатов, используемых для связи SSL/TLS. Имя (указывается после опции -n), используемое в команде, можно выбрать любое, но убедитесь, что его легко отличить от других сертификатов в магазине.
Для проверки:
certutil -L -d /etc/pki/nssdb
Аналогичные инструкции можно использовать для включения сертификата только в базу данных NSS конкретного пользователя:
certutil -d sql:$HOME/.pki/nssdb -A -i ФАЙЛ-СЕРТИФИКАТА.crt -n "ИМЯ-СЕРТИФИКАТА" -t "C,,"
Удаление из файлов базы данных NSS
Чтобы удалить сертификат из любой базы данных NSS, используйте команду certutil следующим образом. В этом примере используется общесистемное расположение базы данных NSS, но его можно легко изменить на пользовательское ~/.pki/nssdb местоположение.
sudo certutil -d sql:/etc/pki/nssdb -D -n "certificateName"
Как добавить корневой сертификат в доверенные в linux в веб браузеры
Chrome, Chromium, Firefox и созданные на их основе веб браузеры доверяют корневым сертификатам, установленным на уровне системы. То есть вам достаточно добавить в доверенные CA сертификат как это показано в предыдущем разделе.
Причём эти браузеры хотя и используют NSS, они игнорируют общесистемные сертификаты NSS, которые можно добавить в файл /etc/pki/nssdb!
Тем не менее приложения, которые используют NSS (такие как Firefox, Thunderbird, Chromium, Chrome) хранят свои списки доверенных сертификатов в файлах cert9.db. Чтобы добавить свой сертификат в каждый из этих файлов можно использовать скрипт.
Сохранить следующий код в файл CAtoCert9.sh:
#!/bin/bash
certfile="root.cert.pem"
certname="My Root CA"
for certDB in $(find ~/ -name "cert9.db")
do
certdir=$(dirname ${certDB});
certutil -A -n "${certname}" -t "TCu,Cu,Tu" -i ${certfile} -d sql:${certdir}
doneВ этом файле измените значение certfile на имя файла вашего сертификата и значение certname на имя вашего сертификата, сохраните и закройте файл.
Затем запустите его следующим образом:
bash ./CAtoCert9.sh
В результате в домашней папке пользователя будут найдены все файлы cert9.db и в каждый из них будет добавлен указанный CA сертификат.
Вы можете добавить CA сертификаты в графическом интерфейсе каждого браузера.
- В настройках Chrome: Конфиденциальность и безопасность → Безопасность → Настроить сертификаты → Центры сертификации
- В настройках Chromium: Конфиденциальность и безопасность (выбрать «Ещё») → Настроить сертификаты → Центры сертификации
Нажмите кнопку «Импорт»:
Выберите файл с сертификатом.
Укажите, какие полномочия вы даёте этому сертификату:
- В настройках Firefox: Приватность и Защита → Сертификаты → Просмотр сертификатов → Центры сертификации:
Нажмите кнопку «Импортировать»:
Выберите файл с сертификатом.
Укажите, какие полномочия вы даёте этому сертификату:
Как добавить корневой сертификат в доверенные в linux на уровне системы
Сертификат с расширением .crt можно открыть двойным кликом и просмотреть его содержимое:
Если вы работаете в системе от обычного пользователя (не root), то кнопка «Импортировать» будет недоступна.
Чтобы разблокировать кнопку «Импортировать», выполните следующую команду:
sudo gcr-viewer /ПУТЬ/ДО/СЕРТИФИКАТА.crt
Например:
sudo gcr-viewer ./HackWareCA.crt
Данный способ может не сработать, поэтому рассмотрим, как добавить доверенные корневые центры сертификации в командной строке.
Суть метода очень проста:
- Добавить свой корневой CA сертификат в папку, предназначенную для таких сертификатов.
- Запустить программу для обновления общесистемного списка сертификатов.
Пути и команды в разных дистрибутивах Linux чуть различаются.
Просмотреть Subject всех корневых CA сертификатов можно уже знакомой командой:
awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crtДля демонстрации я добавлю сертификат с Common Name, включающим «HackWare», тогда для проверки, имеется ли сертификат с таким именем среди корневых CA, я могу использовать команду:
awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep -i HackWareДля добавления своего корневого CA в доверенные в Debian, Kali Linux, Linux Mint, Ubuntu и их производных:
1. Проверьте, существует ли директория /usr/local/share/ca-certificates:
ls -l /usr/local/share/ca-certificates
Если её ещё нет, то создайте:
sudo mkdir /usr/local/share/ca-certificates
Сертификат должен быть в формате PEM (обычно так и есть) и иметь расширение .crt — если расширение вашего сертификата .pem, то достаточно просто поменять на .crt.
2. Скопируйте ваш сертификат командой вида:
sudo cp СЕРТИФИКАТ.crt /usr/local/share/ca-certificates/
Например:
sudo cp ./HackWareCA.crt /usr/local/share/ca-certificates/
3. Запустите следующую команду для обновления общесистемного списка:
sudo update-ca-certificates
Пример вывода:
Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... Adding debian:HackWareCA.pem done. done.
Проверим наличие нашего CA сертификата среди доверенных:
awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep -i HackWareСертификат успешно найден:
Чтобы его удалить:
sudo rm /usr/local/share/ca-certificates/СЕРТИФИКАТ.crt sudo update-ca-certificates
Для добавления своего корневого CA в доверенные в Arch Linux, BlackArch и их производных:
1. Выполните команду вида:
sudo cp ./СЕРТИФИКАТ.crt /etc/ca-certificates/trust-source/anchors/
Например:
sudo cp ./HackWareCA.crt /etc/ca-certificates/trust-source/anchors/
2. Обновите общесистемный список доверенных CA:
sudo update-ca-trust
Чтобы удалить этот сертификат:
sudo rm /etc/ca-certificates/trust-source/anchors/СЕРТИФИКАТ.crt sudo update-ca-trust
Настройка «криптопро» csp
Несмотря на то, что есть несколько неплохих статей по настройке «КриптоПро CSP» под Linux (например,
или
), я опишу здесь свой вариант. Основная причина в том, что большинство инструкций написаны для «Крипто Про CSP» версии 3.x. А современная версия «КриптоПро CSP» 4.0 не является 100% совместимой с 3.x. Дополнительная причина – всегда приятно иметь полную инструкцию по настройке в одном месте, а не переключаться с одного окна на другое.
Приступаем к настройке.
Настройка работы с рутокен эцп 2.0
Сделаем небольшое отступление. Для работы с электронной подписью и шифрованием нам не обойтись без ключевых пар и сертификатов. Надежное хранение закрытых ключей – один из основных факторов безопасности. А более надежных средств хранения, чем токен или смарт-карта, человечество пока не придумало.
Для работы с токенами в ОС Linux есть масса различных средств и драйверов. Для описания всех этих средств понадобится отдельная статья. Поэтому я не буду подробно описывать, как это работает, и почему нам нужны именно эти пакеты.
Устанавливаем пакеты для работы с Рутокен ЭЦП 2.0:
apt-get install libpcsclite1 pcscd libccid
Нам также необходимо установить пакеты КриптоПро CSP для поддержки работы с токенами:
dpkg -i ./cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb ./cprocsp-rdr-rutoken-64_4.0.0-4_amd64.deb ./cprocsp-rdr-pcsc-64_4.0.0-4_amd64.deb ./lsb-cprocsp-pkcs11-64_4.0.0-4_amd64.debОбщесистемные корневые ca сертификаты
Консолидированный файл, включающий в себя все корневые сертификаты CA операционной системы, находится в файле /etc/ssl/certs/ca-certificates.crt. Этот файл может быть символической ссылкой на фактическое расположение сертификатов в файлах /etc/ssl/cert.pem или /etc/ca-certificates/extracted/tls-ca-bundle.pem.
Корневые CA сертификаты в виде отдельных файлов расположены в директории /etc/ssl/certs, в этой директории могут быть ссылки на фактическое расположение сертификатов, например, в /etc/ca-certificates/extracted/cadir/.
Для просмотра Subject всех корневых CA сертификатов в системе:
awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt
Эти сертификаты используются утилитоми curl, wget и другими. Веб-браузеры Chromium и Firefox используют свои собственные хранилища корневых CA сертификатов.
Чтобы узнать, где веб браузеры хранять корневые CA сертификаты в Linux, нам нужно познакомиться с NSS.
Подпись средствами «криптопро csp»
В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка:
- Отсутствие хорошей документации;
- Отсутствие графического интерфейса.
Подписать можно с помощью команды:
csptestf –sfsign –sign –in <имя файла> -out <имя файла> -my ‘Trusted eSign Test’ –detached –alg GOST94_256
Здесь,
my — параметр, в котором надо указать часть Common Name сертификата для подписи;
detached — позволяет создать открепленную подпись;
alg GOST94_256 — задает алгоритм хэширования, который будет использоваться при создании подписи.
Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:
csptestf –sfsignТакой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.
Поговорим теперь об утилитах, которые облегчают жизнь обычным пользователям при работе с подписью и шифрованием в Linux.
Получаем тестовый сертификат
Перед тем как перейти непосредственно к работе с подписью, надо сгенерировать ключевую пару и создать сертификат электронной подписи. Если у вас уже есть Рутокен с контейнером «КриптоПро», то эту часть можно смело пропустить.
Проверка содержимого csr
После создания CSR используйте его, чтобы подписать собственный сертификат и/или отправить его в общедоступный центр сертификации и попросить его подписать сертификат. Оба подхода описаны в следующих разделах. Но прежде чем сделать это, неплохо бы ещё раз проверить правильность CSR. Это делается так:
Просмотр содержимого ключей и сертификатов
Мы можем подробно изучить содержимое всех созданных в OpenSSL файлов, а также при необходимости конвертировать их в другие форматы.
В следующих командах используются тестовые файлы со следующими именами:
Обратите внимание на расширения файлов — они могут отличаться от тех, которые используются в других инструкциях. Например, вместо .key и .crt может использоваться расширение .pem. Расширение файла не имеет особого значения кроме как служить подсказкой пользователю, что именно находится в этом файле. Это же самое касается и имён файлов — вы можете выбирать любые имена.
Все эти файлы являются текстовыми:
cat rootCA.key
Там мы увидим примерно следующее:
-----BEGIN PRIVATE KEY----- MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDJBKkr6XzzAcXD eyDQdvB0SWE2Fl3nqlX/c2RgqMgScXtgidEzOu9ms3Krju5UKLokkQJrZFPMtiIL MuPJFdYjVyfkfnqlZiouBVgJ60s8NQBBI8KnyyAoJCIFdASoW4Kv5C5LT8pX9eRa /huJaRJL5XsFUGnTOLvW2ZLN52iAux9CoZlmH6ZF4nuQpblwN0MHULAhze52VNFT ………………………………………………….. ………………………………………………….. ………………………………………………….. ………………………………………………….. ………………………………………………….. ………………………………………………….. -----END PRIVATE KEY-----
Резюме
Подведем итог. В конце 2021 – начале 2021 года наметился неплохой прогресс в средствах по работе с электронной подписью под Linux. Информационная безопасность начинает поворачиваться к пользователю лицом, и с каждым годом требуется все меньше действий для такого простого действия, как подписать или зашифровать файл с использованием отечественных алгоритмов.
Хочется дополнительно отметить такое развитие отечественных продуктов, учитывая современный тренд на замену Windows на Linux в государственных и муниципальных организациях. В рамках этого тренда становится актуальным использование средств криптографической защиты информации под Linux.
Такое развитие не может не радовать, особенно когда это происходит под Linux.
Создание корневого приватного ключа
Внимание: этот ключ используется для подписи запросов сертификатов, любой, кто получил этот ключ, может подписывать сертификаты от вашего имени, поэтому храните его в безопасном месте:
Генерация приватного ключа RSA используя параметры по умолчанию (ключ будет сохранён в файл с именем rootCA.key):
openssl genpkey -algorithm RSA -out rootCA.key
Опция -out указывает на имя файла для сохранения, без этой опции файл будет выведен в стандартный вывод (на экран). Имя выходного файла не должно совпадать с именем входного файла.
Для безопасности ключа его следует защитить паролем. Генерация приватного ключа RSA используя 128-битное AES шифрование (-aes-128-cbc) и парольную фразу “hello” (-pass pass:hello):
openssl genpkey -algorithm RSA -out rootCA.key -aes-128-cbc -pass pass:hello
Конечно, опцию -pass pass:hello можно не указывать, тогда вам будет предложено ввести пароль во время генерации ключа.
Список поддерживаемых симметричных алгоритмов шифрования приватного ключа можно узнать в документации (раздел SUPPORTED CIPHERS):
man enc
Если для генерируемого ключа не указано количество бит, то по умолчанию используется 2048, вы можете указать другое количество бит с помощью команды вида (будет создан 4096-битный ключ):
openssl genpkey -algorithm RSA -out rootCA.key -aes-128-cbc -pkeyopt rsa_keygen_bits:4096
Создание самоподписанного корневого сертификата
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
Здесь мы использовали наш корневой ключ для создания корневого сертификата (файл rootCA.crt), который должен распространяться на всех компьютерах, которые нам доверяют. А приватный ключ (файл rootCA.key) должен быть секретным, поскольку он будет использоваться для подписи сертификатов серверов.
Создание сертификатов (делается для каждого домена) включает в себя несколько этапов. Эту процедуру необходимо выполнить для каждого домена/сервера, которым требуется доверенный сертификат от нашего ЦС.
Создание файла с запросом на подпись сертификата (csr)
Получив закрытый ключ, вы можете приступить к созданию запроса на подпись сертификата — Certificate Signing Request (CSR). Это официальный запрос к CA о подписании сертификата, который содержит открытый ключ объекта, запрашивающего сертификат, и некоторую информацию об объекте.
Создание CSR обычно представляет собой интерактивный процесс, в ходе которого вы будете предоставлять элементы отличительного имени сертификата (вводить информацию о стране, городе, организации, email и т.д.). Внимательно прочитайте инструкции, предоставленные инструментом openssl; если вы хотите, чтобы поле было пустым, вы должны ввести одну точку (.) в строке, а не просто нажать «Enter».
Если вы сделаете последнее, OpenSSL заполнит соответствующее поле CSR значением по умолчанию. (Такое поведение не имеет никакого смысла при использовании с конфигурацией OpenSSL по умолчанию, что и делают практически все. Это имеет смысл, когда вы осознаете, что можете изменить значения по умолчанию, либо изменив конфигурацию OpenSSL, либо предоставив свои собственные конфигурации в файлах).
В запросе на подпись сертификата вы указываете информацию для сертификата, который хотите сгенерировать. Этот запрос будет обработан владельцем корневого ключа (в данном случае вы его создали ранее) для генерации сертификата.
Важно: имейте в виду, что при создании запроса на подпись важно указать Common Name, предоставляющее IP-адрес или доменное имя для службы, в противном случае сертификат не может быть проверен.
Я опишу здесь два способа:
