В роутерах серии RTU есть возможность использования защищенного соединения через частную виртуальную сеть, под названием OpenVPN

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

Практически всю часть конфигурирования  можно произвести через WEB интерфейс, но некоторые элементы все же придется произвести через консоль!

Что такое OpenVPN и для чего он необходим можно ознакомиться через статью на Wikipedia: OpenVPN


В данной статье мы ознакомимся с подготовительной частью, это генерация сертификатов и ключей шифрования для защиты нашего канала передачи.


1. Генерация сертификатов и ключей на Windows

Для генерации сертификатов и ключей шифрования на ОС Windows необходимо установить само приложение OpenVPN

Скачать версию для Windows можно по ссылке: OpenVPN - Open Source VPN

После скачивания и установки в указанную Вами папку в ней будет список файлов. у меня это папка C:\Program Files\OpenVPN\

Нам необходимо перейти в папку easy-rsa

Нужно открыть консоль Windows (для Windows Vista/7/8/8.1/10 нужно запускать от Администратора)

Узнать, как запускать командную строку(консоль) от имени администратора можно набрав в поисковике (Яндекс, Google, Mail и др.) фразу: "Как запустить командную строку от имени администратора"

Переходим в папку easy-rsa по пути установки командой cd

Например:

cd C:\Program Files\OpenVPN\easy-rsa


1.1 Запускаем файл init-config.bat

C:\Program Files\OpenVPN\easy-rsa>init-config.bat                
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat  
Скопировано файлов:         1.                                   


В папке появится файл vars.bat, открываем его текстовым редактором, нас интересуют строчки в самом конце, их нужно заполнить

Мы подставили свои параметры, у Вас данные параметры будут другие.

set KEY_COUNTRY=RU
set KEY_PROVINCE=Moscow
set KEY_CITY=Moscow
set KEY_ORG=TELEOFIS
set KEY_EMAIL=support@teleofis.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=server
set PKCS11_MODULE_PATH=server
set PKCS11_PIN=12345

Там где написано server, не трогаем. Сохраняем файл.


1.2 Далее открываем редактором файл openssl-1.0.0.cnf

Находим строчку default_days 365 и заменяем число 365 на 3650. Тем самым мы увеличим время жизни наших сертификатов на 10 лет.

Сохраняем и закрываем.


1.3 Генерируем ключи

Пишем в консоль команды

vars

clean-all


В ответ должно прийти

Скопировано файлов:         1.
Скопировано файлов:         1.


Если, мы это видим, значит все хорошо, продолжаем...


Создаем ключ Диффи-Хеллмана

build-dh


Создаем основной сертификат

build-ca


При генерации основного сертификата в консоли будут отображаться вопросы. Просто нажимаем Enter, т.к. все эти параметры мы ввели в файле vars.bat

Нажимаем Enter до тех пор, пока не отобразиться строка приглашения

C:\Program Files\OpenVPN\easy-rsa


Далее создаем сертификат и ключ сервера:

build-key-server server


На вопросы так же нажимаем Enter, но не торопимся, в самом конце будет задано два вопроса

Sign the certificate?

1 out of 1 certificate requests certified, commit?


На оба эти вопроса отвечаем Y


Теперь создаем сертификат и ключ клиента:

build-key client


Также не торопимся с ответами, как только увидим строку "Common Name (eg, your name or your server's hostname)" нужно ответить client

В самом конце также будут два вопроса, отвечаем также Y

Причем: для каждого клиента, нужно будет создать отдельные ключи и называть их client1, client2 или как-то иначе, все зависит от Вашего воображения. Также не забывайте вводить эти имена при запросе Common Name

Например:

build-key client1

build-key office1


На этом создание файлов сертификатов и ключей завершено.

Все файлы будут лежать в папке C:\Program Files\OpenVPN\easy-rsa\keys\

Из этой папки забираем:

ca.crt

dh1024.pem (или dh2048.pem)

server.crt

server.key


2. Генерация сертификатов и ключей на Linux

Пример генерации сертификатов и ключей мы будем производить на операционной системе Ubuntu Linux 16.04 LTS

Для других систем на базе Linux, некоторые команды могут отличаться!


Открываем консоль операционной системы и устанавливаем небольшой пакет easy-rsa

sudo apt-get install easy-rsa


Переходим в каталог, куда установился пакет генерации сертификатов

cd /usr/share/easy-rsa/


Единственный момент, данная папка доступна для записи только суперпользователю, чтобы у нас не возникло проблем в дальнейшем, поменяем владельца (Не проглядите точку в конце команды!!!)

sudo chown -R teleofis:teleofis .


Теперь настроим информацию о создаваемых сертификатах

nano vars


Находим данные пункты и меняем их под себя

