Restrição do TLS com APN Privada
O uso do TLS implica a configuração de um hostname, em vez de um IP, no parâmetro de endereço do servidor SiTef. Para que o componente de TLS possa atestar a autenticidade do servidor, esse hostname deve ser obrigatoriamente igual ao nome que consta no certificado TLS.
Devido a essa restrição, a comunicação TLS não pode ser utilizada no cenário GPRS com APN Privada. Isso porque, em geral, não há resolução de hostname nesse cenário — normalmente usa-se somente os IPs da VPN — o que resulta em falha na verificação de autenticidade do certificado TLS do servidor. Portanto, se o terminal utilizar um chip GPRS com APN Privada, a aplicação não poderá utilizar a configuração TLS.
Caso a aplicação realize a alternância de diferentes formas de comunicação que incluam tanto a Internet pública — onde o uso de TLS é obrigatório por norma — como APN Privada — onde é preciso que exista uma VPN segura —, a aplicação precisará desenvolver um mecanismo de chaveamento da configuração para ligar e desligar a configuração TLS de acordo com o canal de comunicação.
Em outras palavras, se o terminal estiver utilizando a comunicação via Internet pública (WiFi, Ethernet, APN Pública), a aplicação deve ativar a configuração TLS e definir o endereço do Sitef de acordo (i.e. usar o hostname em vez de IP). E se o terminal estiver utilizando a comunicação com APN Privada com VPN, a aplicação deve desativar a configuração TLS e definir o endereço do SiTef de acordo (i.e. usar o IP da VPN). Neste caso, é importante certificar-se de que as regras de segurança aplicadas ao ambiente da aplicação permitem que o TLS seja desligado.
A aplicação pode implementar esse comportamento da maneira mais adequada a estrutura do seu código-fonte. Mas, em linhas gerais, o procedimento para obter esse comportamento deve seguir a seguinte lógica básica:
- Antes do início de cada transação, verificar qual meio de comunicação está ativo no momento.
- Se a comunicação exigir TLS (se for WiFi, Ethernet ou Celular com APN Pública), habilitar TLS e definir o endereço do SiTef como o hostname do SiTef.
- Se a comunicação não suportar TLS (Celular com APN Privada), desabilitar TLS e definir endereço do SiTef como o IP do SiTef na VPN.
- Inicia a transação.
A seguir, ilustramos essa lógica em trechos de código considerando os cenários de integração com CliSiTef e com m-SiTef.