Использование ca, dh, crl, crt, значений ключей для подключения к VPN - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь подключить 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, но возникла та же проблема. Последний вопрос: есть ли проблемы при отправке этого приложения в магазин приложений?

...