Модуль |
Имя |
Версия |
Лицензия |
Источник |
Языки |
Платформы |
Тип |
Автор
|
SSL |
SSL
|
3.4 |
GPL2 |
tr_SSL.so |
en,uk,ru,de |
x86,x86_64,ARM
|
Транспорт |
Роман Савоченко
|
Описание
|
Предоставляет транспорт основанный на слое безопасных сокетов. Используется OpenSSL и поддерживаются: SSLv3, TLSv1, TLSv1.1, TLSv1.2, DTLSv1, DTLSv1_2.
- Спонсировано, внешнего файла сертификатов на 0.3 ЧД[!]: Винницкая Птицефабрика
|
Модуль предоставляет в программу поддержку транспортов, основанных на слое безопасных сокетов (SSL). В основе модуля лежит библиотека OpenSSL. Поддерживаются входные и выходные транспорты протоколов SSLv3, TLSv1, TLSv1.1, TLSv1.2, DTLSv1, DTLSv1_2; общий перечень которых зависит от их доступности в библиотеке 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, DTLSv1_2), по умолчанию и при ошибке используется наиболее безопасный и соответствующий.
- Выбор транспортных протоколов.
- Состояние "Подключение", в которое переводить транспорт при загрузке.
- PEM-файл сертификатов и приватного ключа; или сертификаты, приватный ключ SSL и пароль приватного ключа SSL.
Спрятано в подключенном состоянии.
Отслеживается в 60 секунд на предмет обновления, соответственно переподключение транспорта для актуализации.
- Максимальное число клиентов, Максимальное число клиентов по хостам и Размер входного буфера.
- Keep alive запросов. Закрытие подключения после указанного количества запросов. Нулевое значение для отключения — не закрывается никогда.
- Keep alive время ожидания, секунд. Закрытие подключения после отсутствия запросов в течении указанного времени. Нулевое значение для отключения — не закрывается никогда.
Отключать данную функцию не рекомендуется поскольку свойство сетей 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, DTLSv1_2), по умолчанию и при ошибке используется наиболее безопасный и соответствующий.
- PEM-файл сертификатов и приватного ключа; или сертификаты, приватный ключ SSL и пароль приватного ключа SSL.
Спрятано в подключенном состоянии.
- Временные интервалы соединения в формате "{conn}:{next}", где:
- 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" копируется в текстовое поле сертификата и ключа. Пароль приватного ключа устанавливается в соответствующем поле.