Как установить SSL сертификат на Nginx (Linux) | Облачный виртуальный хостинг CloudLite

Как установить SSL сертификат на Nginx (Linux) | Облачный виртуальный хостинг CloudLite Сертификаты

3 Работа с сертификатами КриптоПро — РЕД ОС

Работа с криптоконтейнерами
Установка личных сертификатов
Установка корневых сертификатов
Просмотр сертификатов
Удаление сертификатов
Перенос контейнера с flash носителя в локальное хранилище ПК

Для удобства использования утилит КриптоПро создадим на них символьные ссылки, для этого выполните:

ln -s /opt/cprocsp/bin/amd64/certmgr /usr/bin/certmgr
ln -s /opt/cprocsp/bin/amd64/csptest /usr/bin/csptest
ln -s /opt/cprocsp/sbin/amd64/cpconfig /usr/bin/cpconfig

Просмотр версии КриптоПро:

csptest -enum -info

или

cat /etc/opt/cprocsp/release

Проверка лицензии:

cpconfig -license -view

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

# cpconfig -license -set <серийный_номер>

При использовании токенов сервис pcscd должен быть запущен. Проверка статуса pcscd:

systemctl status pcscd

если он выключен, то включите его:

systemctl start pcscd
systemctl enable pcscd

Вывод сообщений журнала службы pcscd:

pcscd -dffff

Узнать модель подключенного токена:

csptest -card -enum -v -v
pscs_scan

Работа с криптоконтейнерами

1. Проверить наличие доступных контейнеров:

csptest -keyset -enum_cont -fqcn -verifyc | iconv -f cp1251
CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.AcquireContext: OK. HCRYPTPROV: 16778675\.Aladdin R.D. JaCarta 00 008df47e71-18ae-49c1-8738-9b4b0944dcd4\.FLASHbob\.HDIMAGEbobOK.Total: SYS: 0,010 sec USR: 0,110 sec UTC: 6,240 sec[ErrorCode: 0x00000000]

Имена контейнеров используются для установки личных сертификатов.

  • Считыватель HDIMAGE размещается в /var/opt/cprocsp/keys/<имя пользователя>/ т.е в данном случае используется жесткий диск для хранения ключей.
  • Считыватель FLASH означает, что используется флешка для хранения приватных ключей.
  • Также считывателем может выступать токен.

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

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

Для дальнейшего использования имен контейнеров содержащих кодировку cp1251, выведем список контейнеров с уникальными именами:

csptest -keyset -enum_cont -fqcn -verifyc -uniq
CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.AcquireContext: OK. HCRYPTPROV: 23397811\.Aladdin R.D. JaCarta 00 008df47e71-18ae-49c1-8738-9b4b0944dcd4 | \.Aladdin R.D. JaCarta 00 00SCARDJACARTA_6082028344937676CC00E412OK.Total: SYS: 0,000 sec USR: 0,110 sec UTC: 6,230 sec[ErrorCode: 0x00000000]

3. Просмотр подробной информации о контейнере:

csptest -keyset -container '\.HDIMAGEbob' -info

4. Перечисление контейнеров пользователя:

csptest -keyset -enum_cont -verifycontext -fqcn

5. Перечисление контейнеров компьютера:

csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys

6. Открыть(проверить) контейнер пользователя:

csptest -keyset -check -cont '\.имя считывателяимя контейнера'

7. Открыть(проверить) контейнер компьютера:

csptest -keyset -check -cont '\.имя считывателяимя контейнера' -machinekeyset

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

Установку личных сертификатов необходимо производить в консоли обычного пользователя (не root).
1. Установка сертификата без привязки к ключам:

certmgr -inst -file cert_bob.cer

2. Установка личного сертификата cert_bob.cer, сертификат при этом попадает в пользовательское хранилище uMy. Приватный ключ находится на флешке.

certmgr -inst -file cert_bob.cer -store uMy -cont '\.FLASHbob'

в команде указывается сертификат cert_bob.cer, который ассоциируется с приватным контейнером \.FLASHbob’

3. Установка сертификата с токена (в конце команды указывается контейнер)

/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\.Aladdin R.D. JaCarta 00 008df47e71-18ae-49c1-8738-9b4b0944dcd4'

если сертификат не привязан к контейнеру на токене, то при установке укажите путь до него через параметр -file:

/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\.Aladdin R.D. JaCarta 00 008df47e71-18ae-49c1-8738-9b4b0944dcd4' -file /home/bob/cert_bob.cer

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

