Установка сертификатов OpenVPN и настройка сервера на MikroTik
Из созданных нами сертификатов и ключей нас интересуют 3 файла:
Импортируем сертификаты OpenVPN в ОС MikroTik .
- имя профиля,
- Local Address — адрес роутера Микротик, к которому будут подключаться клиенты. Он должен лежать в одой подсети с Remote Address
- Remote Address- здесь пишем либо один IP-адрес клиента, либо имя ранее созданного пула адресов.
Остальные настройки не трогаем.
Настраиваем сервер OpenVPN на роутере MikroTik.
Идем в меню PPP- Interface — OVPN Server.
- Активируем его, поставив галочку в пункте Enabled.
- В поле mode оставляем IP (IP-туннелирование по умолчанию) или выставляем ethernet (режим сетевого моста), это L3 и L2 соответственно. Чаще всего используется IP.
- Default Profile — выбираем профиль, который мы создали ранее.
- Certificate — сертификат сервера.
- require-client-certificate — если ставим галку, то сервер при подключении проверяет сертификат клиента. Если нет — то не проверяет, и настройка клиента при этом упрощается.
Создаем и настраиваем пользователя.
Идем: PPP — Secrets и добавляем пользователя. Тут все просто: имя, пароль, сервис и профиль.
Необходимо также в настройках клиента предусмотреть синхронизацию времени с сервером. Вначале убеждаемся, что у нас выставлена правильная тайм-зона (меню System — Clock). Далее идем в меню System — SNTP Client и прописываем адрес NTP сервера (на скриншоте указан локальный, но можно взять любой, к примеру 85.21.78.91).
Настраиваем разрешающее правило фаерволла .
Идем IP — Firewall — Filter Rules и разрешаем трафик на порт OpenVPN:
- В поле Chain ставим input.
- Protocol — 6(tcp).
- Dst. Port — 1194.
- In. Interface — прописываем название интерфейса, на который идет входящий трафик.
Активируем правило на вкладке Action:
Напомним, что разрешающее правило в списке правил должно быть выше запрещающих, иначе оно не будет работать.
Настройка клиентов на сервер
Создайте клиентский конфигурационный файл OpenVPN, сохраните его с расширением для Windows или для *nix систем и отошлите его вашему клиенту:
Традиционный (TUN) Клиент
dev tun proto udp log openvpn.log verb 3 ca /etc/openvpn/ca.crt cert /etc/openvpn/my-client.crt key /etc/openvpn/my-client.key client remote-cert-tls server remote SERVER_IP_ADDRESS 1194
Клиент в режиме моста (TAP)
dev tap proto udp log openvpn.log verb 3 ca /etc/openvpn/ca.crt cert /etc/openvpn/my-client.crt key /etc/openvpn/my-client.key client remote-cert-tls server remote SERVER_IP_ADDRESS 1194
Как это работает ?
При инициализации плагина в OpenVPN, плагин возвращает масочный список всех функций, которые может обслужить. При наступлении очередной фазы подключения или внутреннего события, OpenVPN вызывает соответствующие функции из плагина. Плагин преобразует переменное окружение и параметры переданные функции в структуру, инициализирует python и передаёт структуру в соответствующую процедуру python модуля. Процедура возвращает плагину один из трёх ответов (0 — Success, 1 — Error, 2 — Deferred). Ответ транформируется и возвращается OpenVPN.
Обратите внимание, что все вызовы модуля являются «stateless», это означает, что процедуры не помнят и не знают, что происходило ранее в других вызовах. Ориентироваться можно только на переменное окружение передаваемое плагину из OpenVPN
Внутри python модуля вы можете реализовать любую логику, подключая нужные библиотеки и ресурсы. Если вы не уверены в скорости выполнения проверок, то используйте «отложенные» подтверждения.
Используя группировку пользователей подключаемых к сервису, через pf_file можно довольно тонко настроить сетевое взаимодействие между пользователями и другими ресурсами. В свою очередь подключив плагин на мониторинг, всегда можно будет через management интерфейс OpenVPN управлять сессиями клиентов.
Во время тестирования проекта был разработан механизм генерации паролей, аналогичный jwt токенам, но имеющим меньший размер.
Суть проста. Токен содержит в себе идентификатор клиента и срок окончания доступа. Для подписи токена используется HMAC_SHA1 с закрытым ключом. После подписи токена, текстовое содержимое ксорится подписью и конвертится в base64. Таким образом получается «запечатывание» токена. «Запечатанный» токен используется в качестве пароля пользователя. При несанкционированном изменении блока с данными, поломается xor, если поломается xor, значит поломается проверка подписи. Без закрытого ключа подпись изменить не получится.
Если вы не хотите руками контролировать время действия пароля, то генерируете такой токен, и проверяете его на валидность внутри плагина, не вызывая внешние сервисы. Данная схема очень удобна для сессионной генерации паролей на определенное время. При этом вы можете во внешнюю систему управления передать содержимое токена и она сама настроится на отключение пользователя по окончании действия токена.
Надеюсь информация в данной статье была вам полезна.
Спасибо за потраченное на её прочтение время.
Если есть вопросы, попробую ответить на что смогу.
Настройка OpenVPN сервера на Mikrotik
Подключимся к Mikrotik с помощью программы Winbox. Загрузим 3 файла: ca.crt, server.crt, server.key Для этого в меню нажмём Files и перетащим их из папки C:Program filesOpenVPNeasy-rsakeys
13) Далее необходимо их импортировать. Откроем System – Certificates — Import и поочерёдно выберем сертификаты в этом порядке: ca.crt server.crt server.key
После импорта появятся две записи:
14) Создадим пул адресов для VPN клиентов:
IP — Pool — add (+) Введём название openvpn-pool Диапазон 172.30.0.2-172.30.0.253
15) Создадим PPP профиль.
PPP — Profiles — add (+) Введём название openvpn Локальный адрес 172.30.0.1 Созданный Пул openvpn-pool Остальные настройки оставляем по умолчанию. Нажимаем ОК.
16) Создадим непосредственно сам OpenVPN сервер PPP — Interface — OVPN Server Включаем Enable Указываем порт 1194 Выбираем наш профиль openvpn Поставим галочку Require Client Certificate Выберем наш сертификат server.crt
17) Создадим пользователя для подключения. PPP — Secrets — add (+) Введём имя пользователя и пароль ovpn_user1 Выбираем Сервис ovpn и профиль openvpn
Создадим 2 пользователя:
ovpn_user1 для клиента на компьютере
ovpn_mikrotik1 для клиента на Mikrotik
Рекомендуется для каждого VPN клиента создавать отдельное уникальное имя пользователя. В дальнейшем это упростит работу и позволит отслеживать всех подключенных VPN клиентов.
18) Настроим фаервол IP — Firewall — add(+) Во вкладке General указываем: Chain — input Protocol — tcp Порт 1194 Интерфейс — ether1 (Если интернет идёт через него) Вкладка Action: Action — accept Затем ОК
Сервер настроен, теперь приступим к настройке VPN клиентов.
Генерация сертификатов для OpenVPN
Сертификаты для сервера и клиента можно создать средствами самого OpenVPN (Easy-RSA), а можно с помощью ресурса CAcert.org. Рассмотрим создание самоподписанных сертификатов посредством Easy-RSA.
Скачиваем и устанавливаем OpenVPN .
Редактируем параметры easy-rsa OpenVPN.
После установки идем в папку с программой, в каталог easy-rsa
и открываем с помощью блокнота файл vars.bat.sample, редактируем его.
Если мы создаем дубликат папки easy-rsa (а в этом есть смысл) и работаем в нем, то необходимо отредактировать строку, прописав в ней новый путь к папке:
Далее редактируем следующие строки, проставляя в них актуальные для себя значения (пустыми параметры оставлять нельзя):
Последние два параметра можно не менять.
После чего сохраняем файл под именем vars.bat.
Если при сохранении vars.bat в этом же каталоге система выдает ошибку:
то сохраните файл вначале на рабочем столе, а потом перенесите в этот каталог.
Выполняем генерацию сертификатов для OpenVPN под MikroTik.
Работаем в командной строке Windows (cmd), запустив ее от имени администратора.
Переходим в нужный каталог: cd «C:Program FilesOpenVPNeasy-rsa»
Набираем команду vars и жмем энтер.
Набираем команду clean-all и жмем энтер.
Если мы видим надпись, как на изображении — «Скопировано файлов — 1.», значит, все сделано правильно.
Набираем команду build-ca. Программа начинает генерацию публичного сертификата OpenVPN и запрашивает у нас значения параметров. Если на вопрос в командной строке мы просто жмем энтер, то программа подставляет значения по умолчанию, которые мы вписали в файл vars.bat. Останавливаемся, когда снова появляется строка C:Program FilesOpenVPNeasy-rsa.
Даем команду на генерацию сертификата сервера OpenVPN для MikroTik: build-key-server имя_сертификата. В нашем случае пишем
build-key-server server, на вопрос «Sign the certificate?» отвечаем y, точно также на вопрос «1 out of 1 certificate requests certified, commit?», на остальные просто жмем энтер.
Даем команду на генерацию сертификата клиента — build-key client. Имя сертификата (Common Name) должно быть уникальным и не совпадать с другими сертификатами. Поэтому на этот вопрос отвечаем — client. Здесь также в конце появятся два вопроса, как в предыдущем пункте, и мы тоже отвечаем на них — y.
Все, теперь в папке C:Program FilesOpenVPNeasy-rsakeys лежат все созданные ключи и сертификаты OpenVPN.
Отзыв клиентских сертификатов
Иногда может понадобиться отозвать клиентский сертификат для предотвращения доступа к серверу VPN: сотрудник уволился, потерял ноутбук или просто нужно определенному сотруднику нужно закрыть доступ к внутренней корпоративной сети.
Причины могут быть разные. Как отозвать выданный ему клиентский сертификат Open VPN?
Для того чтобы отозвать сертификат/сертификаты нужно сформировать список отозванных сертификатов и сказать серверу OpenVPN чтобы тот при коннекте клиента сверялся с этим списком.
Для начала нужно зайти в директорию центра сертификации, который обычно находится в /etc/openvpn/easy-rsa/ и ввести команды:
cd /etc/openvpn/easy-rsa/ sudo su source /etc/openvpn/easy-rsa/vars
Далее, используя команду команду revoke-full отзываем конкретный сертификат:
./revoke-full client
где client — это имя сертификата. С этим именем в папке /etc/openvpn/easy-rsa/keys хранятся три файла:
client.key client.csr client.crt
Иногда, в старых версиях OpenVPN, может появляться ошибка 23. Это нормально, но в последней версии она не появляется. В результате работы будет создан файл crl.pem в директории keys с необходимой для отзыва сертификата информацией.
Для простоты можно переместить этот файл в директорию /etc/openvpn:
sudo cp keys/crl.pem /etc/openvpn
Затем открываем файл конфигурации сервера OpenVPN вашим любимым редактором текста, например nano:
sudo nano /etc/openvpn/server.conf
и в конец файла добавляем строку crl-verify. Теперь сервер OpenVPN будет проверять список отозванных сертификатов каждый раз, когда кто-то устанавливает соединение с сервером.
crl-verify /etc/openvpn/crl.pem
Сохраните и закройте файл.
Перезапустите OpenVPN для завершения процесса отзыва сертификата:
sudo service openvpn restart
Теперь клиент не сможет устанавливать соединение с сервером OpenVPN используя сертификат client.
Обобщая всё вышесказанное для отзыва дополнительных сертификатов нужно выполнить следующие шаги:
- Сгенерировать новый список отозванных сертификатов используя команду source vars в директории /etc/openvpn/easy-rsa и выполняя команду revoke-full с именем клиента.
- Скопироватье новый список отозванных сертификатов в директорию /etc/openvpn перезаписав тем самым старый список.
- Перезапустите сервис OpenVPN.
Эта процедура может быть использована для отзыва любых созданных вами ранее сертификатов. Каждый раз при отзыве клиентского сертификата, формируется новый crl.pem. Это и есть список всех отозванных сертификатов.
Клиент
Ключи
Создание запроса запароленного ключа для клиента (потребуется вводить при каждом подключении) с именем User:
cd ~/easy-rsa-master/easyrsa3 ./easyrsa gen-req User
Если авторизация будет внешней (например ADшная), то пароль не потребуется. Создание запроса без парольного ключа для клиента:
./easyrsa gen-req User nopass
Создание ключа пользователя (по дефолту из vars сроком на 10 лет):
./easyrsa sign-req client User
Или с ограничением действия сертификата в 90 дней (после истечения срока можно только перевыпустить):
./easyrsa sign-req client User -days 90
Клиенту передать эти файлы:
~/easy-rsa-master/easyrsa3/pki/issued/User.crt ~/easy-rsa-master/easyrsa3/pki/private/User.key ~/easy-rsa-master/easyrsa3/pki/ca.crt /etc/openvpn/keys/ta.key
Конфиг
client dev tun proto udp remote xxx.xxx.xxx.xxx 1194 cipher AES-256-CBC tls-client ca "ca.crt" tls-auth "ta.key" 1 cert "User.crt" key "User.key" remote-cert-tls server comp-lzo tun-mtu 1500 mssfix 1450 verb 3 nobind resolv-retry infinite
Для удобства все пять клиентских файлов можно объединить в один
Описание команд и параметров
Каждый параметр (man openvpn) имеет свое значение и описание. Рассмотрим их более детально:
- client – означает, что конфигурационным файлом описывается подключение клиента, то есть установлено соединение самой программой, при этом ожидание от сервера исключено;
- dev (tap и tun) – используется для выбора виртуального сетевого драйвера. Значение tun указывает на сетевой уровень модели OSI, а tap требуется для эмуляции Ethernet устройства и работы на канальном уровне модели OSI;
- dev-node – актуален для систем Виндовс, когда присутствует несколько сетевых интерфейсов. В параметре должно быть название сетевого подключения для OpenVPN;
- proto (udp или tcp) – определение протокола, используемого для информационной передачи. Как правило, используется именно udp, поскольку он меньше загружает сеть;
- remote (VPN-сервер и порт) – указывает на сервер для клиентского подключения, а также на порт, в рамках которого принимаются запросы для OpenVPN;
- remote-random – необходимость подключения к удаленным серверам рандомно;
- resolv-retry (секунды или infinite) – сервер имеет доменное имя, а сам параметр задается в секундах для повторного подключения. Infinite означает постоянную связь с сервером;
- nobind – применение динамического порта для подключения;
- user – выбор конкретного пользователя для клиентской работы;
- group – выбор определенной группы для клиентской работы;
- persist-key – исключает перечитывание ключей, если перезагружается сервис OpenVPN;
- persist-tun – исключает перечитывание параметров туннеля при перезагрузке сервиса OpenVPN;
- http-proxy – использование прокси для установки подключения;
- http-proxy-retry – в случае разрыва связи переподключение к прокси;
- http-proxy-timeout – временной интервал, через который начинается переподключение;
- mute-replay-warnings – актуален при беспроводном соединении, поскольку отключается дублирование пакетных предупреждений;
- ca – корневой сертификат, генерация происходит на сервере;
- cert – открытый клиентский ключ, генерация происходит на сервере;
- key – закрытый клиентский ключ, генерация происходит на сервере;
- dh – ключ с алгоритмом Диффи-Хеллмана;
- remote-cert-tls – защита от mitm атаки с учетом верификации сертификата сервера;
- tls-client – определяет клиента TLS;
- tls-auth (ta.key 1) – дополнительный уровень идентификации с помощью tls;
- float – можно изменить IP удаленным хостом во время соединения, если оно не разрывается;
- keepalive (секунды) – пинговка через определенное количество секунд и перезапуск подключения, если в течение какого-либо времени не принимаются ответные пакеты;
- cipher – алгоритм шифрования;
- comp-lzo – применение сжатия;
- verb (0-9) – уровень детализации лога;
- mute – сколько лог-сообщений отображается в каждой категории;
- auth-user-pass – необходимость провести аутентификацию;
- ipchange – выполнение команды при смене адреса IP;
- connect-retry – через какое время переподключаться к серверу, если был разрыв соединения;
- connect-retry-max – количество повторений соединения при его разрыве;
- shaper – определение максимальной скорости передачи данных для исходящего потока;
- tun-mtu – задает MTU;
- status – путь к файлу статусного хранения;
- log – путь к лог-файлу.
Абсолютно все команды OpenVPN с соответствующими параметрами по OpenVPN для ОС Windows и Linux вы можете получить, воспользовавшись опцией openvpn —help.
Настройка клиентов
Настройка клиента значительно проще, чем настройка сервера, у клиента нам не нужно генерировать ключи, сертификаты и т.п., так как все необходимое уже было сгенерировано нами на сервере и передано клиенту. Поэтому инструкция в случае для клиента получается значительно короче.
Ориентируясь на инструкцию по скачиваем дистрибутив OpenVPN с официального сайта, устанавливаем его и создаем в папке C:\OpenVPN подпапку SSL.
Помещаем в нее файлы ca.crt, client1.crt, client1.key и ta.key, переданные нам владельцем сервера.
Запускаем блокнот и создаем файл Client1.ovpn следующего содержания:
# decker OpenVPN Config File (c) Decker, decker@compkaluga.ru
dev tap
# dev-node «OpenVPN»
proto tcp
remote x.x.x.x 7777
route-delay 3
client
tls-client
ns-cert-type server
ca C:\\OpenVPN\\ssl\\ca.crt
cert C:\\OpenVPN\\ssl\\client1.crt
key C:\\OpenVPN\\ssl\\client1.key
tls-auth C:\\OpenVPN\\ssl\\ta.key 1
comp-lzo
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ping-restart 60
ping 10
status C:\\OpenVPN\\log\\openvpn-status.log
log C:\\OpenVPN\\log\\openvpn.log
verb 3
Обратите внимание, здесь client1.crt и client1.key — это названия файлов полученные вами от владельца сервера. x.x.x.x — это IP адрес или доменное имя OpenVPN сервера, 7777 — номер порта сервера
Заходим в оснастку «Службы и приложения», так, как это описано в разделе настроек сервера и запускаем службу OpenVPN, если она успешно запустилась, то выставляем ей тип запуска в «Авто».
Одновременно обращаем внимание на свойства нашего OpenVPN адаптера, если вы все настроили правильно, то через несколько секунд после запуска службы OpenVPN адаптер получит сетевой адрес от сервера:
Настройка клиента OpenVPN
Если мы не используем клиентские сертификаты (в настройках сервера не отмечали галочкой пункт require-client-certificate), то настроить клиент OpenVPN будет быстрее и проще. Нам не нужно будет копировать сертификаты для клиента, только создать в меню PPP — Interfaces новую запись OVPN Client и и на вкладке Dial Out прописать:
- адрес OpenVPN сервера (поле Connect To),
- логин и пароль пользователя (поля User и Password),
- порт соединения,
- тип аутентификации и шифрования (поля Auth и Cipher).
Настройка второго роутера Микротик как клиента OpenVPN .
Так же, как и при настройке сервера, копируем из папки C:Program FilesOpenVPNeasy-rsakeys и вставляем в раздел Files файлы сертификатов и ключей OpenVPN. Только теперь это будут:
После этого поочередно импортируем их, используя меню System – Certificates — выбор сертификата — кнопка Import.
После успешного импорта в строке сертификата должны появиться буквы KT
Далее настраиваем соединение, практически так же, как и в случае без сертификатов. С оздаем в меню PPP — Interfaces новую запись OVPN Client и и на вкладке Dial Out прописываем:
- адрес OpenVPN сервера (поле Connect To),
- логин и пароль пользователя (поля User и Password),
- порт соединения,
- наименование сертификата,
- тип аутентификации и шифрования (поля Auth и Cipher).
Все, осталось проверить, поднялось ли соединение.
Настройка клиента OpenVPN в Windows.
Копируем ранее созданные нами файлы ca.crt, client.crt, client.key из папки C:Program FilesOpenVPNeasy-rsakeys в каталог C:Program FilesOpenVPNconfig.
Создаем здесь же обычный текстовый файл, который сохраняем как auth.cfg (обратите внимание, меняем и расширение тоже). Открываем файл auth.cfg для редактирования в блокноте и вписываем в него 2 строки: первую -логин пользователя, вторую — пароль, которые мы задали на сервере
Сохраняем файл
Открываем файл auth.cfg для редактирования в блокноте и вписываем в него 2 строки: первую -логин пользователя, вторую — пароль, которые мы задали на сервере. Сохраняем файл.
Создаем еще один текстовый файл, который сохраняем как client.ovpn (включая смену расширения).
Файл client.ovpn редактируем следующим образом:
Бывают случаи, когда необходимо настроить удалённый доступ на mikrotik или даже на несколько. Особенно это актуально, если вы обслуживаете несколько объектов и нет возможности физически постоянно присутствовать возле оборудования. В этом статье мы разберём, как настроить OpenVPN сервер на mikrotik, а также клиенты на mikrotik и компьютере под управлением Windows.
Для работы нам понадобится Белый IP адрес (он и будет адресом сервера в наших настройках) для доступа к серверу из интернета и сертификаты безопасности.
Краткий план данной статьи:
Как настроить OpenVPN на Windows 10
Как работает OpenVPN
Протокол OpenVPN отвечает за поддержание коммуникации между клиентом и сервером. Как правило, он используется для создания защищённого туннеля между VPN-клиентом и сервером.
Для шифрования и аутентификации OpenVPN использует библиотеку OpenSSL. Кроме того, для передачи данных OpenVPN могут использоваться протоколы UDP или TCP.
- TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Протокол TCP исключает потери данных, дублирование и перемешивание пакетов, задержки.
- UDP всё это допускает, и соединение для работы ему не требуется. Протокол UDP доставляет пакеты данных гораздо быстрее, потому лучше подходит для приложений, которые рассчитаны на широкую пропускную способность и быстрый обмен.
Как подключиться OpenVPN
Перед подключением нужно выбрать бесплатный VPN сервер, загрузив на компьютер файл конфигурации определённого сервера. Его стоит выбирать исходя из расположения, качества линии, пропускной способности и пинга.
Теперь запустите программу OpenVPN GUI от имени администратора в Windows 10. В противоположном случае просто не удастся подключиться к выбранному серверу.
- На панели задач в контекстном меню OpenVPN выберите Импорт конфигурации… В открывшемся окне проводника укажите расположение ранее загруженной конфигурации.
- После импорта можно смело выбирать пункт Подключиться. При необходимости можно импортировать несколько конфигураций. В таком случае подключений будет два или три.
Рекомендуем импортировать несколько разных конфигураций, после чего перейти к их тестированию. Для тестирования можно воспользоваться сервисами проверки скорости Интернета на компьютере Windows 10.
Если же перейти в расположение: C:\ Пользователи\ Имя_пользователя\ OpenVPN\ config, то можно увидеть, и при необходимости удалить, папки с ранее добавленными конфигурациями.
После подключения к определённому серверу весь трафик пользователя будет проходить через VPN. Таким образом, можно будет играть в игры или посещать сайты, заблокированные в регионе. Скорость — далеко не его сильная сторона, но если у Вас скоростной Интернет, то скорость будет приемлемой. Как правило, скорость интернета падает из-за сильного уровня шифрования в OpenVPN.
Заключение
При необходимости для работы сами используем OpenVPN. На данный момент OpenVPN считается лучшим VPN-протоколом. На практике все наши высказывания подтверждаются. После первого использования, даже бесплатных серверов, сложно использовать другие VPN-клиенты. В принципе и без дополнительного программного обеспечения можно настроить VPN соединение на Windows 10.
Создание сертификата клиента и пары ключей
Нам нужно будет создать каталог для хранения сертификатов и ключей клиентов. Обязательно предоставьте разрешение пользователю, не являющемуся пользователем root.
Сгенерируйте запрос на сертификат клиента:
Ответ в терминале:
Теперь скопируйте клиентский ключ в каталог client-configs:
Скопируйте файл запроса сертификата клиента на сервер центра сертификации:
На сервере центра сертификации импортируйте CSR:
Теперь мы должны подписать запрос для клиента, набрав:
Ответ в терминале:
Скопируйте сертификат клиента на сервер openvpn:
Теперь на сервере openvpn нам нужно скопировать все клиентские файлы в каталог клиента, который мы создали ранее.
Убедитесь в том, что пользователь не является root и имеет разрешения на файлы.
Примечание
В последнее время к нам на электронную почту приходит большое количество вопросов в стиле «Вопрос по Вашей статье http://compkaluga.ru/articles/172/ на шаге 5 после команды clean-all в результате у Вас копируется какой-то файл. У меня этого не происходит. команда openvpn —genkey —secret %KEY_DIR%\ta.key создает мне ключ а вот далее build-dh иbuild-ca не дают результата (cmd.exe пишет, что команда не является внутренней или внешней… или исполняемым файлом) файл ca.key не создается. Что я мог сделать не так?».
Основной смысл которых сводится к вашей же невнимательности. Проблема при запуске clean-all, build-key и других команд заключается в том, что при установке OpenVPN вы не поставили галочки OpenSSL Utilities и OpenVPN RSA Certificate Management Scripts (их нужно ставить обязательно!)
Обратите внимание на скриншот с окном выбора компонентов в начале статьи, там эти галочки стоят!