Настройка stunnel криптопро linux
Программа Stunnel предназначена для развертывания шифрования SSL между удаленным клиентом и локальным или удаленным сервером. Stunnel добавляет функциональность SSL к наиболее часто используемым демонам Inetd (например, POP2, POP3) и IMAP-серверам без каких-либо изменений в коде программы.
Stunnel превращает любой небезопасный TCP-порт в зашифрованный с помощью криптографического пакета OpenSSL. Это похоже на небольшую безопасную VPN, которая работает на определенных портах.
Примечание: данное руководство было протестировано на виртуальных выделенных серверах Ubuntu 12.04, Ubuntu 12.10, Ubuntu 13.04.
1: Подготовка системы
При помощи нижеприведенных команд обновите список пакетов и сами пакеты:
apt-get update
apt-get upgrade
2: Установка Stunnel
Программу Stunnel можно установить при помощи стандартного менеджера пакетов:
apt-get install stunnel4 -y
3: Настройка Stunnel
Настройки Stunnel хранятся в файле stunnel.conf, который по умолчанию находится в /etc/stunnel. Чтобы создать этот файл, используйте:
Чтобы идентифицировать себя на сервере, нужно использовать сертификат SSL; для этого необходимо задать путь к этому сертификату в файле stunnel.conf Используйте следующую строку (сам файл сертификата будет создан далее):
Затем нужно указать сервис для взаимодействия с Stunnel. Это может быть любой сервис, который использует сеть (почтовый сервер, прокси-сервер и т.д.).
В данном руководстве для примера будет показано, как защитить трафик между прокси-сервером Squid и клиентом, использующим Stunnel. Инструкции по установке Squid можно найти в разделе 6.
Указав название сервиса, взаимодействующего с Stunnel, нужно указать Stunnel, на каком порте нужно прослушивать данный сервис. Это может быть любой из 65535 портов, если только он не заблокирован другим сервисом или фаерволом.
[squid] accept = 8888
Далее нужно указать в конфигурационном файле порт и IP-адрес сервиса, для которого создается безопасный туннель. В основном Stunnel принимает пакеты от безопасного порта, а затем пересылает их на порт и IP-адрес указанного сервиса.
По умолчанию Squid-прокси запускается на локальном хосте и использует порт 3128; следовательно, чтобы программа Stunnel могла принимать соединения с этим сервисом, в данном случае в конфигурационный файл нужно внести следующую строку:
В целом конфигурационный файл stunnel.conf должен иметь такой вид:
client = no
[squid] accept = 8888
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem
Примечание: параметр client = no не является обязательным, поскольку Stunnel по умолчанию работает в режиме сервера.
4: Создание SSL-сертификата
Stunnel использует сертификат SSL для защиты соединений. Такой сертификат можно легко создать с помощью пакета OpenSSL:
openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem
Вышеприведенные команды генерируют закрытый ключ, создают сертификат при помощи этого ключа, а затем объединяют эти файлы в один файл по имени stunnel.pem, который и будет использовать Stunnel.
Примечание: при создании сертификата нужно указать некоторую информацию; обратите внимание на поле Common Name – в нем нужно указать имя хоста или IP-адрес сервера.
Затем настройте автоматический запуск Stunnel. Для этого откройте файл /etc/default/stunnel4 в текстовом редакторе:
и измените значение параметра ENABLED на 1:
В завершение перезапустите Stunnel, чтобы обновить настройки.
5: Установка прокси-сервера Squid
Чтобы установить Squid, используйте:
apt-get install squid3 -y
6: Настройка Stunnel как клиента
Примечание: данный раздел демонстрирует установку и настройку Stunnel в качестве клиента в Windows, но настройки и инструкции по установке программы в Linux или даже Android останутся такими же. Единственное отличие – местонахождение конфигурационного файла stunnel.conf.
Для того, чтобы Stunnel мог взаимодействовать с сервером, сертификат SSL (см. раздел 4) должен находиться на клиенте. Существует множество способов перемещение файла stunnel.pem с сервера, но в данном случае для этого используется протокол SFTP – одновременно достаточно простой и безопасный.
При помощи SFTP-клиента (например, Filezilla) подключитесь к серверу и загрузите файл stunnel.pem из каталога /etc/stunnel/ на клиент.
Примечание: чтобы получить больше информации о работе SFTP, читайте руководство «Использование SFTP для безопасного обмена файлами с удаленным сервером».
Скачайте Stunnel с сайта проекта.
Установите Stunnel в любой удобной точке системы. Затем перейдите в папку Stunnel и переместите в нее файл сертификата stunnel.pem.
Создайте в папке Stunnel файл stunnel.conf (если такого файла еще нет). Откройте файл при помощи текстового редактора (например, Notepad).
Для начала нужно указать путь к сертификату, который в Windows находится в каталоге Stunnel.
Примечание: в Ubuntu этот файл находится в каталоге /etc/stunnel/.
В данном случае нужно перевести Stunnel в режим клиента. Поместите следующую строку в файл:
Далее нужно указать конфигурации сервиса, который нужно использовать.
Сначала укажите имя сервиса, затем его IP и порт, который должна прослушивать программа Stunnel на клиенте.
[squid] accept = 127.0.0.1:8080
Для этого подойдет любой порт на клиентском компьютере, если он не занят другим сервисом и не блокируется брандмауэром.
Затем нужно настроить Stunnel для передачи пакетов, поступающих на данный порт, серверу Stunnel; для этого укажите IP-адрес виртуального сервера и порт, заданный при настройке сервера Stunnel (в данном случае это порт 8888):
connect = [внешний IP-адрес]:8888
В итоге файл stunnel.conf будет иметь такой вид:
cert = stunnel.pem
client = yes
[squid] accept = 127.0.0.1:8080
connect = [Server’s Public IP]:8888
Сохраните и закройте файл.
Готово! Взаимодействие клиента и сервера надежно защищено SSL-туннелем. Теперь для подключения к любому сервису VPS нужно вводить не только IP, но также и порт, заданный в параметре accept конфигурационного файла Stunnel.
Например, чтобы подключиться к прокси-серверу Squid на облачном сервере, нужно указать 127.0.0.1:8080, и Stunnel автоматически подключится к сервису, запущенному на указанном порте. Чтобы защитить трафик, настройте браузер использовать порт 8080 в качестве прокси.
Обеспечение безопасности при помощи средств криптографической защиты информации (СКЗИ) — не очень сложная задача, если все технологические участки находятся на хост-машине. Однако для того чтобы передавать и шифровать информацию одновременно, необходимо построить грамотный технологический процесс программного обеспечения. Мы расскажем, как это сделать.
Введение
Для любого системного администратора или DevOps построить VPN или «пробросить» нестандартный метод инкапсуляции пакетов (туннелирование) — не очень сложная задача. Часто для этого применяют OpenVPN, если планируется постоянное использование, либо SSH-туннелирование, если защищённое соединение нужно на один-два раза. Однако есть предприятия и ведомства, которые должны соблюдать строгие условия передачи данных, установленные законодательством. Под такие требования подпадают, например, многие структуры, которые так или иначе имеют отношение к денежным операциям: банки, микрофинансовые организации и т.п. Персональные данные тоже являются «защищаемой информацией» во всех законах и положениях.
В результате оказывается, что при шифровании необходимо использовать СКЗИ со всеми необходимыми сертификатами и лицензиями, соответствующие нормативным требованиям. Одним из примеров таких программных средств является «КриптоПро CSP». В данной статье мы будем разбирать задачу о том, как «прокинуть» средствами stunnel сетевой туннель, который будет шифроваться «КриптоПро CSP», заодно получив хоть и тестовый (на 3 месяца), но полностью валидный сертификат по ГОСТ Р 34.10-2012.
Задача
Для начала необходимо разобраться в том, как всё описанное будет работать, и поставить конкретные задачи.
К примеру, есть две машины. Для демонстрации настройки двух операционных систем одна из них будет работать под управлением ОС семейства Linux (Ubuntu, версия не важна, но желательно — не ниже 16), вторая — под Windows 10. На win-системе будет запускаться Netcat на прослушивание какого-то определённого порта, а с nix-системы будут передаваться пакеты. Таким образом, Windows-машина будет сервером (в том числе — в отношении настроек stunnel).
Что должно получиться в итоге? При подключении с Linux к Windows через программу Netcat все пакеты будут шифроваться сертификатом GOST_2012 и сертифицированным программным обеспечением. Задача тривиальна и ставится для того, чтобы показать возможность такого манёвра. Поскольку stunnel передаёт любой протокол внутри себя, можно, к примеру, подписывать XML-файлы секретной подписью другой организации или передавать персональные данные в хранилище через интернет.
Тестовый стенд
Linux
Работает stunnel следующим образом: при запуске на локальной машине открывается определённый порт, указанный в конфигурационном файле, и в тот же момент приложение соединяется со своей копией на другой машине. Таким образом все пакеты, попавшие на порт localhost, шифруются, затем проксируются на другую систему и там расшифровываются. Удобство схемы состоит в том, что это — просто шлюз, которому неважно, какой протокол шифровать и передавать.
Рисунок 1. Схема работы stunnel
Изначально загружаем необходимый продукт «КриптоПро» отсюда. В скачанном архиве будет примерно такой набор файлов, как на скриншоте.
Рисунок 2. «КриптоПро CSP» на Linux
Для установки необходимо запустить install.sh. Этот скрипт добавит нужные компоненты: certmgr, cpverify, cryptcp, csptest, csptestf, curl, der2xer, genkpim, inittst, wipefile. У каждой из этих программ — своя зона ответственности, свои ключи и задачи. Для нашего сценария нужны будут только certmgr и cryptcp.
Бинарные файлы попадают в /opt/cprocsp/bin/, а не в /bin, поэтому запустить их просто командой не удастся. Необходимо либо выполнить запуск напрямую оттуда, либо сделать символьные ссылки. Не стоит только создавать ссылку с помощью curl, так как работает он «криво»: не видит список удостоверяющих центров из операционной системы и, как следствие, завершает любой запрос с ошибкой, из-за чего приходится использовать ключ -k, который отменяет проверку сертификата на валидность.
Сама по себе stunnel шифрует трафик с помощью OpenSSL, но в компании «КриптоПро» её переписали под свои нужды, так что теперь она использует утилиты для un- и de- шифрования и называется stunnel-msspi. Поставляется она в архиве вместе с CSP; также её можно скачать отдельно. Для старых версий «КриптоПро CSP» есть вероятность, что программа уже установлена, но это необходимо проверить.
Как было сказано выше, для stunnel Linux-система будет клиентом, а Windows — сервером. IP-адреса: Linux – 172.22.1.65, Windows – 172.22.1.121.
Следующий шаг — ключи и сертификаты. Для сервера нам необходимо и то, и другое, причём все это — в контейнере «КриптоПро». Для клиента требуется только сертификат, нужный для того, чтобы к туннелю не мог подключиться любой желающий. Забегая немного вперёд, отметим, что в конфигурационном файле stunnel есть опция verify, и вот её параметры:
0. Не проверять сертификат сервера
1. Проверять сертификат при его наличии
2. Проверять сертификат всегда
3. Проверять наличие данного сертификата в хранилище TrustedUsers
Начиная с параметра 1, собственно, и нужен сертификат клиента для защиты подключения.
Итак, чтобы сгенерировать контейнер для сервера, необходимо воспользоваться утилитой cryptcp:
Интересные моменты относительно ключей:
- provtype — указывает тип криптопровайдера. По умолчанию подставляется 75. Значение этих цифр можно узнать так: в каталоге /opt/cprocsp/sbin/amd64 лежит программа cpconfig, нужно запустить её с ключами -defprov -view_type.
Рисунок 3. Вывод программы cpconfig
На скриншоте выше видно, что значение 75 устарело и соответствует ГОСТу версии 2001. ГОСТ версии 2012 на 256 и 512 бит задаётся значениями 80 и 81 соответственно.
- certusage — идентификатор назначения. Для выполнения задачи необходимы два модуля: проверка подлинности клиента (1.3.6.1.5.5.7.3.2) и проверка подлинности сервера (1.3.6.1.5.5.7.3.1).
- hashAlg — алгоритм, который будет применяться при шифровании. Список вариантов можно найти здесь.
- ca — центр сертификации, который подпишет всё содержимое, чтобы оно было валидным. Важно, что сертификаты и ключи будут действовать только в течение 3 месяцев (точнее, данный конкретный УЦ, который указан в команде, выдаёт их именно на этот срок).
- cont — контейнер, который будет создан; в нём сохранятся файлы. Если контейнер с таким именем уже есть, то, естественно, команда не отработает. Проверить можно командой certmgr -list; в её выводе отобразится исчерпывающая информация о контейнерах системы и пользователя.
Выше описаны самые «пикантные» моменты, которые могут отнять много времени. Остальные ключи и другие пояснения можно найти в документации.
Переходим к генерации сертификата для клиента. Команда аналогична, меняется только имя контейнера и идентификатор назначения сертификата.
Теперь с ключами и сертификатами всё готово. На всякий случай приведём команду экспорта из контейнера:
certmgr -export -provtype 81 -dest /куда экспортировать сертификат/имя сертификата -cont "\\\\.\\HDIMAGE\\имя контейнера"
Таким образом можно получить «на руки» сертификат в формате DER.
Далее нужно приниматься за настройку stunnel, а именно — его конфигурационного файла. Создаём в удобном месте файл stunnel.conf. Содержимое будет следующим:
Прокомментируем содержание секции TestStunnel:
- Client — указатель на то, является ли программа сервером или клиентом;
- Accept — локальный порт, к которому будет подключаться программа;
- Connect — IP-адрес и порт сервера, с которым мы будем соединяться;
- Verify — параметр, который мы уже описывали выше;
- Cert — клиентский сертификат. На этом пункте необходимо задержаться.
Можно указать параметр двумя способами: либо импортировать сертификат из контейнера и прописать путь к файлу, либо воспользоваться отпечатком сертификата. Извлечь отпечаток можно всё той же командой certmgr -list. Идентификатор указан как SHA1 Hash.
Рисунок 4. Отпечаток в Linux
На этом настройка Linux закончена, можно запускать stunnel с указанием соответствующего файла конфигурации stunnel.conf.
Windows
После установки «КриптоПро CSP» необходимо скопировать контейнер с серверным ключом и сертификатом с nix-машины.
Все контейнеры попадают в /var/opt/cprocsp/keys/username и состоят из 6 файлов с расширением .key. Копируем все, хотя здесь будет небольшая проблема с импортом. «КриптоПро CSP» считает, что хранить контейнер на жёстком диске небезопасно, и поэтому необходим токен. Указанное препятствие можно обойти создав эмулятор контейнера.
Для этого необходимо скачать и установить ImDisk. Затем при помощи ImDisk Virtual Disk Driver следует создать эмулятор токена (именно так его и увидит CSP, по-русски это — просто контейнер HDD) и подключить его к системе.
Рисунок 5. Псевдотокен
В итоге рядом с жёстким диском должен появиться ещё один носитель — это и есть токен. Туда понадобится скопировать папку с контейнером. После этих манипуляций сертификат нормально установится в «КриптоПро CSP».
Дополнительно стоит скопировать клиентский сертификат на сервер и тоже его установить.
Конфигурационный файл для stunnel-msspi:
Здесь всё устроено по аналогии с конфигурационным файлом клиента: accept — порт, к которому подключается клиентская копия stunnel (должен быть разблокирован в брандмауэре и «проброшен» во все места до наружного выхода), connect — порт для приложения (в данном случае — Netcat).
Повторяется история и в отношении сертификата: либо импорт из контейнера, что совсем не рекомендуется, либо указание отпечатка. Отпечаток можно найти в составе сертификата.
Рисунок 6. Отпечаток сертификата в Windows
Журнал для отладки можно будет отключить тогда, когда всё будет настроено как часы.
Теперь пора скачать Netcat для Windows.
Следующий шаг — запустить сервер stunnel, заодно перезапустив и клиент. Для отладки и тестирования в Windows лучше делать это из командной строки.
В командной строке сервера побежит протокол, который расскажет, что кто-то успешно подключился. Пишем в одном окне набор символов; он появляется в другом окне. Всё настроено верно.
Рисунок 7. Результат
Выводы
В статье мы разобрали задачу о том, как получить криптотуннель с валидным ключом, подписанным самим «КриптоПро», и с алгоритмом шифрования GOST_2012, 512 бит. Сделано это с минимальными затратами — две лицензии на «КриптоПро CSP».
Можно, конечно, написать что-то своё, но лицензии JСP, к примеру, стоят намного больше. Готовые решения тоже будут значительно дороже.
Stunnel это программная обертка, позволяющая спрятать в шифрованный ssl-туннель произвольный трафик.
Важно! stunnel создает и поддерживает туннель как TCP соединение и передавать может только tcp-трафик. на клиенте: слушает порт на локальном хосте клиента и передает информацию (шифруя) на определенный порт удаленного сервера, на сервере: слушает порт на внешнем адресе и передает информацию (расшифровывая) на определенный порт локального хоста сервера.При этом клиент свой запрос отправляет не на удаленный сервер, а на тот самый порт localhost-а, на котором слушает stunnel. Сервер же слушает (ждет запроса клиента) не на внешнем порту, а на локальном порту на который транслирует передачу stunnel. Посмотрите на схему (чтобы было понятнее):
Порты s1_port и s2_port - служебные порты stunnel и могут быть выбраны произвольно (как правило s2_port выбирается таким, что бы соединение на него не блокировалось файерволами). С s1_port - никаких ограничений нет т.к. трафик фактически и не покидает клиентского компьютера (передача идет внутри стека TCP/IP протокола). Точно так же и service_port (порт приложения сервера) на сервере можно изменить со стандартного на произвольный (если нужно).
Если возникает вопрос «как же осуществляется обратный трафик?» то нужно понимать, что каждое клиентское приложение в каждом TCP-подключении открывает для передачи произвольный порт (из тех что имеют большие номера, например 50000+) и именно на этот порт stunnel возвращает расшифрованные данные клиента. На клиенте stunnel открывает для передачи на удаленный сервер еще один порт и между ним и портом s2_port собственно и устанавливается шифрованный канал. На сервере же, stunnel выступает в роли клиента и сам открывает произвольный порт (из старших номеров) для получения обратного трафика от приложения-сервера (который он шифрует перед отправкой на клиентский компьютер).
Все эти обратные порты открываются только для связи с другим портом (netstat такие порты отмечает статусом ESTABLISHED) и они не являются слушающими (LISTEN статус в выводе netstat) соединение (исходящие) от такого порта файерволом не блокируется.
И так, с механизмом встраивания stunnel в работу клиент-серверного приложения мы разобрались. Посмотрим теперь как он устанавливается и настраивается.
Установка Stunnel
Несмотря на то что настройки stunnel для сервера и клиента различаются, но устанавливается он и на сервер и на клиент одинаково:
Настройка Stunnel
Настройка Stunnel на сервере
stunnel использует все файлы с расширением .conf, которые находит в каталоге /etc/stunnel как конфигурационные. В каждом файле могут быть описаны как и общие параметры настройки так и настройки для отдельных сервисов, причем в одном файле можно описать несколько сервисов.
Создадим новый конфигурационный файл:
В нем нам нужно указать настройки самого stunell:
В принципе, этого вполне достаточно.
Дополнительно можно указать сжатие: бывает полезно кроме шифрования еще и сжать трафик, но это не обязательно если оригинальный трафик и так уже сжат.
Можно еще указать путь куда будут записываться логи сервиса stunnel
Теперь опишем наш сервис по следующему:
В этом шаблоне нужно будет указать реальные порты приложения сервера (<service_port>) и порт на котором будет принимать соединения stunnel для этого сервиса (<s2_port>). Имя хоста или внешний IP адрес сервера (<ex.t.ser.ver>) можно и не указывать (пропустить), тогда stunnel будет слушать этот порт на всех адресах сервера. Пример для сервиса telnet будет выглядеть примерно так (stunnel будет ждать установки соединения с клиентской стороны на порту 8023)
stunnel имеет достаточно большое количество настроек - все их мы не будем перечислять. О них можно узнать из манула на stunnel
Созданный файл конфигурации закрываем и сохраняем.
Кроме настройки конфигурационных файлов, нужно еще разрешить запуск stunnel. Для этого в файле /etc/default/stunnel нужно заменить
Теперь создадим сертификат:
Созданный сертификат нужно также передать (по защищенным каналам) на клиентскую машину.
Настроенный stunnel запускаем:
Настройка Stunnel на клиенте
Настройка на клиентской машине не сильно отличается от настройки на серверной машине.
Общие настройки (минимальный вариант):
И настройки сервиса по шаблону:
Для telnet такая конфигурация будет выглядеть так:
где aa.bb.cc.dd - IP адрес или DNS -имя внешнего сервера.
Настроенный stunnel разрешаем (так же как и на сервере, редактируя /etc/default/stunnel) и запускаем:
Команда telnet соединения с внешним сервером по ssl-туннелированному протоколу будет выглядеть так:
Соединиться по нешифрованному каналу с telnet сервером можно было бы командой
Но этого делать не стоит, и особенно не стоит telnet сервис выставлять в интернет (крайне вероятно что ваш сервер очень скоро взломают хакеры).
На самом деле, пример с telnet - исключительно умозрительный и надуманный (хотя и может применяться для отладки, но с соблюдением мер предосторожности), для удаленного логина в консоль сервера гораздо проще использовать ssh (там уже есть встроенное шифрование).Особенности настроек приложений при работе через stunnel
Нужно понимать, что указание в строке подключения клиента localhost вместо IP адреса или имени сервера может оказать влияние на работу сервиса.
заменяем на соединение с localhost:
Но это приведет к тому, что в маршрутизацию клиента (ip route), при установлении соединения с OpenVPN сервером, будет записан маршрут не на внешний сервер, а на localhost (ведь соединение было с localhost, а не с удаленным сервером), что приведет к практически полной неработоспособности сети на клиенте (из за возникшего цикла в правилах маршрутизации).
По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро:
- КриптоПро CSP
- КриптоПро JCP
- КриптоПро HSM
- КриптоПро TSP
- КриптоПро OCSP
- КриптоПро ЭЦП Browser plug-in
- КриптоПро SSF
- КриптоПро Stunnel
- Браузер КриптоПро Fox
Архив с программным обеспечением (КриптоПро CSP 4.0 R4 — сертифицированная версия, КриптоПро CSP 5.0 — несертифицированная) можно загрузить после предварительной регистрации:
1. Установите пакет cryptopro-preinstall :
Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП). Примечание: Пакет cryptopro-preinstall вытягивает зависимости libpangox-compat , opensc , pcsc-lite , pcsc-lite-rutokens , pcsc-lite-ccid , newt52 .
2. Распакуйте архив, скачанный с официального сайта КриптоПро:
Таблица 1. Описание необходимых пакетов КриптоПро.
Пакет | Описание |
---|---|
Базовые пакеты: | |
cprocsp-curl | Библиотека libcurl с реализацией шифрования по ГОСТ |
lsb-cprocsp-base | Основной пакет КриптоПро CSP |
lsb-cprocsp-capilite | Интерфейс CAPILite и утилиты |
lsb-cprocsp-kc1 | Провайдер криптографической службы KC1 |
lsb-cprocsp-kc2 | Провайдер криптографической службы KC2 (требует наличия аппаратного датчика случайных чисел или гаммы) |
lsb-cprocsp-rdr | Поддержка ридеров и RNG |
Дополнительные пакеты: | |
cprocsp-cptools-gtk | Инструменты КриптоПро - кроссплатформенный графический интерфейс |
cprocsp-rdr-gui-gtk | Графический интерфейс для диалоговых операций |
cprocsp-rdr-rutoken | Поддержка карт Рутокен |
cprocsp-rdr-jacarta | Поддержка карт JaCarta |
cprocsp-rdr-pcsc | Компоненты PC/SC для ридеров КриптоПро CSP |
lsb-cprocsp-pkcs11 | Поддержка PKCS11 |
ifd-rutokens | Конфигурация Рутокеновских карт (или можно взять pcsc-lite-rutokens из репозитория) |
3. Установите пакеты КриптоПро:
-
под правами пользователя root перейдите в папку с распакованным архивом:
- установите пакеты для поддержки токенов (Рутокен S и Рутокен ЭЦП):
- установите пакет для поддержки токенов (JaCarta):
- Для установки сертификатов Главного удостоверяющего центра:
Также можно выполнить установку КриптоПро, запустив ./install_gui.sh в распакованном каталоге и выбрав необходимые модули:
Примечания:
- Для КриптоПро CSP 3.6 R2 потребуется установить пакет cprocsp-compat-altlinux-1.0.0-1.noarch.rpm
- Для установки cprocsp-rdr-gui может понадобиться libXm.so.3 ( libopenmotif3 ) и для вывода кириллицы fonts-bitmap-cyr_rfx-iso8859-5 .
- Для установки cprocsp-rdr-gui-gtk потребуется предварительно установить libpangox-compat .
- В версии 4.0.0-alt5 пакета cryptopro-preinstall добавлены подпакеты:
- cryptopro-preinstall-base для установки с cprocsp-compat-altlinux , «предоставляющим» lsb (в случае нежелательности «лишних» зависимостей вроде libqt3 ), и
- cryptopro-preinstall-full для автоустановки зависимостей cprocsp-rdr-gui .
Для обновления КриптоПро необходимо:
-
Запомнить текущую конфигурацию:
набор установленных пакетов:
Утилиты КриптоПро расположены в директориях /opt/cprocsp/sbin/<название_архитектуры> и /opt/cprocsp/bin/<название_архитектуры> .
Чтобы каждый раз не вводить полный путь к утилитам КриптоПро:
- после установки пакета cryptopro-preinstall начните новый сеанс пользователя в консоли;
- выполните от имени пользователя, который будет запускать команды (будет действовать до закрытия терминала):
Проверить срок истечения лицензии можно командой (обратите внимание на строки Expires:):
Примечание: Для версии КриптоПро CSP под Linux все лицензии считаются серверными, поэтому не смущайтесь строкой «License type: Server».
Для установки другой лицензии выполните (под root):Проверить версию КриптоПро можно командой:
Настройка устройств хранения (носителей) и считывания (считывателей) ключевой информации и датчиков случайных чисел.
Примечание: Если не работает под обычным пользователем, то проверить правила polkit.Считыватели (readers) — устройства, предназначенные для чтения ключей. К считывателям относится считыватели дискет (FAT12), считыватели флеш-накопителей (FLASH), считыватели смарт-карт и токенов, считыватель образа дискеты на жестком диске (HDIMAGE) и др.
Ключевые носители (media) являются местом хранения электронной подписи. В качестве носителя ключевой информации могут использоваться: защищенный флэш-накопитель (токен) (Рутокен, JaCarta, ESMART и др.), смарт-карта, флэш-накопитель, дискета.
Ключевые контейнеры — это способ хранения закрытых ключей, реализованный в КриптоПро. Их физическое представление зависит от типа ключевого носителя (на флеш-накопителе, дискете, жестком диске это каталог в котором хранится набор файлов с ключевой информацией; в случае со смарт-картами — файлы в защищенной памяти смарт-карты).
Встроенный в «КриптоПро CSP» датчик случайных чисел (далее ДСЧ) используется для генерации ключей.
Для смарт-карт: ключи дополнительно защищаются кодом доступа к защищенной памяти смарт-карты (PIN). При всех операциях с защищенной памятью (чтение, запись, удаление. ) требуется вводить PIN. Для других носителей: для повышения безопасности на контейнер можно установить пароль. В этом случае всё содержимое контейнера хранится не в открытом виде, а в зашифрованном на этом пароле. Пароль задается при создании контейнера, в дальнейшем для чтения ключей из контейнера необходимо будет вводить пароль.
Примечание: Подробнее про работе с разными ключевыми носителями: Рутокен, JaCarta, ESMARTПросмотр доступных (настроенных) считывателей:
Инициализация считывателя HDIMAGE, если его нет в списке доступных считывателей (под правами root):
Считыватель HDIMAGE размещается на /var/opt/cprocsp/keys/<имя пользователя>/ .
Для работы со считывателем PC/SC требуется пакет cprocsp-rdr-pcsc. После подключения считывателя можно просмотреть список видимых считывателей (не зависимо от того, настроены ли они в КриптоПро как считыватели, зависит только от того, какие установлены драйверы для считывателей):
Инициализация считывателя Aktiv Co. Rutoken S 00 00 (требуется, если считыватель есть в списке видимых считывателей и отсутствует в списке настроенных), в параметре -add указывается имя, которое было получено при просмотре видимых считывателей, в параметре -name — удобное для обращения к считывателю имя, например, Rutoken (под правами root):
Современные аппаратные и программно-аппаратные хранилища ключей, такие как Рутокен ЭЦП или eSmart ГОСТ, поддерживаются через интерфейс PCSC. За реализацию этого интерфейса отвечает служба pcscd , которую необходимо запустить перед началом работы с соответствующими устройствами:
Читайте также: