Подключение через доменное имя
По умолчанию сервер использует самоподписанный сертификат со случайным именем, а ключи доступа ведут на его IP-адрес. Привяжите собственный домен с доверенным сертификатом, и подключение к серверу будет выглядеть как обычный просмотр веб-сайта.
Преимущества использования домена
Новые ключи будут содержать ваш домен. Приложения проверяют сертификат сервера так же, как обычный браузер. Если вы смените IP-адрес сервера, достаточно перенаправить домен, и ключи продолжат работать.
Ключи по-прежнему содержат IP-адреса сервера, поэтому при сбоях поиска по домену приложение подключится как обычно.
Перед началом
- Домен или поддомен под вашим управлением (например,
vpn.example.com). Используйте точное имя, а не wildcard-запись. - DNS-запись, указывающая на IP-адрес сервера: запись A (и AAAA при использовании IPv6). Направьте ее напрямую на сервер без проксирования через CDN.
- Для управляемого сервера: открытый TCP-порт
80на все время работы домена. Он необходим для проверки и регулярного автопродления сертификата.
На управляемом сервере
- В VpnHood! MANAGER откройте раздел Server Farms и выберите ферму. В блоке SSL / TLS Certificates нажмите Add, введите домен в поле Domain Name и нажмите Create. MANAGER создаст самоподписанный сертификат и откроет его.
- В разделе Signing выберите AutoSign. MANAGER запросит сертификат у Let's Encrypt через TCP-порт
80. После завершения статус Signature сменится на CA Signed, и MANAGER будет продлевать его автоматически. - Затем перейдите в Visibility и выберите PublicInToken. Теперь домен будет добавлен во все ключи фермы, а ее прежний сертификат получит статус Public.
Все новые ключи из MANAGER сразу содержат домен. Приложения со старыми ключами обновят их при подключении (опция Push token to clients включена по умолчанию). Не удаляйте старый сертификат фермы, пока все клиенты не обновятся.
Если проверка не удалась, причина появится в Signing, а статус после нескольких попыток сменится на Manual. Проверьте DNS-запись или доступность порта и снова выберите AutoSign.
Для проверки откройте ферму: в списке Access Points ваш домен должен стоять на первом месте.
На странице отдельного сервера тоже есть список SSL / TLS Certificates, но эти сертификаты действуют только на нем. Чтобы использовать домен во всех ключах, добавляйте его на уровне фермы.
На автономном сервере
Автономный сервер не может получить сертификат самостоятельно. Получите сертификат для домена в центре сертификации в формате PFX с закрытым ключом и замените им файл /opt/VpnHoodServer/storage/access/certificates/default.pfx, сохранив исходное имя.
Затем укажите пароль к файлу в параметре SslCertificatesPassword и задайте значение true для IsValidHostName (оба параметра находятся в блоке FileAccessManager файла /opt/VpnHoodServer/storage/appsettings.json). При новой установке этого файла нет: создайте его, и в дальнейшем сервер будет использовать его вместо исходных настроек.
Файл целиком: замените образец пароля на пароль от вашего сертификата
{
"FileAccessManager": {
"SslCertificatesPassword": "your-pfx-password",
"IsValidHostName": true
},
"ServerConfig": {
"LogAnonymizer": true,
"AddListenerIpsToNetwork": "*"
},
"LogLevel": "Information"
}
Сервер берет домен напрямую из сертификата, поэтому отдельная настройка для него не требуется.
Перезапустите сервер с помощью команды sudo systemctl restart VpnHoodServer (или sudo docker restart VpnHoodServer в Docker). Если пароль указан неверно, сервер не запустится, а в журнале появится ошибка The server could not start.
Ключи, созданные до изменений, перестанут работать, так как они привязаны к старому сертификату. Выведите каждый ключ заново и передайте пользователям новые версии: их параметры и статистика использования сохранятся. Идентификатор ключа (ID) — это имя его файла в папке /opt/VpnHoodServer/storage/access без расширения .token2.
Вывести список ключей и затем отобразить нужный ключ по его ID
sudo ls /opt/VpnHoodServer/storage/access
sudo /opt/VpnHoodServer/vhserver print 2b9d4a6e-1c3f-4e8a-9b7d-5f0e8c2a1d34
В Docker выполните ту же команду через sudo docker exec VpnHoodServer /app/vhsupervisor, аналогично vhserver gen.
Новые ключи содержат домен и больше не привязаны к конкретному файлу сертификата, поэтому они продолжат работать при его обновлении: просто замените файл сертификата и перезапустите сервер.