Jump to content

dev botao

Flexibilizar OpenSSL e TLS1.2


  • 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

  • Membros Pro

Olá a todos,

Graças a dica do Daniel é possível usar o OpenSSL e TLS1.2: 

Mas o problema, pelo o que eu entendi, é que tenho que compilar um executável se quiser usar o TLS1.2/NFe4.0,e outro para usar o padrão atual para o NFe3.10, fazendo as alterações devidas no ACBr.inc {.$DEFINE USE_MINGW}.

Ninguém teria um código ou sugestão para eu tentar flexibilizar isso? Dessa forma eu teria a possibilidade, com o mesmo executável, de configurar o uso para a NFe3.10 ou NFe4.00, o que seria muito útil quando eu for migrar as versões nos clientes.

Desde já agradeço a atenção de todos.

Link to comment
Share on other sites

  • Membros Pro
1 hora atrás, José M. S. Junior disse:

Bom dia,

Não precisa compilar executáveis diferentes, basta alterar o tipo de SSL, quando alterar a versão da NFe. Ex:

ACBrNFe1.SSL.SSLType := LT_TLSv1_2;

Bom dia José, tudo bom?

Então meu amigo, meu aplicativo emissor de NFC-e já permite que o próprio usuário altere o tipo do SSLType conforme sua dica acima, mas creio que somente isso não bastará, eu acho que você não está levando em consideração a necessidade, de acordo com o post do Daniel que mencionei no início, de precisar alterar o arquivo ACBr.inc no que diz respeito ao uso ou não do TLS 1.2.

Observe que ao usar o NFe 4.0/TLS 1.2 tenho que compilar com o ACBr.inc usando {$DEFINE USE_MINGW} sem o ponto, e usando a NFe 3.10 tenho que compilar com o ACBr.inc usando o {.$DEFINE USE_MINGW} com o ponto.

Ou eu compreendi errado???

Link to comment
Share on other sites

  • Moderadores

Você precisa usar OpenSSL compilada com a MinGW para funcionar TLS 1.2 (A partir da NFe 4.0). Mas os tipos anteriores de SSL mantém a compatibilidade com essas novas DLLs, bastando altera-las conforme exemplo acima.

  • Like 1
Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link to comment
Share on other sites

  • Membros Pro
5 horas atrás, José M. S. Junior disse:

Você precisa usar OpenSSL compilada com a MinGW para funcionar TLS 1.2 (A partir da NFe 4.0). Mas os tipos anteriores de SSL mantém a compatibilidade com essas novas DLLs, bastando altera-las conforme exemplo acima.

Sim... Mas quero usar a OpenSSL, pois a vantagem é que não precisarei migrar o Windows XP em meus clientes.

Link to comment
Share on other sites

  • Fundadores

Ok.. dpendera da biblioeca que você usa para assinar o XML...

Se você usa a xsXMLSec... então precisa ajustar o ACBr.INC para compilação com as DLLs da MinGW...

Porém  se você usa a xsLibXML2 e não a xsXMLSec, então não precisará ajustar para compatibilização com a MinGW... e poderia ainda remover as dependências das DLLs da XMLSec, usando a diretiva DFE_SEM_XMLSEC no ACBr.inc

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 to comment
Share on other sites

  • Membros Pro
1 hora atrás, Daniel Simoes disse:

Ok.. dpendera da biblioeca que você usa para assinar o XML...

Se você usa a xsXMLSec... então precisa ajustar o ACBr.INC para compilação com as DLLs da MinGW...

Porém  se você usa a xsLibXML2 e não a xsXMLSec, então não precisará ajustar para compatibilização com a MinGW... e poderia ainda remover as dependências das DLLs da XMLSec, usando a diretiva DFE_SEM_XMLSEC no ACBr.inc

Então consigo usar OpenSSL + TLS 1.2 no Windows XP sem mexer no ACBr.inc apenas marcando xsLibXML2???

Se sim vai ficar perfeito.

Link to comment
Share on other sites

  • Membros Pro
34 minutos atrás, Daniel Simoes disse:

Nesse caso o ideal é remover o suporte a XMLSec com a diretiva... DFE_SEM_XMLSEC  no ACBr.INC

Quais seriam os possíveis problemas em manter? 

