Porta Android oficial da popular solução VPN StrongSwan.
# RECURSOS E LIMITAÇÕES #
* Usa a API VpnService apresentada pelo Android 4+. Os dispositivos de alguns fabricantes parecem não ter suporte para isso - o cliente VPN strongSwan não funciona nesses dispositivos!
* Usa o protocolo de troca de chaves IKEv2 (IKEv1 *não* é compatível)
* Usa IPsec para tráfego de dados (L2TP *não* é suportado)
* Suporte total para conectividade e mobilidade alteradas através do MOBIKE (ou reautenticação)
* Suporta autenticação EAP de nome de usuário/senha (nomeadamente EAP-MSCHAPv2, EAP-MD5 e EAP-GTC), bem como autenticação de chave privada/certificado RSA/ECDSA para autenticar usuários, EAP-TLS com certificados de cliente também é suportado
* A autenticação combinada RSA/ECDSA e EAP é suportada usando duas rodadas de autenticação conforme definido na RFC 4739
* Os certificados do servidor VPN são verificados em relação aos certificados CA pré-instalados ou instalados pelo usuário no sistema. Os certificados de CA ou de servidor usados para autenticar o servidor também podem ser importados diretamente para o aplicativo.
* A fragmentação IKEv2 é suportada se o servidor VPN suportar (o StrongSwan faz isso desde 5.2.1)
* O túnel dividido permite enviar apenas determinado tráfego através da VPN e/ou excluir tráfego específico dela
* VPN por aplicativo permite limitar a conexão VPN a aplicativos específicos ou excluí-los de usá-la
* A implementação IPsec atualmente suporta os algoritmos AES-CBC, AES-GCM, ChaCha20/Poly1305 e SHA1/SHA2
* As senhas são atualmente armazenadas como texto não criptografado no banco de dados (somente se armazenadas com um perfil)
* Perfis VPN podem ser importados de arquivos
* Suporta configurações gerenciadas por meio de gerenciamento de mobilidade empresarial (EMM)
Detalhes e um changelog podem ser encontrados em nossos documentos: https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html
# PERMISSÕES #
* READ_EXTERNAL_STORAGE: Permite importar perfis VPN e certificados CA de armazenamento externo em algumas versões do Android
* QUERY_ALL_PACKAGES: necessário no Android 11+ para selecionar aplicativos para ex-/incluir em perfis VPN e no caso de uso EAP-TNC opcional
# EXEMPLO DE CONFIGURAÇÃO DE SERVIDOR #
Exemplos de configurações de servidor podem ser encontrados em nossos documentos: https://docs.strongswan.org/docs/5.9/os/androidVpnClient.html#_server_configuration
Observe que o nome do host (ou endereço IP) configurado com um perfil VPN no aplicativo *deve* estar contido no certificado do servidor como extensão subjectAltName.
# OPINIÃO #
Publique relatórios de bugs e solicitações de recursos via GitHub: https://github.com/strongswan/strongswan/issues/new/choose
Se fizer isso, inclua informações sobre o seu dispositivo (fabricante, modelo, versão do sistema operacional, etc.).
O arquivo de log gravado pelo serviço de troca de chaves pode ser enviado diretamente do aplicativo.