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}", де:
    • 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" копіюються до текстового поля сертифікату та ключа. Пароль приватного ключа встановлюється у відповідному полі.