Android + KSOAP2 + HTTPS = SSLHandshakeException

26/01/2017

2

Boa tarde pessoal.

Estou com uma duvida com relação à comunicação de uma aplicação Android com um WebService HTTPS.

Estou no processo de prototipação dessa comunicação, e no caso, é a comunicação da minha aplicação com o WebService da fazenda para fazer envio e protocolação de NFC-e. Já li bastante a documentação da propria NF-e, li vários conceitos sobre a comunicação via SOAP no Android, li sobre a lib KSOAP2. Fiz diversos testes com exemplos que encontrei na internet.

O grande problema, é que em todos os testes que fiz, morria na praia recebendo um SSLHandshakeException: Trust anchor for certification path not found.

Eu tenho um certificado digital A1 válido, que inclusive é usado para fazer a assinatura da NF-e. O problema é que mesmo registrando esse certificado num TrustManager do meu Android, ele ainda assim me retorna sempre essa Exception.

Li em alguns outros foruns que o certificado que deve ser passado para o Android, deve ser um certificado em formato .cer. Procurei na internet e encontrei uma forma de fazer a conversão do meu certificado .pfx que está no formato PKCS12 para um certificado DER ou PEM. Isso acabou me gerando vários arquivos .cer e um arquivo .key. Tentei enviar esses arquivos pro meu TrustManager, mas ainda assim caio na mesma Exception.

Também li que no Android, o certificado a ser enviado deve ser o CACERT, que seria o certificado "root". Eu realmente não entendi o que seria isso.

Tentei registrar o meu .pfx no dispositivo Android, manualmente mesmo, pelo SO. Consegui registrar, mas eu tentar a comunicação...mais uma vez o mesmo erro.

Vi que a DevMedia tem um artigo sobre o processo de utilização do KSOAP no Android, porém, o exemplo do artigo é de uma comunicação com HTTP, e não HTTPS.

Gostaria de saber se alguém da comunidade já teve alguma experiência com comunicação de dispositivo Android com WS SOAP protegido por protocolo SSL ou TLS.
Caso positivo, por favor, me dar um norte sobre para onde seguir.

Não postei meu código pois se trata de uma dúvida mais sobre compreensão conceitual e teórica do processo de comunicação com HTTPS. Mas se necessário, posto o codigo também.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar