Ir para conteúdo
  • Cadastre-se

dev botao

ACBr agora é compatível com OpenSSL 3.x


Recommended Posts

  • Fundadores

Ajustamos os fontes do ACBr, para que eles fiquem compatíveis com o OpenSSL 3.x... Os ajustes já estão no SVN

 

Como essas mudanças são feitas no núcleo de comunicação segura do ACBr, agradecemos a ajuda nos testes, e por favor reportem se notarem algo estranho, mesmo no uso de versões mais antigas, como o OpenSSL 1.1.1

O que é o OpenSSL ?

O OpenSSL é uma famosa biblioteca usada para comunicação segura e criptografia... no ACBr, usamos ela para vários de nossos componentes que usam HTTPS, como por exemplo, o ACBrPIXCD...

Página do OpenSSL https://www.openssl.org/

Você pode encontrar as DLLs do OpenSSL, em nosso SVN: http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/

 

Porque fizemos essa mudança ?

  • Recentemente o OpenSSL passou por um processo de refatoração, o que gerou a série 3.x... e as versões anteriores, estão sendo descontinuadas, e deixarão de receber correções de segurança e novas melhorias
  • Suporte a protocolos mais Seguros, como TLS 1.3
  • Em ambientes Linux, o OpenSSL 3.x já é instalado por padrão, e é difícil fazer o downgrade, para a versão 1.1.x

 

O que muda nos meus fontes ?

Esperamos que nenhuma modificação seja necessária nos seus fontes.

Nossa implementação é compatível com OpenSSL 0.9.x a 3.x, ou seja, os fontes do ACBr, tentam detectar a DLL mais nova do OpenSSL de forma automática....

Geralmente a biblioteca será procurada primeiro, na mesma pasta da Aplicação ou no Path do Sistema Operacional, dando sempre preferência as DLLs das versões mais novas... Ou seja, ele primeiro procurará pela DLL da versão 3.x, e depois da versão 1.1.x, 1.0.x, 0.9.x e assim por diante

 

Como posso saber, qual DLL do OpenSSL o ACBr carregou ?

Use as linhas abaixo, para ver a Versão e o Path completo, das DLLs carregadas na memória

   mResp.Lines.Add('Versão OpenSSL');
   mResp.Lines.Add( OpenSSLExt.OpenSSLVersion(0) );
   mResp.Lines.Add( ACBrOpenSSLUtils.OpenSSLFullVersion );
   mResp.Lines.Add( OpenSSLExt.SSLUtilFile );  
   mResp.Lines.Add( OpenSSLExt.SSLLibFile );
   mResp.Lines.Add('------------------------------');   

 

Como atualizo a DLL para a versão 3.x ?

Basta copiar as novas DLLs, para a mesma pasta do seu .exe...

Se você compila seu sistema em 32 bits, aqui estão as DLLs:  http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/3.1.3/x86/

Nota: mesmo que o Windows seja 64 bits, a DLL precisa acompanhar a arquitetura em que seu .EXE é compilado

 

Eu preciso atualizar ?

Não necessariamente, mas recomendamos que você use no mínimo a versão 1.1.x, por motivos de segurança

Não creio que a atualização, gere mais performance, no uso da biblioteca...

 

 

  • Curtir 26
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Fundadores

Notamos vários relatos, de usuários que não estavam conseguindo carregar alguns certificados, usando a versão 3.x.x do OpenSSL, e sendo que esse mesmo certificado, é carregado normalmente, na versão 1.1.x do OpenSSL

Ocorre que a versão 3.x do OpenSSL, tornou "legado" algumas rotinas de criptografia...
E provavelmente os certificados que causavam erro, estavam usando essas rotinas legadas...

Esse link nos ajudou com a solução que aplicamos nos fontes do ACBr, e dá mais detalhes sobre o problema:
https://github.com/openssl/openssl/issues/19368

A modificação que aplicamos depende que o OpenSSL consiga carregar a biblioteca "legacy", portanto a mesma deve estar na mesma pasta das demais...
Você pode ver as modificações, nesse histórico de Commit [r31480]

Essa biblioteca "legacy.dll" agora é distribuída na pasta: ACBr\DLLs\OpenSSL\3.1.3\x64

Observe que não encontramos uma distribuição do OpenSSL, que tenha a "legacy.dll" para 32 bits... portanto, a carga dessa DLL, no Windows, só irá funcionar, se você estiver compilando o seu executável em 64 bits...

Abaixo estão algumas dicas, se você estiver com problemas ao ler o Certificado, usando OpenSSL 3

  1. Verifique se a biblioteca "legacy" está na mesma pasta das demais DLLs do OpenSSL 3
    - Lembrando que conforme explicamos acima, ela está disponível, apenas para 64 bits
    - A pasta com todas as DLLs ficaria algo como:  "libcrypto-3-x64.dll, libssl-3-x64.dll, legacy.dll"
    - Você não conseguirá usar as bibliotecas de 64 bits, se estiver compilando a sua aplicação em 32 bits
     
  2. Instale o certificado no Windows, e Exporte ele novamente
    Isso fará com que o Windows reescreva o certificado, utilizando rotinas de criptografia mais modernas, e com isso, permitindo o uso dele no OpenSSL 3.x
     
  3. Volte para versão 1.1.x.x do OpenSSL...
    Essa versão da biblioteca OpenSSL provavelmente continuará sendo utilizada, por muitos e muitos anos
  • Curtir 8
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • 2 meses depois ...
  • Fundadores

Esse link descreve bem o problema de incompatibilidade do OpenSSL 3.x com os antigos certificados

https://www.practicalnetworking.net/practical-tls/openssl-3-and-legacy-providers/

  • Curtir 3
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.