PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 25 → Consumo de um webservice com solicitação HTTPS, AuthIdentifier, API REST
Consumo de um webservice com solicitação HTTPS, AuthIdentifier, API REST
Iniciado por Boller, 05,oct. 2021 21:58 - No hay respuesta
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 05,octubre 2021 - 21:58
Blog de suporte técnico
https://blogs.pcsoft.fr/fr/consommation-webservice-requete-https-authidentifie-api-rest-permettre-echanges-https-application-executee-systeme-connait-certificat-racine-certificat-utilise-serveur-web/281474976710996/read.awp

Consumo de um webservice com solicitação HTTPS, AuthIdentifier, API REST: como permitir trocas HTTPS de um aplicativo executado em um sistema que não conhece o certificado raiz do certificado instalado no servidor web?

No blog ST
Tags: certificado, https, raiz, comunicação
05 de outubro de 2021

Publicado por Guillaume BAYLE

Princípio:
Quando uma aplicação, site ou serviço web deve realizar trocas em HTTPS, o certificado do servidor web contactado deve:
seja válido,
ter um certificado raiz conhecido pelas autoridades de certificação instalado no PC, Mac, telefone Android, tablet da Apple, o firmware de um objeto conectado (...), que executa o aplicativo.
Sem isso, a criptografia da conexão será impossível com, por exemplo, o seguinte retorno durante um HTTPSend, RESTsend, HTTPRequete (cf. FAQ 20558):
Erro 100138
Um erro de sistema foi detectado ao enviar a solicitação HTTP.
Detalhe do erro do sistema: falha no certificado SSL ou na verificação da chave SSH.

Exemplo concreto:
um aplicativo WINDEV Mobile no Android chama um serviço da web,
o serviço da web está hospedado em um servidor da web equipado com um certificado Let's Encrypt cujo certificado raiz é "ISRG Root X1" desde 30/09/2021,
dependendo da versão Android do dispositivo que executa o aplicativo:
Android anterior a 7.1.1 (dezembro de 2016): erro "verificação de certificado SSL ... falhou" porque essas versões mais antigas do Android não suportam o certificado raiz "ISRG Root X1",
Android 7.1.1 e todos os seguintes: a chamada é feita normalmente, o certificado raiz "ISRG Root X1" é conhecido.
Soluções:
Aqui estão as diferentes soluções que podem ser aplicadas quando o sistema do cliente não conhece o certificado raiz do servidor web:
Adicione no sistema cliente que está executando o aplicativo a autoridade de certificação que não é conhecida. Nas configurações do Android, iOS ou nas configurações do Windows, escolhas dedicadas permitem a adição de autoridades confiáveis ​​quando o editor não atualiza mais automaticamente.
Esta solução requer intervenção nas configurações de cada dispositivo ou estação de trabalho, após a obtenção do certificado raiz ausente.

Ou divulgue o certificado para o aplicativo:
obter o certificado de seu editor ou baixá-lo com um navegador do Windows,
adicione o certificado nos arquivos para implantar com o aplicativo. Este arquivo também pode ser integrado à biblioteca (arquivo WDL) do aplicativo.
chame a função AddTrustCertificate fornecendo a ela o certificado. A chamada pode ser feita a partir do código de inicialização do projeto ou, em qualquer caso, antes da execução da primeira solicitação HTTPS ao servidor.
Ou substitua o certificado no servidor da web por um novo cujo certificado raiz será conhecido por todos os sistemas que devem executar o aplicativo. No caso de um servidor hospedado em uma plataforma PCSCLOUD, a instalação do certificado será feita diretamente do painel após a solicitação de um CSR.

Bom saber :
Os certificados raiz são disponibilizados por seus editores em seus sites. Por exemplo, para Let's Encrypt:
https://letsencrypt.org/certificates/

Sempre é possível baixar o certificado raiz usado para criptografar as trocas com um servidor da web:
em um navegador no Windows, conecte-se a qualquer página do servidor em HTTPS para exibir seu certificado ("ISRG Root X1" por exemplo, pode ser qualquer outro certificado ou um certificado automático - assinado para uso interno):


na janela do sistema de exibição de certificado, selecione "Caminho de certificação",


selecione o certificado raiz e clique em "Exibir o certificado":


em seguida, em "Detalhes" do botão de certificado "Copiar para um arquivo":


execute o assistente de exportação para obter um arquivo .cer. Este arquivo contém o certificado raiz. Ele pode então ser adicionado nas autoridades de certificação do sistema cliente ou usado com a função TrustCertificateAdd.

Caso excepcional de "assinatura cruzada":
Pode acontecer que um certificado contenha mais de um certificado raiz. Este foi o caso dos certificados Let's Encrypt para gerenciar a transição do certificado raiz inicial "DST Root CA X3" para o certificado atual "ISRG Root X1". Nesse caso, o aplicativo que contata um servidor com tal certificado deve saber como encontrar o certificado correto nas cadeias de certificação, especialmente se uma delas for revogada. Este é o caso dos aplicativos WINDEV e WINDEV Mobile e dos sites e serviços da web WEBDEV da versão 25. Se a chamada for feita de uma versão anterior do framework, o primeiro certificado raiz encontrado deve ser válido e conhecido (consulte o parâmetro --preferred -chain "<root certificate>" nas etapas de geração de certificado.

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/