При установке корневых сертификатов достаточно указать хранилище uRoot. При указании mRoot (при наличии прав администратора) корневой сертификат будет доступен всем пользователям системы.

1. Установка в хранилище КриптоПро:

certmgr -inst -store uRoot -file <название-файла>.cer

2. Установка в хранилище ПК:

certmgr -inst -store mRoot -file <название-файла>cer

3. Установка списка отозванных сертификатов crl:

certmgr -inst -crl -file <название-файла>.crl


Просмотр сертификатов

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

certmgr -list

2. Просмотр установленных сертификатов в локальном хранилище uMy:

certmgr -list -store uMy

3. Просмотр сертификатов в хранилище ПК (обычно сюда устанавливаются корневых сертификаты):

$ certmgr -list -store uRoot

4. Просмотр сертификатов в контейнере:

certmgr -list -container '\.Aladdin R.D. JaCarta 00 008df47e71-18ae-49c1-8738-9b4b0944dcd4'

5. Просмотр промежуточных сертификатов:

certmgr -list -store uca

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

1. Удалить сертификат из личного хранилища сертификатов
Просмотрите установленные сертификаты:

certmgr -list

Изучите список всех установленных сертификатов (в общем списке отображаются абсолютно все сертификаты).

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

certmgr -delete -store uMy

Если установлено более одного сертификата, то будет предложено указать номер удаляемого сертификата.

2. Удалить сертификаты, установленные в хранилище КриптоПро:

certmgr -delete -store uRoot

Если установлено более одного сертификата, то будет предложено указать номер удаляемого сертификата.

3. Удалить все сертификаты, установленные в хранилище КриптоПро:

certmgr -delete -all -store uRoot

4. Удалить все сертификаты, установленные в хранилище ПК:

certmgr -delete -store mRoot

Перенос контейнера с flash носителя в локальное хранилище ПК

1. Активируем хранилище HDIMAGE:

cpconfig -hardware reader -add HDIMAGE store
Adding new reader:
Nick name: HDIMAGE
Succeeded, code:0x0

2. Посмотрим, какие контейнеры доступны на флешке:

csptest -keyset -enum_cont -fqcn -verifyc

CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 32114099
\.FLASHbob
OK.
Total: SYS: 0,020 sec USR: 0,080 sec UTC: 0,190 sec
[ErrorCode: 0x00000000]

Перейдите на Flash носитель и скопируйте этот контейнер — каталог bob.000 с приватными (закрытыми) ключами в /var/opt/cprocsp/keys/user — в этом каталоге находится локальное хранилище HDIMAGE

3. Посмотрим доступные контейнеры:

csptest -keyset -enum_cont -fqcn -verifyc

CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 36951475
\.FLASHbob
\.HDIMAGEbob
OK.
Total: SYS: 0,000 sec USR: 0,070 sec UTC: 0,160 sec
[ErrorCode: 0x00000000]

Как видим, появился новый контейнер \.HDIMAGEbob
Теперь flash носитель можно отключить, он нам больше не понадобится.

5. Установим пользовательский сертификат с привязкой к закрытому контейнеру \.HDIMAGEbob

certmgr -inst -file cert-bob.cer -cont '\.HDIMAGEbob'

Добавление сертификатов в базу данных nss

Некоторые приложения используют базу данных NSS, и у вас может быть необходимость добавить доверенные CA в неё.

Последующие изменения повлияют только на приложения, использующие базу данных NSS и учитывающие файл /etc/pki/nssdb.

1. Сначала создайте структуру каталогов для системных файлов базы данных NSS:

sudo mkdir -p /etc/pki/nssdb

Затем создайте новый набор файлов базы данных. Пароль нужен для того, чтобы базу данных могли редактировать только люди, которые его знают. Если все пользователи в системе (и с доступом к резервным копиям) заслуживают доверия, этот пароль можно оставить пустым.

sudo certutil -d sql:/etc/pki/nssdb -N

2. Убедитесь, что файлы базы данных доступны для чтения всем:

Про сертификаты:  ООО "ПЛАСТПРОФИЛЬ" - Щёлково - ОГРН 1155050006847

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 на уровне системы

Сертификат с расширением .crt можно открыть двойным кликом и просмотреть его содержимое:


Если вы работаете в системе от обычного пользователя (не root), то кнопка «Импортировать» будет недоступна.

Чтобы разблокировать кнопку «Импортировать», выполните следующую команду:

sudo gcr-viewer /ПУТЬ/ДО/СЕРТИФИКАТА.crt

Например:

sudo gcr-viewer ./HackWareCA.crt


Данный способ может не сработать, поэтому рассмотрим, как добавить доверенные корневые центры сертификации в командной строке.

Суть метода очень проста:

  1. Добавить свой корневой CA сертификат в папку, предназначенную для таких сертификатов.
  2. Запустить программу для обновления общесистемного списка сертификатов.

Пути и команды в разных дистрибутивах 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

Как установить ssl сертификат на nginx (linux) | облачный виртуальный хостинг cloudlite

Когда вы сгенерировали CSR-запрос и приобрели SSL сертификат, воспользуйтесь этой инструкцией по установке сертификата на веб-сервер Nginx под управлением Linux: Ubuntu, Debian или CentOS.

После заказа SSL сертификата файлы для его установки отразятся в панели управления (меню SSL): .CA – файл сертификата Центра Сертификации (Certificate Authority). .CRT – файл сертификата вашего веб-сайта.

Как установить SSL сертификат на Nginx (Linux) | Облачный виртуальный хостинг CloudLite

Как загрузить нужные файла на веб-сервер

Прежде всего загрузите файлы .ca и .crt на веб-сервер. При отсутствии графического окружения рабочего стола на сервере загрузка файлов может осуществиться на другой компьютер. Впоследствии их можно будет перенести.

Внимание: предполагается, что нужная для применения пара закрытый/открытый ключ была создана на том же веб-сервере, куда будет перенесен приобретенный сертификат. При создании ключей на другом сервере следует также перенести файл закрытого ключа .key на ваш веб-сервер (аналогично описанной ниже процедуре копирования файлов сертификатов).

Как переносить сертификаты с компьютера Linux/Mac OS:

Проще всего – при помощи опции SCP, встроенной в возможность терминала вашего компьютера:

Скачайте файлы .CA и .CRT на локальный компьютер. Откройте терминал и папку с сохраненными сертификатами (напр., Downloads):

cd ~/Downloads

Скопируйте сертификаты вашего сайта и Центра Сертификации на веб-сервер:

scp mydomain.ru_crt.crt mydomain.ru_ca.crt user@1.1.1.1:/etc/ssl

Здесь:

scp – команда для копирования файлов

mydomain.ru_crt.crt – имя загруженного из панели файла сертификата вашего веб-сайта

mydomain.ru_ca.crt – имя загруженного из панели файла сертификата Центра Авторизации

user – имя вашего пользователя для подключения к серверу через ssh (часто используется root)

1.1.1.1 – IP-адрес вашего веб-сервера

/etc/ssl – директория на удаленном сервере, куда следует сохранить загружаемые файлы.

Как переносить сертификаты с компьютера Windows:

Скачайте, установите и включите программу WinSCP. В открывшемся окне наберите данные для подключения к вашему серверу по SSH. Слева в окне отразятся файлы на локальном компьютере, справа – на подключенном удаленном сервере. Выберите или создайте директорию, куда нужно сохранить сертификаты, в правой части окна. Перетащите файлы .CA и .CRT в эту директорию из левой части окна.

Внимание: можно перенести файл закрытого ключа (.key) для удобства в ту же директорию, куда вы скопировали файлы сертификатов. Если вы не делаете этого, просто запомните путь до этого файла и потом укажите его в файле конфигурации Apache вместо пути, рассмотренном в нашем примере.

Если закрытый ключ .key сгенерирован прямо на сервере, то для его копирования в другую директорию подойдет команда:

cp /home/root/private.key /etc/ssl/private.key

Здесь:

cp – команда копирования

/home/root/ – путь до файла ключа

private.key – имя файла ключа

/etc/ssl/private.key – путь, по которому необходимо скопировать файл ключа

Вы можете удалить файл ключа из старого расположения такой командой:

rm /home/root/private.key

Как настроить веб-сервер Nginx на применение SSL сертификата

После копирования файлов сертификата сайта и Центра Сертификации вы должны отредактировать параметры вашего веб-сервера Nginx. Подключитесь к вашему серверу по SSH от имени пользователя root и выполните такие действия:

Про сертификаты:  Швеллер сертификаты | Веста Металл

1.       Объедините файлы сертификата Центра Сертификации (.CA) и сертификата вашего веб-сайта (.CRT) в один документ:

cat /etc/ssl/mydomain.ru_crt.crt /etc/ssl/mydomain.ru_ca.crt >> mydomain.crt