Pergunto isso pois já tenho esse executável compilado em diversos clientes e nesse caso eu teria que compilar outro e substituir.

Link to comment
Share on other sites

  • Membros Pro
35 minutos atrás, Daniel Simoes disse:

Se você deseja manter a XMLSec, então precisa migrar para as DLLs da MinGW (é o que eu uso, no momento)

Então... Na verdade pra mim tanto faz a XMLSec ou a LibXML2, só quero tentar facilitar a migração nos meus clientes, não ajustando o ACBr.inc para poder manter o executável atual nos meus clientes.

Hoje no meu aplicativo eu posso por exemplo escolher como assinar (xmlsec ou libxml2), mas compilei ele sem nenhum ajuste no ACBr.inc.

Muitos dos meus clientes usam WinXP e como você disse se eu usar XMLSec para TLS1.2 vou ter que ajustar o ACBr.inc.

Posteriormente você comentou que posso também usar o LibXML2, mas disse que seria "ideal" fazer também um ajuste no ACBr.inc para tal.

Na verdade não queria fazer ajuste nenhum no ACBr.inc e continuar assim usando o executável atual.

Se eu usar simplesmente o LibXML2 e não fizer esse ajuste funcionará o TLS1.2 e consequentemente o envio na versao 4.00 no WinXP? Quais problemas posso ter não fazendo esse ajuste "ideal"?

Desde já agradeço os esclarecimentos

Link to comment
Share on other sites

  • Fundadores
36 minutos atrás, doidopb disse:

Se eu usar simplesmente o LibXML2 e não fizer esse ajuste funcionará o TLS1.2 e consequentemente o envio na versao 4.00 no WinXP? Quais problemas posso ter não fazendo esse ajuste "ideal"?

Se você não ajustou, então é provável que algo não funcione corretamente... como por exemplo:

- Suporte a TLS1.2, com OpenSSL pode não funcionar se você não usar DLLs do OpenSSL superior a 1.0.X .. 
- Ocorrer um Exception no uso das DLLs da XMLSec. Isso pode ocorrer se você atualizou o OpenSSL superior a 1.0.X, mas não usa as DLLs da XMLSec compiladas pela MinGW

O único cenário OK, para WinXP, e sem nenhum ajuste no ACBr.inc... seria:
- DLLs do OpenSSL atualizadas para versão 1.0.X (Pasta: \ACBr\DLLs\OpenSSL\1.0.2.13)... (Nota: o ACBr ainda não é compatível com a série 1.1)
- DLLs da LIBXML2 (Pasta: \ACBr\DLLs\LibXml2)
- SSLCryptLib := cryOpenSSL;
- SSLHttpLib := httpOpenSSL;
- SSLXmlSignLib := xsLibXml2;

Por favor assista a Vídeo Aula

nesse mesmo Link tem o PDF da apresentação com várias informações sobre esse assunto...

  • Like 1
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 to comment
Share on other sites

  • Membros Pro

Olá Daniel, esse cenário que mencionou está perfeito pra mim:

Citar

O único cenário OK, para WinXP, e sem nenhum ajuste no ACBr.inc... seria:
- DLLs do OpenSSL atualizadas para versão 1.0.X (Pasta: \ACBr\DLLs\OpenSSL\1.0.2.13)... (Nota: o ACBr ainda não é compatível com a série 1.1)
- DLLs da LIBXML2 (Pasta: \ACBr\DLLs\LibXml2)
- SSLCryptLib := cryOpenSSL;
- SSLHttpLib := httpOpenSSL;
- SSLXmlSignLib := xsLibXml2;

Pois aí só tenho que acrescentar/substituir as DLLs, sem mudar o executável... Eu assisti o vídeo e dei um curti :-).

Só um detalhe, o que quer dizer essa "(Nota: o ACBr ainda não é compatível com a série 1.1)"???

Link to comment
Share on other sites

  • Fundadores
3 minutos atrás, doidopb disse:

Só um detalhe, o que quer dizer essa "(Nota: o ACBr ainda não é compatível com a série 1.1)"???

A versão 1.1 do OpenSSL é um amplo Refactoring do mesmo... vários métodos mudaram de assinatura... Quando ajustarmos os Binds do ACBr para essa nova versão ele não mais irá suportar a versão 1.0

https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes

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 to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.