Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2272 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá!

Antes de mais nada, o objetivo desse tópico não é cobrar nenhuma solução célere para o caso. Antes porém, abrir espaço para que possamos, juntos, encontrar um modo de resolver o problema.

Primeiramente é importante salientar que o ambiente para simular o problema deve ser estritamente o seguinte:

1) Lib: OpenSSL

2) webservice de Goiás

3) Ambiente de homologação.

Bom, venho há algum tempo tentando encontrar alguma solução para contornar o erro obtido ao tentar a requisição de um simples status de serviço, por exemplo, usando a configuração mencionada acima.

Na imagem, vemos a mensagem de erro retornada:

2054226743_Capturadetelade2018-09-0622-54-22.png.cfc9bc20433429febd8e3cad738dfc89.png

Vou ressaltar novamente que o erro acontece no ambiente de homologação...

Em produção, tudo ok, como pode ser observado abaixo:

14397036_Capturadetelade2018-09-0622-54-49.png.95c918f436d58b9106bb3ff49e497b29.png:

Eu já li praticamente todos os tópicos do fórum sobre esse erro e outros parecidos...

Não tenho como garantir (ainda), mas em alguns casos, citam como justificativa que isso ocorre porque o servidor (GO) redireciona para um site não seguro. Porém, eu acredito que isso não procede.

O quê eu acredito que está acontecendo:

1) A mensagem de erro é bem clara: "alert unknow CA"  (Isso não nos quer dizer que o servidor espera, na requisição, a definição de um CA???)

2) A nota abaixo é antiga, mas acho que está sendo aplicada, no entanto, na nota os ambientes estão trocados... (o ambiente de homologação é que exige a cadeia completa):

1842348676_Capturadetelade2018-09-0623-13-13.png.64d5a1a3a39abb46a98e4d52c6387208.png

No entanto, tentei fazer uma inspeção nos servidores e obtive o seguinte:

Homologação:

1085165061_Capturadetelade2018-09-0623-12-01.thumb.png.4b5e4622b93286e9277aa4dfef897123.png

Produção:

673881045_Capturadetelade2018-09-0623-16-56.png.5691ea95dbb5f0d0d813b38f3c3cb73b.png

Não consigo definir ao  certo, pelo resumo qual é a diferença que provoca esse erro...

Contudo, sei que usando outras bibliotecas, como por exemplo, winCrypt, não se esbarra nesse erro. Ou seja, isso é resolvido aqui do lado cliente.

Logo, penso que podemos atacar o bind da openssl (pascal) que o ACBr usa. Já li e reli todo o arquivo, mas o meu conhecimento em C é muito raso e eu ainda não consegui descobrir qual  chamada deveria ser alterada...

Ainda tenho a preocupação da incerteza de isso ser possível usando a OpenSSL 1.0.x. Talvez a solução fosse migrar para a OpenSSL 1.1.x logo, embora sei que a compatibilidade ficaria toda comprometida o que acarretaria um retrabalho hercúleo... Nesse caso, até deveria se pensar na possibilidade oferecer suporte a uma outra lib (quem sabe gnuTLS - que NMHO parece ser mais evoluída e estável...).

Resumindo: Sei que temos problemas nesse sentido, mas estou muito motivado a encontrar alguma solução. Se alguém puder acrescentar alguma informação a respeito disso, tenho certeza de que iremos progredir.

Ah! Por favor, desconsiderem sugestões de "usa winCrypt e etc...", pois o ambiente não se limita ao windows.

Bem! Desculpe pelo tópico extenso e carregado de imagens, mas não consegui ser mais sucinto.

Ps.: Senhores moderadores, confesso que fiquei muito em dúvida sobre onde postar esse tópico. Se esse não for o lugar adequado, sintam-se livres para movê-lo e desculpem-me por isso.

 

 

  • Solution
Postado

O problema é que o servidor de homologação de GO usa certificado Self-Signed, ou seja não usa um certificado valido, por isso o openssl tem problemas com ele, teria que achar onde e como passar algo para contornar esta verificação, pessoalmente sou contra pois abre uma brecha de segurança.

No arquivo ACBrDFeHttpOpenSSL.pas na função ConfigurarHTTP tem uma linha comentada que é sobre verificar ou não o certificado, descomentar ela deve resolver seu problema.

  • Curtir 1

 

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.