2.       Откройте файл конфигурации сайта, для которого устанавливается SSL сертификат. Если, к примеру, параметры веб-сайта хранятся в файле /etc/nginx/sites-enabled/default:

nano /etc/nginx/sites-enabled/default

Внимание: На Ubuntu/Debian файлы параметров сайтов Nginx обычно располагаются в директории /etc/nginx/sites-enabled/ . На CentOS стандартное расположение – /etc/nginx/conf.d/

Для поиска интересующей конфигурации подойдет команда ls /директория/конфигураций (напр. ls /etc/nginx/sites-enabled), отображающая полный список файлов в нужной директории.

Теперь с помощью команды nano можно открыть определенный файл (напр. nano /etc/nginx/sites-enabled/default). Чтобы проверить, что открытый файл является конфигурацией вашего сайта, найдите в нем строку server_name. Ее значение должно соответствовать домену, для которого вы устанавливаете SSL сертификат (напр. www.mydomain.ru)

Внимание для CentOS: если на сервере не установлен редактор nano, используйте такую команду для его установки:

используйте такую команду для его установки:

yum install nano

Затем добавьте приведенные ниже параметры в открытый файл конфигурации:

listen 443 ssl;

ssl_certificate /etc/ssl/mydomain.crt;


ssl_certificate_key /etc/ssl/private.key;

Здесь:

/etc/ssl/mydomain.crt – путь до файла сертификатов вашего сайта и центра сертификации

/etc/ssl/private.key – путь к файлу вашего закрытого ключа

Внимание: если вы хотите, чтобы после установки SSL сертификата ваш сайт был доступен только по безопасному протоколу https (порт 443), отредактируйте файл его конфигурации по аналогии с Примером 1. Если же нужно, чтобы сайт также оставался по-прежнему доступен по незащищенному протоколу http (порт 80) – см. Пример 2

(изменения выделены жирным шрифтом).

Пример 1 (только HTTPS):

server {

       listen 443 ssl default_server;


        root /var/www/html;


        # Add index.php to the list if you are using PHP


        index index.html index.htm index.nginx-debian.html;

server_name www.mydomain.ru;

        ssl_certificate /etc/ssl/mydomain.crt;


        ssl_certificate_key /etc/ssl/private.key;


        location / {


                # First attempt to serve request as file, then


                # as directory, then fall back to displaying a 404.


                try_files $uri $uri/ =404;


        }


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000


        #


        #location ~ .php$ {


        #       include snippets/fastcgi-php.conf;


        #


        #       # With php7.0-cgi alone:


        #       fastcgi_pass 127.0.0.1:9000;


        #       # With php7.0-fpm:


      #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;


        #}


        # deny access to .htaccess files, if Apache’s document root


        # concurs with nginx’s one


        #


        #location ~ /.ht {


        #       deny all;


        #}

Пример 2 (HTTPS HTTP):

server {

        listen 80 default_server;


        listen [::]:80 default_server;


        listen 443 ssl;


        # Note: You should disable gzip for SSL traffic.


        # See:
https://bugs.debian.org/773332

        #


        # Read up on ssl_ciphers to ensure a secure configuration.


        # See:
https://bugs.debian.org/765782

        #


        # Self signed certs generated by the ssl cert package


        # Don’t use them in a production server!


        #


        # include snippets/snakeoil.conf;


        root /var/www/html;


        # Add index.php to the list if you are using PHP


        index index.html index.htm index.nginx-debian.html;


        server_name
www.mydomain.ru;

        ssl_certificate /etc/ssl/mydomain.crt;


        ssl_certificate_key /etc/ssl/private.key;


        location / {


                # First attempt to serve request as file, then


                # as directory, then fall back to displaying a 404.


                try_files $uri $uri/ =404;


        }


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000


        #


        #location ~ .php$ {


        #       include snippets/fastcgi-php.conf;


        #


        #       # With php7.0-cgi alone:


        #       fastcgi_pass 127.0.0.1:9000;


        #       # With php7.0-fpm:


      #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;


        #}


        # deny access to .htaccess files, if Apache’s document root


        # concurs with nginx’s one


        #


        #location ~ /.ht {


        #       deny all;


        #}


}

Перезапустите сервис nginx:

Ubuntu/Debian:

/etc/init.d/nginx restart

CentOS:

service nginx restart

Если на сервере настроен файрвол iptables, нужно разрешить входящие подключения по протоколу https (порт 443) для вашего файрвола. Следуйте документации к вашей ОС, т.к. в разных дистрибутивах Linux работа с iptables осуществляется различно. Несколько примеров:

Ubuntu 16.04:

ufw allow 443/tcp

После этого SSL сертификат установлен на веб-сервер Apache. Чтобы проверить правильность настроек, откройте ваш-веб сайт в браузере по протоколу https (например, https://mydomain.ru). При верной установке сертификата в адресной строке вашего браузера появится иконка замка, при клике на нее отразится информация о приобретенном вами SSL сертификате.

Подпись ssl сертификата linux в доменном центре сертификации

Копируем содержимое csr файла в буфер, затем идем на веб сайт доменного центра сертификации.

Первый шаг подписи сертификата доменным центром сертификации
Кликаем ссылку запрос сертификата

В поле шаблон сертификата выбираем Веб-сервер и кликаем по кнопке «Выдать».

Скачивание ssl сертификата с сайта доменного центра сертификации
Переключаем формат сертификата в Base64

Кликаем по ссылке «Загрузить сертификат» и сохраняем файл сертификата. После этого его можно загрузить на сервер и настроить на использование вебсервером.

Поскольку доменный центр сертификации по умолчанию распространяет свой корневой сертификат на все машины в домене Active Directory, либо вы сделали это с помощью GPO, то все подписанные им сертификаты на машинах в домене будут валидными. Таким образом и SSL сертификат в Linux подписанный доменным центром сертификации прикрученный к внутрикорпоративному веб-серверу тоже не вызовет ошибок в браузере на рабочей машине пользователя.

Про сертификаты:  Установка сертификата SSL на Ubuntu с Apache • Vertex Academy

Данная инструкция пригодится при выпуске сертификата например для установки на Proxmox Mail Gateway или любой другой веб-сервер.

Работа с электронной подписью (эцп) в linux (debian / ubuntu)

Электронно-цифровая подпись (ЭЦП) давно уже стала неотъемлемой частью нашей жизни, позволяя удаленно взаимодействовать с органами власти, сдавать отчетность, участвовать в системах электронного документооборота (ЭДО). Все это стало особенно актуально в последнее время, когда сложная эпидемиологическая обстановка внесла серьезные коррективы в рабочий процесс, сделав упор на дистанционные технологии.

Начнем с того, что в техническом плане представляет электронно-цифровая подпись, а говоря об ЭДО и взаимодействии с государственными органами под этим термином мы будем иметь ввиду усиленную квалифицированную электронную подпись, которая выдается аккредитованным удостоверяющим центром и приравнивается к «живой» подписи.

ЭЦП состоит из двух частей: закрытого и открытого ключей. Закрытый ключ (часто просто «ключ») является секретным, его утрата ведет к полной компрометации подписи, так как завладевшее им лицо имеет возможность подписывать любые документы от имени владельца ЭЦП.

Среди обычных пользователей ЭЦП называется «сертификатом», но если вы являетесь специалистом, то должны различать и понимать разницу между составляющими частями ЭЦП и не путать закрытый и открытый ключ (сертификат). Сертификаты хранятся в системном хранилище ОС, а вот для хранения закрытых ключей есть варианты:

  • Токен — аппаратное устройство для хранения ключей, чаще всего без возможности их экспорта, является наиболее безопасным способом хранения, угрозу представляет только физическая утеря ключа.
  • Съемный носитель — обычно флеш-карта на которой расположен контейнер закрытого ключа, менее безопасный способ, так как ключ может быть легко скопирован физически.
  • Реестр или жесткий диск — самый небезопасный способ, но в тоже время самый удобный, особенно когда нужно работать с большим количеством ЭЦП, вполне приемлем на доверенных устройствах, но требует более серьезного подхода в разграничении прав доступа.

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

Второй вопрос — браузеры. Так повелось, что основная разработка средств электронной подписи ориентируется на браузеры на основе WebKit, поэтому мы рекомендуем использовать для работы Google Chrome, для используемого по умолчанию Firefox мы так и не смогли нормально настроить работу с отечественной криптографией.

На этом, пожалуй, закончим вводную часть и перейдем к практическим примерам.

Создание и проверка эцп в gost-crypto-gui[править]

gost-crypto-gui — средство для создания электронной подписи и шифрования файлов.

Установить пакет gost-crypto-gui из репозитория можно, выполнив команду:

Запустить программу можно:

С её помощью можно подписывать и проверять подписи файлов:

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

  1. Нажать кнопку «Подписать файл(ы)».
  2. Выбрать файл, который необходимо подписать.
  3. Выбрать сертификат и нажать кнопку «Далее»:
    Выбор сертификата
  4. Ввести пароль на контейнер (если он был установлен):
    Пароль на контейнер
  5. Появится сообщение о подписанном файле:
    Информация о подписанном файле

Опции ЭП настраиваются в меню «Опции» (параметр «Отсоединенная подпись» не работает???):

Для проверки электронной подписи следует:

  1. Нажать кнопку «Проверить подпись».
  2. Выбрать подписанный файл.
  3. Появится информация о сертификате подписи:
    Проверка электронной подписи

Создание контейнера[править]

Примечание: Для того, чтобы сертификат из контейнера можно было использовать через модуль pkcs11 (из пакета lsb-cprocsp-pkcs11) в браузере firefox-gost, необходимо создать его с -provtype 75 (поддержка ГОСТ-2001).

Внимание! C 1 января 2021 г. по указанию ФСБ РФ и Минкомсвязи всем аккредитованным УЦ запрещен выпуск сертификатов ЭП по ГОСТ 2001.
Ключи и запрос на сертификат необходимо формировать ГОСТ 2021.

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

При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши:

Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.

После этого будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет):

После указания пароля снова будет предложено перемещать указатель мыши.

Вывод команды:

CSP (Type:75) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 6679219
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP
Container name: "test"
Signature key is not available.
Attempting to create a signature key...
a signature key created.
Exchange key is not available.
Attempting to create an exchange key...
an exchange key created.
Keys in container:
  signature key
  exchange key
Extensions:
  OID: 1.2.643.2.2.37.3.9

  OID: 1.2.643.2.2.37.3.10
Total: SYS: 0,030 sec USR: 0,160 sec UTC: 22,910 sec
[ErrorCode: 0x00000000]

Локальный контейнер создан.

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

Откроется окно выбора носителя и способа создания контейнера. Для некоторых носителей нет возможности выбрать способ создания контейнера (Рутокен S, JaCarta PKI):

Для некоторых носителей можно выбрать способ создания контейнера (Рутокен ЭЦП, JaCarta-2 PKI/ГОСТ).
Создание неизвлекаемого контейнера:
Создание неизвлекаемого контейнера
Создание обычного контейнера:
Создание обычного контейнера

Установка криптопро csp[править]

Архив с программным обеспечением (КриптоПро CSP 4.0 R4 — сертифицированная версия, КриптоПро CSP 5.0 — несертифицированная) можно загрузить после предварительной регистрации:

  • linux-ia32.tgz (19,3 МБ, для i586) — для 32-разрядных систем (x86, rpm);
  • linux-amd64.tgz (20,1 МБ, для x86_64) — для 64-разрядных систем (x64, rpm).

Внимание! По умолчанию при скачивании с сайта КриптоПро выдаётся лицензия на три месяца

1. Установите пакет cryptopro-preinstall:

Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП).

Примечание: Пакет cryptopro-preinstall вытягивает зависимости libpangox-compat, opensc, pcsc-lite, pcsc-lite-rutokens, pcsc-lite-ccid, newt52.

2. Распакуйте архив, скачанный с официального сайта КриптоПро:

Таблица 1. Описание необходимых пакетов КриптоПро.

3. Установите пакеты КриптоПро:

Примечание: Для 32-битной версии вместо последнего пакета — lsb-cprocsp-rdr-4*

Примечание: Если возникнут проблемы с отображением контейнеров на Рутокен S — удалите pcsc-lite-openct

Примечание: Для установки cprocsp-rdr-jacarta может понадобиться предварительно удалить openct.

Также можно выполнить установку КриптоПро, запустив ./install_gui.sh в распакованном каталоге и выбрав необходимые модули:

Установка пакетов КриптоПроПримечания:

Внимание! Пакеты КриптоПро после обновления утрачивают работоспособность, так что рекомендуется удалить все пакеты и установить их заново.

Для обновления КриптоПро необходимо:

  1. Запомнить текущую конфигурацию:
  2. Удалить штатными средствами ОС все пакеты КриптоПро:
  3. Установить аналогичные новые пакеты КриптоПро.
  4. При необходимости внести изменения в настройки (можно просмотреть diff старого и нового /etc/opt/cprocsp/config[64].ini).
  5. Ключи и сертификаты сохраняются автоматически.
Оцените статью
Мой сертификат
Добавить комментарий