Я пытаюсь подключить vpn, используя атрибуты ca, crl, crt, dh
, предоставленные ответом Api.
Итак, я безуспешно тестировал несколько решений.
Я использовал TunnelKit
с этой конфигурацией :
private func makeProtocol() -> NETunnelProviderProtocol {
let credentials = OpenVPN.Credentials("xxxx", "xxxx")
var sessionBuilder = OpenVPN.ConfigurationBuilder()
sessionBuilder.ca = ca
sessionBuilder.clientKey = key
sessionBuilder.clientCertificate = cert
sessionBuilder.cipher = .aes256cbc
sessionBuilder.compressionFraming = .compLZO
sessionBuilder.renegotiatesAfter = nil
sessionBuilder.hostname = "xx.xx.xx.xx"
sessionBuilder.endpointProtocols = [EndpointProtocol(.udp, 3333)]
sessionBuilder.usesPIAPatches = true
var builder = OpenVPNTunnelProvider.ConfigurationBuilder(sessionConfiguration: sessionBuilder.build())
builder.mtu = 1350
builder.shouldDebug = true
builder.masksPrivateData = false
let configuration = builder.build()
return try! configuration.generatedTunnelProtocol(
withBundleIdentifier: VPNConnectionHandler.Const.tunnelIdentifier,
appGroup: VPNConnectionHandler.Const.appGroup,
credentials: credentials
)
}
Ответ API:
"config": {
"vpnConfig": {
"client": "",
"dev": "tun",
"proto": "udp",
"port": "xxxx",
"resolv-retry": "infinite",
"cipher": "AES-256-CBC",
"redirect-gateway": "",
"key-direction": "1",
"remote-cert-tls": "server",
"auth-user-pass": "",
"nobind": "",
"persist-key": "",
"persist-tun": "",
"comp-lzo": "no",
"verb": "3"
},
"servers": [
{
"_id": "xxxx",
"ip": "xx.xx.xx.xx",
"ca": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----",
"crl": "-----BEGIN X509 CRL----- ... -----END X509 CRL-----",
"dh": "-----BEGIN DH PARAMETERS----- ... -----END DH PARAMETERS-----",
"crt": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----",
"key": "-----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY-----"
}
...
Конечно, каждый ключ (ip, ca, crl, dh, crt, key) содержит правильные значения (android app отлично работает с этой конфигурацией)
Я не могу понять, как ввести эти значения (crl, dh, crt, key) в конфигурацию TunnelKit
. Кто-нибудь сталкивается с этой проблемой? Есть ли другие решения или библиотеки для подключения к VPN-серверу с использованием этих параметров? Я также пробовал использовать родное решение Tunnel Packet Network Extension
, но возникла та же проблема. Последний вопрос: есть ли проблемы при отправке этого приложения в магазин приложений?