From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/SSL and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
SSL SSL 2.3 GPL2 tr_SSL.so en,uk,ru,de x86,x86_64,ARM Транспорт Роман Савоченко Предоставляет транспорт основанный на слое безопасных сокетов. Используется OpenSSL и поддерживаются: SSLv3, TLSv1, TLSv1.1, TLSv1.2, DTLSv1.

Модуль предоставляет в программу поддержку транспортов, основанных на слое безопасных сокетов (SSL). В основе модуля лежит библиотека OpenSSL. Поддерживаются входные и выходные транспорты протоколов SSLv3, TLSv1, TLSv1.1, TLSv1.2, DTLSv1; общий перечень которых зависит от их доступности в библиотеке OpenSSL и при отсутствии прямого указания выбирается наиболее актуальный и безопасный.

Добавить новые входные и выходные безопасные сокеты можно посредством конфигурации транспортной подсистемы в любом конфигураторе OpenSCADA.

1 Входные транспорты

Сконфигурированный и запущенный входной транспорт открывает серверный SSL-сокет для ожидания подключения клиентов. SSL-сокет являются много-поточными, т.е. при подключении клиента создаётся клиентское SSL-соединение и новый поток в котором производиться обслуживание клиента. Серверный SSL-сокет в этот момент переходит к ожиданию запросов от нового клиента. Таким образом достигается параллельное обслуживание клиентов.

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

Диалог конфигурации входного SSL-транспорта изображён на рисунке 1.

Рис.1. Диалог конфигурации входящего SSL-транспорта.

С помощью этого диалога можно установить:

  • Состояние транспорта, а именно: "Статус", "Исполняется", имя БД (содержащей конфигурацию) и список с информацией о текущих подключениях.
  • Идентификатор, имя и описание транспорта.
  • Адрес транспорта в формате "{addr}:{port}[:{mode}]" где:
    • addr — адрес открытия SSL, должен быть одним из адресов хоста. Пустой адрес или "*" открывает SSL на всех интерфейсах. Допускаются как символьное, так и IPv4 "127.0.0.1" или IPv6 "[::1]" представление адреса.
    • port — сетевой порт на котором открывается SSL, возможно указание символьного имени порта согласно /etc/services.
    • mode — SSL-режим и версия (SSLv3, TLSv1, TLSv1_1, TLSv1_2, DTLSv1), по умолчанию и при ошибке используется наиболее безопасный и соответствующий.
  • Выбор транспортных протоколов.
  • Состояние "Исполняется", в которое переводить транспорт при загрузке.
  • Сертификаты, приватный ключ SSL и пароль приватного ключа SSL.
  • Максимальное число клиентов, Максимальное число клиентов по хостам и Размер входного буфера.
  • Keep alive запросов. Закрытие подключения после указанного количества запросов. Нулевое значение для отключения — не закрывается никогда.
  • Keep alive время ожидания, секунд. Закрытие подключения после отсутствия запросов в течении указанного времени. Нулевое значение для отключения — не закрывается никогда.
At.png Отключать данную функцию не рекомендуется поскольку свойство сетей TCP/IP не гарантирует уведомления сервера об отключении соединения, скажем в случае пропадания питания на клиенте. В результате чего могут навсегда оставаться открытые клиентские подключения, а при достижении лимита сервер перестанет принимать новые!
  • Приоритет задач транспорта.

2 Выходные транспорты

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

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

Главная вкладка страницы конфигурации исходящего SSL-транспорта изображёна на рисунке 2.

Рис.2. Главная вкладка страницы конфигурации исходящего SSL-транспорта.

С помощью этого диалога можно установить:

  • Состояние транспорта, а именно: "Статус", "Исполняется" и имя БД, содержащей конфигурацию.
  • Идентификатор, имя и описание транспорта.
  • Адрес транспорта в формате "{addr}[,{addrN}]:{port}[:{mode}]", где:
    • addr — адрес к которому осуществляется подключение. Допускаются как символьное, так и IPv4 "127.0.0.1" или IPv6 "[::1]" представление адреса.
    • port — сетевой порт к которому осуществляется подключение. Возможно указание символьного имени порта согласно /etc/services.
    • mode — SSL-режим и версия (SSLv3, TLSv1, TLSv1_1, TLSv1_2, DTLSv1), по умолчанию и при ошибке используется наиболее безопасный и соответствующий.
  • Состояние "Исполняется", в которое переводить транспорт при загрузке.
  • Сертификаты, приватный ключ SSL и пароль приватного ключа SSL.
  • Временные интервалы соединения в формате "{conn}:{next}", где:\n"
    • conn — максимальное время ожидания ответа соединения, в секундах;
    • next — максимальное время ожидания продолжения ответа, в секундах.
Может быть приоритетно определён вторым глобальным аргументом поля адреса, вроде "localhost:123||5:1".
  • Попыток запроса транспортом и протоколом, для полных запросов.
Может быть приоритетно определён третьим глобальным аргументом поля адреса, вроде "localhost:123||5:1||3".

3 Сертификаты и ключи

Для полноценной работы модуля необходимы сертификаты и приватные ключи. В случае с входным SSL-транспортом (сервером) они обязательны. В случае с исходящим SSL-транспортом они могут и не устанавливаться хотя их использование желательно.

Простейшей конфигурацией сертификата является самоподписной сертификат и приватный ключ. Ниже описана процедура их создания с помощью утилиты openssl:

# Генерация секретного ключа
$ openssl genrsa -out ./key.pem -des3 -rand /var/log/messages 2048
# Генерация самоподписанного сертификата
$ openssl req -x509 -new -key ./key.pem -out ./selfcert.pem -days 365

Далее содержимое файлов "selfcert.pem" и "key.pem" копируется в текстовое поле сертификата и ключа. Пароль приватного ключа устанавливается в соответствующем поле.