export KEY_SIZE=1024 // Длина ключа
export CA_EXPIRE=3650 // Время действия главного ключа в днях
export KEY_EXPIRE=3650 // Время действия сертификата в днях
export KEY_COUNTRY="RU" // Страна
export KEY_PROVINCE="Moscow" // Регион
export KEY_CITY="Moscow" // Город
export KEY_ORG="TELEOFIS" // Организация
export KEY_EMAIL="support@teleofis.ru" // Электронный ящик
export KEY_OU="server" // Подразделение
export KEY_NAME="server" // Имя ключа

После редактирования сохраняем файл.


Копируем последнюю версию конфигурации OpenSSL в файл openssl.cnf

cp openssl-1.0.0.cnf openssl.cnf


Загружаем переменные

source ./vars


На всякий случай почистим от мусора

./clean-all


Создаем сертификат сервера

./build-ca


На все вопросы нажимаем Enter, все эти параметры мы отредактировали заранее в файле vars

Generating a 1024 bit RSA private key
.........................................++++++
.......................................................................................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [Moscow]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [TELEOFIS]:
Organizational Unit Name (eg, section) [server]:
Common Name (eg, your name or your server's hostname) [TELEOFIS CA]:
Name [server]:
Email Address [support@teleofis.ru]:


Создаем ключ сервера

./build-key-server server


На все вопросы отвечаем Enter, но нужно быть внимательными, ближе к концу будет несколько вопросов о пароле и опциональное имя

Также на запросы

Sign the certificate?

1 out of 1 certificate requests certified, commit?

Отвечаем Y


Generating a 1024 bit RSA private key
..............................++++++
.....................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [Moscow]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [TELEOFIS]:
Organizational Unit Name (eg, section) [server]:
Common Name (eg, your name or your server's hostname) [server]:
Name [server]:
Email Address [support@teleofis.ru]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/share/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'RU'
stateOrProvinceName   :PRINTABLE:'Moscow'
localityName          :PRINTABLE:'Moscow'
organizationName      :PRINTABLE:'TELEOFIS'
organizationalUnitName:PRINTABLE:'server'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'server'
emailAddress          :IA5STRING:'support@teleofis.ru'
Certificate is to be certified until Dec 20 13:25:10 2026 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated


Создаем ключ Диффи-Хеллмана

./build-dh


Внимание!!! Файл может генерироваться длительное время, дожидаемся окончания генерации.

Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.......+................+.............+.............................................................................+................+........................+...........................................+...............................................................................................................................................+....................+........................................+...................................................................................+....................................................................................................................+.+...................................++*++*++*


Аналогичным образом создаем ключи клиентов

./build-key client1

./build-key rtu968


Отвечаем на все вопросы Enter, но в конце внимательней, опять будут запросы

Sign the certificate?

1 out of 1 certificate requests certified, commit?

Отвечаем на них Y


На этом создание файлов сертификатов и ключей завершено.

В папке /usr/share/easy-rsa/keys/ будут лежать наши сертификаты и ключи



ca.crt

dh1024.pem (или dh2048.pem)

server.crt

server.key


3. Дополнительные варианты

Также существуют дополнительные ключи и методы для повышения безопасности соединения.


3.1 Ключ для TLS аутентификации

Генерируется командой:

openvpn --genkey --secret %KEY_DIR%\ta.key - Windows


Для Linux необходимо наличие полного пакета OpenVPN, только пакета easy-rsa будет недостаточно!

Установить полный пакет OpenVPN можно командой

sudo apt-get install openvpn


Далее генерируем ключ:

openvpn --genkey --secret /usr/share/easy-rsa/keys/ta.key - Linux


3.2 Проверка и отзыв сертификатов

Также мы можем создать дополнительный файл crl.pem, через который будет производится проверка и отзыв сертификатов.

Данный файл можно не использовать, ничего страшного не случится.

Для его использования создаем пользовательский сертификат:

build-key crlsert - Windows

./build-key crlsert - Linux


На все вопросы отвечаем нажатием Enter, кроме Common Name и Name

Для этих полей указываем имя самого сертификата.

И в конце на запросы Sign the certificate?, 1 out of 1 certificate requests certified, commit? отвечаем Y

После этого выполняем команду revoke-full, она отвечает за отзыв сертификата и последующее создание файла crl.pem

revoke-full crlsert - Windows

./revoke-full crlsert - Linux


Сами файлы сертификата crlsert можно удалить. После отзыва они не удаляются автоматически из папки.


На этом создание ключей завершается.


Переходим к следующей статье:

OpenVPN режим мультиклиента: Часть 2 - Настройка RTU сервера (tun)


Сопутствующие статьи:

Как подключиться к роутеру RTU?


Дополнительная информация:

Wiki на GITHUB

Страница роутера на сайте Teleofis

Контроллеры на платформе роутера RTU