VPN — различия между версиями
Litvinyuk (обсуждение | вклад) (→Создание ключевой пары для клиента.) |
Litvinyuk (обсуждение | вклад) (→Создание ключевой пары для клиента.) |
||
Строка 56: | Строка 56: | ||
</tls-auth> | </tls-auth> | ||
− | === Создание | + | === Создание ключей === |
− | + | Скопируем easy-rsa в каталог /etc/openvpn. Это гарантирует, что любые изменения в сценарии не будут потеряны при обновлении пакета. | |
− | |||
− | |||
− | |||
− | |||
− | ----- | + | mkdir /etc/openvpn/easy-rsa/ |
+ | cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/ | ||
+ | |||
+ | Отредактируйте /etc/openvpn/easy-rsa/vars | ||
+ | |||
+ | ==== Ключевая пара удостоверяющего центра ==== | ||
+ | |||
+ | Выполнить от пользователя имеющего права записи в /etc/openvpn/easy-rsa/keys/ | ||
+ | |||
+ | cd /etc/openvpn/easy-rsa | ||
+ | ./clean-all | ||
+ | source vars | ||
+ | ./build-ca | ||
+ | |||
+ | После выполнения последней команды будут записаны файлы открытой и закрытой части ключа удостоверяющего центра в /etc/openvpn/easy-rsa/keys/ | ||
+ | |||
+ | ==== Ключевая пара сервера к которому мы будем подключаться ==== | ||
+ | |||
+ | ./build-key-server myservername | ||
+ | |||
+ | где myservername имя файла ключа. | ||
+ | |||
+ | ==== Файл параметров Диффи-Хэлмана ==== | ||
+ | |||
+ | ./build-dh | ||
+ | |||
+ | ==== Ключ TLS аутентификации ==== | ||
+ | |||
+ | openvpn --genkey --secret ta.key | ||
+ | |||
+ | ==== Ключевая пара клиента ==== | ||
− | |||
− | |||
* Импортировать из файла vars переменные окружения командой | * Импортировать из файла vars переменные окружения командой | ||
source ./vars | source ./vars | ||
* Создать ключ клиента client1 командой | * Создать ключ клиента client1 командой | ||
./build-key client1 | ./build-key client1 | ||
+ | |||
+ | После создания пары ключей клиента, на клиент, кроме файла настройки, необходимо также передать по защищённому каналу связи открытую и закрытую часть ключей клиента, открытую часть ключа удостоверяющего центра и ключ TLS аутентификации. | ||
+ | |||
+ | * Отозвать ключ клиента | ||
+ | cd /etc/openvpn/easy-rsa | ||
+ | source ./vars | ||
+ | ./revoke-full client1 | ||
+ | |||
+ | ===== Особенности настройки OpenVPN в iOS ===== | ||
+ | |||
+ | Наиболее важный момент настройки заключается в том, что закрытый ключ клиента должен быть в формате RSA. Если вы делали все согласно инструкции на сайте OpenVPN, или у вас уже были готовые ключи, то их необходимо предварительно конвертировать. Для этого можно использовать openssl: | ||
+ | |||
+ | openssl rsa -in ios.key -out ios_rsa.key | ||
+ | |||
+ | |||
+ | Соберем все необходимые ключи и сертификаты в один PKCS#12 контейнер: | ||
+ | |||
+ | openssl pkcs12 -export -in ios.crt -inkey ios_rsa.key -certfile ca.crt -name ios -out ios.p12 | ||
+ | |||
+ | |||
+ | Обязательно укажите пароль для экспорта. Установить контейнера без пароля на экспорт в связку ключей iOS не получится. Полученный контейнер передаем на устройство через электронную почту или Safari. | ||
+ | |||
+ | Скачать клиент OpenVPN Connect можно из iTunes. | ||
+ | Ограничения, присутствующие в приложении: | ||
+ | * Размер файла настроек не может превышать 256KB. Тем не менее, этого должно быть достаточно даже для хранения файла конфигурации в унифицированном ovpn формате, о котором будет сказано чуть позже. | ||
+ | * Поддерживаются только tun соединения из-за ограничений iOS VPN API. | ||
+ | * Не поддерживается ряд директив в конфигурационном файле: dev tap, tls-remote, fragment, mssfix. | ||
+ | * Не поддерживается работа клиентов без сертификатов. Эта возможность появится в будущем релизе. | ||
+ | * Возможно использовать только шифрование AES или Blowfish. Связано это с тем, что данные алгоритмы больше адаптированы под архитектуру ARM. Таким образом достигается большая энергоэффективность. | ||
+ | * Использование HTTP прокси настраивается на уровне настроек приложения, а не в конфигурационном файле. | ||
+ | * Использование контейнеров PKCS#12 возможно только, если они импортированы в связку ключей iOS. Такое поведение является настоятельной рекомендацией разработчиков, потому, что в отличие от хранения закрытого ключа прямо в ovpn файле, оно обеспечивает более высокий уровень сохранности секретных данных. Особенно в случае использования устройства с jailbreak. | ||
+ | |||
+ | === Ссылки === | ||
+ | |||
+ | [https://ru.wikipedia.org/wiki/VPN Что такое VPN] | ||
+ | [http://wiki.dieg.info/openvpn Статья об OpenVPN на wiki "IT рабочие заметки"] | ||
+ | [https://help.ubuntu.com/lts/serverguide/openvpn.html Статья на wiki Ubuntu] | ||
+ | [https://habrahabr.ru/post/168853/ "Настройка OpenVPN в iOS" на habrahabr.ru] |
Версия 13:58, 13 декабря 2016
Содержание
OpenVPN
(англ. Virtual Private Network — виртуальная частная(закрытая) сеть)
Файл настройки сервера
Минимально рабочий вариант.
port 1194 proto udp dev tun topology subnet ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/OpenVPN_srv.crt key /etc/openvpn/easy-rsa/keys/OpenVPN_srv.key # This file should be kept secret dh /etc/openvpn/easy-rsa/keys/dh2048.pem server 10.8.0.0 255.255.255.0 push "route 10.8.0.0 255.255.255.0" push "route 192.168.200.0 255.255.255.0" push "route 192.168.7.0 255.255.255.0" push "dhcp-option DNS 192.168.7.7" push "dhcp-option DNS 80.254.107.129" push "dhcp-option DOMAIN vlgd61.ru" keepalive 10 120 tls-auth ta.key 0 # This file is secret comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3 mute 20
Файл настройки клиента
Минимально рабочий вариант.
client dev tun proto udp remote 80.254.107.129 1194 resolv-retry infinite nobind key-direction 1 persist-key persist-tun comp-lzo verb 3 mute 20 float <ca> Содержимое сертификата центра сертификации. </ca> <tls-auth> Содержимое TLS ключа. Должно содержаться в секрете! </tls-auth>
Создание ключей
Скопируем easy-rsa в каталог /etc/openvpn. Это гарантирует, что любые изменения в сценарии не будут потеряны при обновлении пакета.
mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
Отредактируйте /etc/openvpn/easy-rsa/vars
Ключевая пара удостоверяющего центра
Выполнить от пользователя имеющего права записи в /etc/openvpn/easy-rsa/keys/
cd /etc/openvpn/easy-rsa ./clean-all source vars ./build-ca
После выполнения последней команды будут записаны файлы открытой и закрытой части ключа удостоверяющего центра в /etc/openvpn/easy-rsa/keys/
Ключевая пара сервера к которому мы будем подключаться
./build-key-server myservername
где myservername имя файла ключа.
Файл параметров Диффи-Хэлмана
./build-dh
Ключ TLS аутентификации
openvpn --genkey --secret ta.key
Ключевая пара клиента
- Импортировать из файла vars переменные окружения командой
source ./vars
- Создать ключ клиента client1 командой
./build-key client1
После создания пары ключей клиента, на клиент, кроме файла настройки, необходимо также передать по защищённому каналу связи открытую и закрытую часть ключей клиента, открытую часть ключа удостоверяющего центра и ключ TLS аутентификации.
- Отозвать ключ клиента
cd /etc/openvpn/easy-rsa source ./vars ./revoke-full client1
Особенности настройки OpenVPN в iOS
Наиболее важный момент настройки заключается в том, что закрытый ключ клиента должен быть в формате RSA. Если вы делали все согласно инструкции на сайте OpenVPN, или у вас уже были готовые ключи, то их необходимо предварительно конвертировать. Для этого можно использовать openssl:
openssl rsa -in ios.key -out ios_rsa.key
Соберем все необходимые ключи и сертификаты в один PKCS#12 контейнер:
openssl pkcs12 -export -in ios.crt -inkey ios_rsa.key -certfile ca.crt -name ios -out ios.p12
Обязательно укажите пароль для экспорта. Установить контейнера без пароля на экспорт в связку ключей iOS не получится. Полученный контейнер передаем на устройство через электронную почту или Safari.
Скачать клиент OpenVPN Connect можно из iTunes. Ограничения, присутствующие в приложении:
- Размер файла настроек не может превышать 256KB. Тем не менее, этого должно быть достаточно даже для хранения файла конфигурации в унифицированном ovpn формате, о котором будет сказано чуть позже.
- Поддерживаются только tun соединения из-за ограничений iOS VPN API.
- Не поддерживается ряд директив в конфигурационном файле: dev tap, tls-remote, fragment, mssfix.
- Не поддерживается работа клиентов без сертификатов. Эта возможность появится в будущем релизе.
- Возможно использовать только шифрование AES или Blowfish. Связано это с тем, что данные алгоритмы больше адаптированы под архитектуру ARM. Таким образом достигается большая энергоэффективность.
- Использование HTTP прокси настраивается на уровне настроек приложения, а не в конфигурационном файле.
- Использование контейнеров PKCS#12 возможно только, если они импортированы в связку ключей iOS. Такое поведение является настоятельной рекомендацией разработчиков, потому, что в отличие от хранения закрытого ключа прямо в ovpn файле, оно обеспечивает более высокий уровень сохранности секретных данных. Особенно в случае использования устройства с jailbreak.
Ссылки
Что такое VPN Статья об OpenVPN на wiki "IT рабочие заметки" Статья на wiki Ubuntu "Настройка OpenVPN в iOS" на habrahabr.ru