Fundadores Daniel Simoes Postado 23 Outubro, 2023 Fundadores Compartilhar Postado 23 Outubro, 2023 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... 26 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link para o comentário Compartilhar em outros sites More sharing options...
Fundadores Daniel Simoes Postado 7 Dezembro, 2023 Autor Fundadores Compartilhar Postado 7 Dezembro, 2023 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 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 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 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 8 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link para o comentário Compartilhar em outros sites More sharing options...
Fundadores Daniel Simoes Postado 18 Janeiro Autor Fundadores Compartilhar Postado 18 Janeiro Para Linux, veja essa contribuição: Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link para o comentário Compartilhar em outros sites More sharing options...
Fundadores Daniel Simoes Postado 5 Abril Autor Fundadores Compartilhar Postado 5 Abril 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/ 3 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts