- Введение
- Описание элементов
- Что такое ssl и что такое tls?
- «прослушка» информации о сертификате при помощи openssl
- Continent tls client настройка
- Crl сертификата сервера не загружен или устарел
- Безопасность
- Задача
- Запрос на подпись (csr, certificate sign request)
- Импорт сертификатов
- Инициализация
- Инструкция по установке континент tls vpn клиент 2.0.1440
- Корневой сертификат
- Корневые сертификаты казначейства
- Настройка apache на использование клиентских сертификатов
- Настройка nginx на использование клиентских сертификатов
- Настройка скзи «континент tls vpn клиент» для работы в электронном бюджете
- Проверка подключения
- Просмотр информации о сертификате
- Решение
- Серверный сертификат
- Создание клиентского сертификата
- Установка jinnclient_1.0.3050.0 для подписания документов
- Установка ssl/tls-сертификата на сервер с apache
- Установка ssl/tls-сертификата на сервер с nginx
- Цепочка действий по генерации сертификатов
- Электронный бюджет настройка рабочего места
- Выводы
- Установка extended container
Введение
TLS – криптографический протокол, обеспечивающий защищенную передачу данных между узлами в сети интернет. С ним вы можете ознакомиться
или
Ключевые задачи TLS:
- обеспечить конфиденциальность, то есть реализовать защиту от утечек передаваемой информации;
- обеспечить обнаружение подмены, то есть реализовать сохранение целостности передаваемой информации;
- обеспечить аутентификацию узлов, то есть дать механизм проверки подлинности источника сообщений.
Данный протокол широко используется в приложениях, работающих с сетью интернет, таких как веб-браузеры, электронная почта, обмен мгновенными сообщениями и IP-телефония (VoIP).
Описание элементов
СКЗИ «Континент TLS VPN Клиент» — TLS-клиент представляет собой устанавливаемое на компьютере удаленного пользователя программное обеспечение, функционирующее совместно с TLS-сервером. TLS-клиент предназначен для реализации защищенного доступа удаленных пользователей к веб-ресурсам корпоративной сети по каналам связи общих сетей передачи данных.
Что такое ssl и что такое tls?
SSL — Secure Socket Layer, уровень защищенных сокетов. TLS — Transport Layer Security, безопасность транспортного уровня. SSL является более ранней системой, TLS появился позднее и он основан на спецификации SSL 3.0, разработанной компанией Netscape Communications.
Тем не менее, задача у этих протоколов одна — обеспечение защищенной передачи данных между двумя компьютерами в сети Интернет. Такую передачу используют для различных сайтов, для электронной почты, для обмена сообщениями и много еще для чего. В принципе, можно передавать любую информацию таким образом, об этом чуть ниже.
Безопасная передача обеспечивается при помощи аутентификации и шифрования передаваемой информации. По сути эти протоколы, TLS и SSL, работают одинаково, принципиальных различий нет. TLS, можно сказать, является преемником SSL, хотя они и могут использоваться одновременно, причем даже на одном и том же сервере.
SSL 1.0 — никогда не публиковалсяSSL 2.0 — февраль 1995 годаSSL 3.0 — 1996 годTLS 1.0 — январь 1999 годаTLS 1.1 — апрель 2006 годаTLS 1.2 — август 2008 года
«прослушка» информации о сертификате при помощи openssl
Для проверки взаимодействия сервера с клиентскими сертификатами можно проверить, устанавливается ли соединение с использованием TLS/SSL.
На стороне сервера запускаем прослушку порта при помощи openssl:
openssl s_server -accept 443 -cert server.pem -key server.key -state
На стороне клиента обращаемся к серверу, например, culr’ом:
Continent tls client настройка
Информация обновлена: 16.09.2021
Континент TLS VPN клиент 2.0.1440 необходим для работы с сертификатом электронной подписи ГОСТ Р 34.10-2021. Континент TLS VPN клиент 1.0.920.0 не работает с сертификами ГОСТ 2021.
Данный дистрибутив скачан с сайта производителя и имеет ограничение в работе 14 дней. При регистрации Континента через интернет это ограничение снимается. Приобретать лицензию на СКЗИ «Континент TLS VPN Клиент» не надо. Клиенты казначейства также могут получить данное СКЗИ в местном казначействе.
Континет TLS VPN клиент используется для работы с информационными системами:
Crl сертификата сервера не загружен или устарел
При подключении к Электронному Бюджету появляется ошибка CRL сертификата сервера не загружен или устарел.
Решение:
Безопасность
При использовании SSL/TLS одним из основных методов является метод MITM (Man In The Middle), «человек посередине». Этот метод основывается на использовании серверного сертификата и ключа на каком-то узле, который будет прослушивать трафик и расшифровывать информацию, которой обмениваются сервер и клиент.
Для организации прослушивания можно использовать, например, программу sslsniff. Поэтому корневой сертификат и ключ обычно желательно хранить на машине, которая не подключена к сети, для подписания приносить запросы на подпись на флэшке, подписывать и так же уносить. И, естественно, делать резервные копии.
Задача
В нашем случае необходимо было обеспечить защищенный с помощью ГОСТ-шифрования доступ к веб-ресурсу.
Предъявляемые требования:
Запрос на подпись (csr, certificate sign request)
Для получения подписанного серверного сертификата необходимо сгенерировать запрос на подпись (CSR, Certificate Sign Request) и отправить этот запрос авторизационному центру, который вернет подписанный сертификат, устанавливаемый непосредственно на сервер, чуть ниже посмотрим, как это сделать на практике. Сначала генерируется ключ для шифрования, затем на основании этого ключа генерируется запрос на подпись, CSR-файл.
Импорт сертификатов
Далее необходимо подключиться к серверу TLS по веб-морде, определить защищаемый ресурс и установить сертификаты для работы серверов (корневой сертификат УЦ, сертификат сервера, сертификат для удаленного управления сервером, сертификат администратора и CRL).
Все эти сертификаты должны быть выданы одним УЦ. Для первого подключения по веб-морде нужно использовать КриптоПро CSP, а не «Код Безопасности CSP. При последующих сменах сертификатов, лучше сначала удалить корневой сертификат УЦ, а после менять другие сертификаты.
Из-за невозможности сразу сделать боевые сертификаты было принято решение проверить работоспособность кластера TLS серверов на сертификатах, сделанных на тестовом УЦ Криптопро.
На TLS-серверах есть возможность отключить аутентификацию пользователя. При этом защищенный канал будет создаваться при наличии клиента TLS и установленных сертификатов (корневого, сертификата сервера и CRL), т.е. личного сертификата для работы не требуется.
Инициализация
Первая сложность возникла при запуске TLS-серверов. Появилось сообщение «No controller found». Совместно со специалистами компании «Код Безопасности» была выявлена довольно нестандартная проблема. Оказалось, ПАК отказался работать в ЦОДе с мониторами фирмы BenQ, а с любыми другими работал без проблем.
Первоначальная настройка несложная и состоит в основном из определения ip-адреса и шлюза, а также имени устройства. Плюс создание, экспорт/импорт мастер-ключа.
Заказчик в проекте использовал два сервера TLS. Оба сервера TLS должны работать в состоянии active-active.
На одном сервере создается мастер-ключ, на другие серверы он импортируется. Мастер-ключ (ключ кластера) предназначен для решения следующих задач:
При экспорте мастер-ключа сервер TLS принял только единственную флешку от Transcend 3.0 4Гб. Никакие флешки, даже те, что шли в комплекте от «Кода Безопасности», к сожалению, не подошли.
Инструкция по установке континент tls vpn клиент 2.0.1440
Перед установкой Континента ТЛС версии 2 необходимо удалить предыдущую версию Континента (если конечно она была установлена) через Пуск > Панель управления > Программы > Программы и компоненты. Потом перезагрузить компьютер.
Скачанный дистрибутив необходимо разархивировать и запустить файл «Континент TLS-клиент.exe»
Далее в появившемся окне отмечаем чекбокс «Я принимаю условия лицензионного соглашения» и нажимаем кнопку «Установить».
После успешной установки предлагается перезагрузить компьютер — соглашаемся.
Далее необходимо зарегистрировать СКЗИ «Континент TLS VPN Клиент». При запуске незарегистрированной программы появится следующее окно.
Если в течение 14 дней не зарегистрировать программу, то по окончании демонстрационного периода работа программы будет приостановлена.
Если не зарегистрировались сразу, то форму регистрации ищите в Континент TLS Клиент на вкладке «Настройки» > раздел «Регистрация» > кнопка «Начать» под полем «Онлайн-регистрация».
Корневой сертификат
Чуть выше я упомянул корневой сертификат. Это сертификат авторизационного центра, подпись которым подтверждает, что сертификат, который подписан, является именно тем, который принадлежит соответствующему сервису. В самом сертификате обычно содержится ряд информационных полей, в которых содержится информация об имени сервера, которому выдан сертификат, и сроках действия этого сертификата. Если срок действия сертификата истек, он признается недействительным.
Корневые сертификаты казначейства
Перед установкой корневых сертификатов ПО КриптоПро 4.0 должен быть установлен.
Настройка apache на использование клиентских сертификатов
Apache настраивается также через добавление дополнительных опций в секцию виртуального хоста:
# Директория, содержащая корневые сертификаты для проверки клиентов SSLCARevocationPath /etc/apache2/ssl.crl/ # или файл, содержащий сертификаты SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl # Опция верификации клиента. Возможные варианты: # none, optional, require and optional_no_ca SSLVerifyClient require # Глубина просмотра цепочки подписей. По умолчанию 1 SSLVerifyDepth 2
Как видите, опции примерно такие же, как и для nginx, поскольку процесс проверки организован единообразно.
Настройка nginx на использование клиентских сертификатов
Чаще всего, как я уже сказал, используется односторонняя аутентификация, обычно проверяется только сертификат сервера. Давайте посмотрим, как заставить веб-сервер nginx проверять клиентский сертификат. Необходимо в секцию server добавить опции для работы с клиентскими сертификатами:
# Корневой сертификат(ы), которым(и) подписан клиентский ssl_client_certificate /etc/nginx/certs/clientroot.pem; # Возможные варианты: on | off | optional | optional_no_ca ssl_verify_client optional; # Глубина проверки цепочки сертификатов, которыми подписан клиентский ssl_verify_depth 2;
После этого надо перезагрузить настройки или сервер целиком и можно проверять работу.
Настройка скзи «континент tls vpn клиент» для работы в электронном бюджете
Запускаем Континент TLS VPN Клиент (через меню пуск или иконку на рабочем столе). В открывшемся окне нажимаем «Главная» > «Добавить» > «Ресурс».
В окне добавления ресурса прописываем следующее:
- Если используете сертификат пользователя по ГОСТ 2021, то пишем:
- Если используете сертификат пользователя по ГОСТ 2001, то пишем:
Проверка подключения
Изначально возникли проблемы с подключением по защищенному каналу к защищаемому ресурсу с помощью сертифицированной версии TLS-клиента от «Кода Безопасности». Получилось подключиться к защищаемому ресурсу с использованием TLS-клиента 2.0 от «Кода Безопасности», но данная версия пока находится на этапе сертификации.
Проблема заключалась в неправильном редиректе на защищаемом ресурсе, который не проходил, потому что TLS-серверы не совсем корректно отрабатывали данное правило в релизной версии прошивки. Для решения проблемы необходимо было перепрошивать оба сервера TLS и поднимать сделанные бекапы.
Порядок перепрошивки следующий:
- сохраняем базу сервера (чтобы не создавать все по новой)
- заливаем образ на Flash, используя программу flashGUI
- входим в БИОС, предварительно в настройках ПАК «Соболь» устанавливаем время срабатывания сторожевого таймера, достаточное для внесения изменения настроек в БИОС
- изменяем порядок загрузки, устанавливаем загрузку с Flash, сохраняем
- при старте будет сообщение об изменении разделов, соглашаемся
- в процессе установки выбираем отладочную версию и используемую вами платформу
- перезагрузка, входим в БИОС, меняем порядок установки, соглашаемся с изменением
- настраиваем сервер локально
- подключаемся к серверу
- загружаем базу
Для входа в режим отладки на сервере TLS необходимо нажать клавишу F2.
Для версии 1.2 файл /usr/share/tls/webmgr/templates/websrv/nginx/base
Убрать из него строчку proxy_redirect и пересчитать контрольные суммы.
После проделанных операций заработал сертифицированный TLS-клиент от «Кода Безопасности», на работе которого в системе настаивал заказчик. Но вот в чем фокус, он не заработал в браузере Chrome, работа в котором была просто необходима заказчику, можно даже сказать, что все затачивалось под него.
Кстати, еще один из подводных камней при настройке любого клиента TLS от «Кода Безопасности» (кроме версии 2.0) – они не работают на виртуальных машинах. При тестировании часто использовались виртуальные машины, это еще немного усложнило процесс диагностики.
Просмотр информации о сертификате
Содержимое сертификата можно просмотреть таким образом:
Решение
Ниже представлена схема и описание компонентов.
Для решения данной задачи был выбран продукт компании «Код Безопасности» «Континент TLS VPN», соответствующий всем вышеперечисленным условиям.
Стоит отметить, что на момент проектирования это был единственный сертифицированный ПАК, осуществляющий шифрование по ГОСТ с использованием протокола TLS. В дальнейшем ожидается получение сертификата ПАК ViPNet TLS от «ИнфоТеКС».
Основные элементы системы:
Серверный сертификат
Для подписи сертификата для сервера нам нужно выполнить следующие действия:
1) Сгенерировать ключ2) Сгенерировать запрос на подпись3) Отправить CSR-файл в авторизационный центр или подписать самостоятельно
В серверный сертификат может включаться цепочка сертификатов, которыми подписан сертификат сервера, но ее можно также хранить в отдельном файле. В принципе, выглядит всё примерно так же, как и при генерации корневого сертификата
Создание клиентского сертификата
Клиентский сертификат создается примерно так же, как серверный.
Установка jinnclient_1.0.3050.0 для подписания документов
Распаковываем архив и запускаем установщик Setup.exe
Нажимаем на Jinn-Client, открывается Мастер установки:
Вводим лицензиооный ключ получений в Казначействе.
Не меняем настройки, продложаем установку, по окончании перегружаем компьютер.
Установка ssl/tls-сертификата на сервер с apache
Установка SSL/TLS-сертификата на Apache выглядит примерно так же.
1) Скопировать файлы ключа и сертификата на сервер в соответствующие директории
2) Включить модуль ssl для Apache командой «a2enmod ssl», если он еще не включен
3) Создать виртуальный хост, который будет слушать 443 порт. Конфиг будет выглядеть примерно так:
Установка ssl/tls-сертификата на сервер с nginx
Для установки SSL/TLS-сертификата на веб-сервер nginx надо выполнить несколько простых шагов:
1) Скопировать файлы .key и .pem на сервер. В различных операционных системах сертификаты и ключи могут храниться в разных директориях. В Debian’е, к примеру, это директория /etc/ssl/certs для сертификатов и /etc/ssl/private для ключей. В CentOS это /etc/pki/tls/certs и /etc/pki/tls/private
2) Прописать необходимые настройки в конфигурационный файл для хоста. Вот как это примерно должно выглядеть (это просто пример):
Цепочка действий по генерации сертификатов
Давайте посмотрим на практике, как происходят действия, связанные с генерацией сертификатов, с самого начала, и при этом на практике.
Первое, что делается — это генерация корневого сертификата. Корневой сертификат подписывается самим собой. А потом уже этим сертификатом будут подписываться другие сертификаты.
Электронный бюджет настройка рабочего места
Установка и настройка ПО для Электронного Бюджета состоит из:
- Установка и настройка КриптоПро 4.0.
- Установка корневых сертификатов казначейства.
- Скачивания сертификата Континента TLS-клиент.
- Установка и настройка Континент TLS-клиент.
- Установка Jinn Client
- Установка eXtended Container
Выводы
В конце хотелось бы подытожить. Продукт несложный в настройке и разворачивании. Есть еще над чем работать разработчикам, это касается и сервера, и клиента. Но в целом продукт рабочий и работает в кластерной конфигурации. Система на текущий момент работает без сбоев и держит нагрузку. Надеемся, что наши набитые шишки помогут вам быстрее и эффективнее разворачивать «Континент TLS».
Статью подготовил Илья Платонов.
Установка extended container
Запускаем Setup.exe в папке JinnClient_1.0.3050.0.
Вводим лицензионный ключ продукта полученный в Казначействе и продолжаем установку.
После установки перегрузите компьютер.
