Скачать клиент 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 (рекомендуемый вариант) или через электронную почту.
Полезные ссылки
ссылка на оригинал статьи http://habrahabr.ru/post/168853/
Добавить комментарий