Настройка OpenVPN в iOS

от автора

Тихо и незаметно прошел релиз клиента OpenVPN для iOS. Для многих, в том числе и для меня, это может стать последней причиной для отказа от Jailbreak’а. Для тех, кто желает более подробно узнать о возможностях клиента на текущий момент, а так же о подводных камнях настройки, добро пожаловать под хабракат.

Скачать клиент OpenVPN Connect можно из iTunes На текущий момент, по информации с форума разработчиков, он доступен в магазинах всех стран, кроме Франции. Задержки связаны с необходимостью получения Encryption Import License и носят временных характер.

Ограничения, присутствующие в приложении:

  • Размер файла настроек не может превышать 256KB. Тем не менее, этого должно быть достаточно даже для хранения файла конфигурации в унифицированном ovpn формате, о котором будет сказано чуть позже.
  • Поддерживаются только tun соединения из-за ограничений iOS VPN API.
  • Не поддерживается ряд директив в конфигурационном файле: dev tap, tls-remote, fragment, mssfix.
  • Не поддерживается работа клиентов без сертификатов. Эта возможность появится в будущем релизе.
  • Возможно использовать только шифрование AES или Blowfish. Связано это с тем, что данные алгоритмы больше адаптированы под архитектуру ARM. Таким образом достигается большая энергоэффективность.
  • Использование HTTP прокси настраивается на уровне настроек приложения, а не в конфигурационном файле.
  • Использование контейнеров PKCS#12 возможно только, если они импортированы в связку ключей iOS. Такое поведение является настоятельной рекомендацией разработчиков, потому, что в отличие от хранения закрытого ключа прямо в ovpn файле, оно обеспечивает более высокий уровень сохранности секретных данных. Особенно в случае использования устройства с jailbreak.

Перейдем к настройке нашего OpenVPN. Сначала серверная часть (пример приведен для Linux). Используем easy-rsa для генерации сертификатов и закрытых ключей удостоверяющего центра (CA), сервера (server.crt и server.key) и клиента (ios.crt и ios.key). Так же сгенерируем параметры алгоритма Диффи-Хелмана.

./vars ./build-ca ./build-key-server server ./build-key ios ./build-dh 

Для большей безопасности так же сгенерируем ключ TLS аутентификации.

openvpn --genkey --secret ta.key 

Общий вид конфигурации сервера представлен ниже:

proto udp dev tun0  topology subnet	  option server "10.19.2.0 255.255.255.0"  push "dhcp-option DNS 8.8.8.8" push "route 10.19.1.0 255.255.255.0"  keepalive "10 120"  cipher AES-128-CBC comp_lzo 1  persist_key 1 persist_tun 1  ca ca.crt cert server.crt key server.key  dh dh1024.pem  tls-auth "ta.key 0" 

Теперь перейдем к конфигурации клиента. Наиболее важный момент настройки заключается в том, что закрытый ключ клиента должен быть в формате 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.
Для организации файла конфигурации клиента будем использовать унифицированный ovpn формат. Общий вид конфигурации представлен ниже.

client tls-client dev tun proto tcp  remote адрес_сервера resolv-retry infinite  key-direction 1  cipher AES-128-CBC  persist-tun persist-key  comp-lzo verb 3  redirect-gateway  <tls-auth> -----BEGIN OpenVPN Static key V1----- #содержимое ta.key -----END OpenVPN Static key V1----- </tls-auth>  <ca> -----BEGIN CERTIFICATE----- #содержимое ca.crt -----END CERTIFICATE----- </ca>  

Полученный файл можно импортировать на ваше iOS устройство через iTunes (рекомендуемый вариант) или через электронную почту.

Полезные ссылки

OpenVPN HOWTO
OpenVPN Connect
OpenVPN Connect (iOS) forum

ссылка на оригинал статьи http://habrahabr.ru/post/168853/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *