Ir para conteúdo
  • Cadastre-se

dev botao

OpenSSL/XMLSec ou CAPICOM, dependencia de bibliotecas externas


Ver Solução Respondido por Juliomar Marchetti,
  • Este tópico foi criado há 2370 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores
Postado

Porque a minha aplicação, quando compilada no Trunk2 exige as DLLs do XMLSec ?

O Trunk2, tem a habilidade de suportar OpenSSL (XMLSec) e CAPICOM, na mesma aplicação... e no ACBrNFe, existe a Classe TDFeSSL, que permite configurar qual será a biblioteca de SSL em Design ou Run-time

Para isso, basta mudar a configuração usando comandos como abaixo:

ACBrNFe1.Configuracoes.Geral.SSLLib := libOpenSSL;
ACBrNFe1.Configuracoes.Geral.SSLLib := libCapicom;
ACBrNFe1.Configuracoes.Geral.SSLLib := libCapicomDelphiSoap;  // Mesmo que "libCapicom", mas usando a Indy

Porém, para efetuar essa "magica", precisamos compilar todas as Units que dão suporte a CAPICOM e OpenSSL\XMLSec, e elas injetam a dependência de DLLs externas

Porque eu usaria o suporte a OpenSSL ?

O OpenSSL é ótimo para certificados do tipo A1... pois você não precisa instalar o certificado no Windows... basta apontar o caminho do arquivo PFX e a Senha:

ACBrNFe1.Configuracoes.Certificados.ArquivoPFX  := edtCaminho.Text;
ACBrNFe1.Configuracoes.Certificados.Senha       := edtSenha.Text;

 

Porque remover o suporte a uma das bibliotecas de SSL ?

A desvantagem, é que a sua aplicação agora ficou dependente de mais DLLs, e para alguns pode ser um problema, distribuir e instalar as mesmas

Onde eu encontro as DLLs ?

  • \ACBr\DLLs\OpenSSL
  • \ACBr\DLLs\XMLSec

Para onde eu copio essas DLLs ?

Você deve copiar TODAS as DLLs das pastas acima indicadas (e não apenas algumas).

Você pode copiar para a mesma pasta da sua aplicação .EXE ou para o "System" do Windows

Observe que, essas DLLs são 32 bits, e portanto só funcionarão para aplicações compiladas com um compilador 32 bits (que é o padrão para Delphi e Lazarus)... Uma aplicação 32 bits roda em um S.O. 64 bits, mas o oposto não ocorre...

Considerando que essa DLLs são 32 bits, então:

  • Se o seu Windows for 32 bits, copie para a pasta:  C:\Windows\System32
  • Se o seu Windows for 64 bits, copie para a pasta:  C:\Windows\SysWOW64

Se você estiver instalando DLLs de 64 bits em um Windows 64 bits, então a pasta correta é: C:\Windows\System32 (vai entender... pergunte pra Microsoft)

Como eu removo a dependência ?

Nunca usou o OpenSSL ? Nunca deseja usar ? Então você pode remover o suporte do ACBr ao OpenSSL/XMLSec, e com isso, remover a dependência de sua aplicação das DLLs do XMLSec..

Edite o ACBr.inc... Observe que no inicio do mesmo, existem as linhas abaixo:

{.$DEFINE DFE_SEM_OPENSSL}
{.$DEFINE DFE_SEM_CAPICOM}    

Apenas remova o ".", se quiser ativar a remoção...

{$DEFINE DFE_SEM_OPENSSL}

 

Por que mesmo assim, a sua aplicação fica dependente das DLLs do OpenSSL (libeay32.dll, ssleay32.dll) ?

O ACBr usa o OpenSSL para várias outras tarefas, como: criptografia e assinatura (ACBrEAD), comunicação segura (ACBrMail, ACBrHttp)... e outras... Então hoje, elas sempre serão necessárias... essa dependência já existia no "Trunk1"

  • Curtir 23
  • Obrigado 2
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.

  • 4 semanas depois ...
Postado (editado)

Daniel boa noite

Verifiquei alguns post anteriores, onde alguém estava precisando que o OpenSSL funcionasse com A3.

Não tem nenhuma novidade neste aspecto ?

Estou seriamente pensando em migrar para o lazarus, gostei da IDE, e além de ser gratuito ele não perde em quase nada em relação ao Delphi, sem contar as possibilidades de escrever no lazarus e compilar onde quiser.

Minha dúvida é, se eu migrar para o lazarus, o ACBr vai funcionar normalmente com Capicom, pois meus clientes todos tem certificado A3 ?

Tentei instalar o ACBrCapicom no lazarus, mas encontrei um arquivo Leia-me informado a sua ausencia

Lembrando que estou usando o Lazarus no Windows e não linux.

obrigado

Editado por marcelonarezzi
  • Membros Pro
Postado

Boa noite a todos.

Atualizei meu aplicativo para o truck2 com delphi 10 seattle.

Ao compilar, ocorre o seguintes erro:

[dcc32 Error] OpenSSLExt.pas(69): E1030 Invalid compiler directive: 'MODE'
[dcc32 Error] OpenSSLExt.pas(70): E1030 Invalid compiler directive: 'Packrecords'
[dcc32 Fatal Error] OpenSSLExt.pas(82): F2613 Unit 'DynLibs' not found.

Já configurei conforme instrucao acima configuracoes.gerais.ssllib := LibCapicom

coloquei o acbr.inc (pasta AcBr\Fontes\ACBrComum)  como:


{$DEFINE DFE_SEM_OPENSSL}
{.$DEFINE DFE_SEM_CAPICOM}

Recompilei com o installtrunk2 e nada de sucesso.

O que mais preciso fazer?

Grato pela ajuda.

 

  • Moderadores
Postado
17 minutos atrás, Apóstolo Pereira Masvida disse:

Boa noite a todos.

Atualizei meu aplicativo para o truck2 com delphi 10 seattle.

Ao compilar, ocorre o seguintes erro:

[dcc32 Error] OpenSSLExt.pas(69): E1030 Invalid compiler directive: 'MODE'
[dcc32 Error] OpenSSLExt.pas(70): E1030 Invalid compiler directive: 'Packrecords'
[dcc32 Fatal Error] OpenSSLExt.pas(82): F2613 Unit 'DynLibs' not found.

Já configurei conforme instrucao acima configuracoes.gerais.ssllib := LibCapicom

coloquei o acbr.inc (pasta AcBr\Fontes\ACBrComum)  como:


{$DEFINE DFE_SEM_OPENSSL}
{.$DEFINE DFE_SEM_CAPICOM}

Recompilei com o installtrunk2 e nada de sucesso.

O que mais preciso fazer?

Grato pela ajuda.

 

Peço para que leia as regras do fórum e poste em um lugar só!

eu já lhe respondi no outro lugar onde tu escreveu a mesma coisa do delphi 7!

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • 2 semanas depois ...
Postado (editado)

  Baixei o ACBr do Trunk2  e não encontrei essas linhas

{.$DEFINE DFE_SEM_OPENSSL}
{.$DEFINE DFE_SEM_CAPICOM}  

  Como faço para desativar o OPENSSL  ?

 As Linhas que existe no arquivo    ACBr.inc

{$IFNDEF MSWINDOWS}   // Linux, apenas OpenSSL, sem Capicom
  {$DEFINE DFE_SEM_CAPICOM}
{$ENDIF}

{$IFDEF DFE_SEM_CAPICOM}
  {$UNDEF DFE_SEM_OPENSSL}
{$ENDIF}

Como devo Proceder ?

Grato.


 

Editado por Luciano Franca
  • Membros Pro
Postado

Ola Luciano, está um pouco mais pra cima do essa linha que você postou, veja:

{.$DEFINE DFE_SEM_OPENSSL}
{.$DEFINE DFE_SEM_CAPICOM}

// Ajusta FreePascal para o modo Delphi
//------------------------------------------------------------------------------
{$IFDEF FPC}
  {$DEFINE VCL}
  {$DEFINE UNICODE} // Lazarus 0.9.26 usa UnicodeString como default para String
  {$DEFINE DELPHI7}
  {$DEFINE COMPILER7}
  {$DEFINE HAS_FORMATSETTINGS}
  {$H+}
{$ELSE}
  {$DEFINE BORLAND}
{$ENDIF}

{$IFNDEF MSWINDOWS}   // Linux, apenas OpenSSL, sem Capicom
  {$DEFINE DFE_SEM_CAPICOM}
{$ENDIF}

Você tem certeza que baixou do Trunk2 mesmo?

Anderson Rogerio Bejatto

Bacharel em Sistemas de Informação, Londrina - Paraná, www.saac.com.br

Colaborador e Assinante ACBrPro do Projeto ACBr - Automação Comercial Brasil

Postado (editado)

Puxa que vergonha  achei a linha e  fiz o procedimento porém não resolveu

{$DEFINE DFE_SEM_OPENSSL}

continua pedindo as Dll

Começa por essa "zlib1.dll"

 o que mais preciso fazer ?

Editado por Luciano Franca
Postado (editado)

Estou instalando manualmente quando chego em Pacotes como "ACBr_CTe",  "ACBr_Nfe"   dá o erro de falta do arquivo "Libxml2.Dll"

Eu peguei do seguinte repositório    svn://svn.code.sf.net/p/acbr/code/trunk2

Como está na imagem em anexo  e também coloquei meu arquivo INC  em anexo.

Erro Acbr.png

ACBr.inc

Editado por Luciano Franca
  • Membros Pro
Postado

Desculpe Juliomar pela repetição do post. Infelizmente é o desespero de resolver a questão, pois ainda não consegui sucesso seguindo as instruções colhidas em diversos posts.

Grato.

  • Membros Pro
Postado

@Apóstolo Pereira Masvida como você está instalando manualmente, coloque no seu library path as pastas onde ficam as DLLs, assim o Delphi irá procurar elas lá:

Onde eu encontro as DLLs ?

  • \ACBr\DLLs\OpenSSL
  • \ACBr\DLLs\XMLSec
  • Curtir 1

Anderson Rogerio Bejatto

Bacharel em Sistemas de Informação, Londrina - Paraná, www.saac.com.br

Colaborador e Assinante ACBrPro do Projeto ACBr - Automação Comercial Brasil

Postado (editado)

 

@Apóstolo Pereira Masvida como você está instalando manualmente, coloque no seu library path as pastas onde ficam as DLLs, assim o Delphi irá procurar elas lá:

Onde eu encontro as DLLs ?

\ACBr\DLLs\OpenSSL
\ACBr\DLLs\XMLSec
  •   Sim eu já fiz isso e alterei o Arquivo INC  como  pode ver no post acima em anexo  porém quando vou abrir o Executável fica pendido as DLLs  da pasta
    XMLSec   o primeiro arquivo a ser pedido é   "zlib1.dll"
Editado por Luciano Franca
Postado

 

Boa tarde a todos,

Todas as DLLs necessárias estão agrupadas em pastas dentro da pasta ...\DLLs

A zlib1.dll encontra-se dentro da pasta ...\DLLs\XMLSec

Sim eu encontrei todas as DLLs Necessárias e já instalei o ACBR  o problema é que não consigo rodar meu Aplicativo sem depender das DLLs   existente na Pasta  XMLSec
Eu fiz a alteração na linha     

{$DEFINE DFE_SEM_OPENSSL}

Porém quando vou abrir o aplicativo dá erro por falta das DLLs  como resolvo isso  
Veja o meu arquivo INC

ACBr.inc

Postado
Provavelmente o seu projeto está usando outro ACBr.inc... Varra o seu HD e mantenha apenas o ACBr.inc da pasta ACBrComum 

 Mais uma vez mestre foi em cima.

 Eu não imaginava que um arquivo INC em uma segunda Partição poderia fazer isso,  muito estranho.

 Muito Grato.

  • Consultores
Postado
16 horas atrás, Luciano Franca disse:

Provavelmente o seu projeto está usando outro ACBr.inc... Varra o seu HD e mantenha apenas o ACBr.inc da pasta ACBrComum 

 Mais uma vez mestre foi em cima.

 Eu não imaginava que um arquivo INC em uma segunda Partição poderia fazer isso,  muito estranho.

 Muito Grato.

Se a segunda partição estiver no variável de ambiente "PATH", ou em algum caminho que o Delphi busca (library path por exemplo), acontece e muito.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 1 mês depois ...
Postado
Em 07/10/2015 at 00:21, Daniel Simoes disse:

Porque a minha aplicação, quando compilada no Trunk2 exige as DLLs do XMLSec ?

O Trunk2, tem a habilidade de suportar OpenSSL (XMLSec) e CAPICOM, na mesma aplicação... e no ACBrNFe, existe a Classe TDFeSSL, que permite configurar qual será a biblioteca de SSL em Design ou Run-time

Para isso, basta mudar a configuração usando comandos como abaixo:


ACBrNFe1.Configuracoes.Geral.SSLLib := libOpenSSL;
ACBrNFe1.Configuracoes.Geral.SSLLib := libCapicom;
ACBrNFe1.Configuracoes.Geral.SSLLib := libCapicomDelphiSoap;  // Mesmo que "libCapicom", mas usando a Indy

Porém, para efetuar essa "magica", precisamos compilar todas as Units que dão suporte a CAPICOM e OpenSSL\XMLSec, e elas injetam a dependência de DLLs externas

Porque eu usaria o suporte a OpenSSL ?

O OpenSSL é ótimo para certificados do tipo A1... pois você não precisa instalar o certificado no Windows... basta apontar o caminho do arquivo PFX e a Senha:


ACBrNFe1.Configuracoes.Certificados.ArquivoPFX  := edtCaminho.Text;
ACBrNFe1.Configuracoes.Certificados.Senha       := edtSenha.Text;

 

Porque remover o suporte a uma das bibliotecas de SSL ?

A desvantagem, é que a sua aplicação agora ficou dependente de mais DLLs, e para alguns pode ser um problema, distribuir e instalar as mesmas

Onde eu encontro as DLLs ?

  • \ACBr\DLLs\OpenSSL
  • \ACBr\DLLs\XMLSec

Para onde eu copio essas DLLs ?

Você deve copiar TODAS as DLLs das pastas acima indicadas (e não apenas algumas).

Você pode copiar para a mesma pasta da sua aplicação .EXE ou para o "System" do Windows

Observe que, essas DLLs são 32 bits, e portanto só funcionarão para aplicações compiladas com um compilador 32 bits (que é o padrão para Delphi e Lazarus)... Uma aplicação 32 bits roda em um S.O. 64 bits, mas o oposto não ocorre...

Considerando que essa DLLs são 32 bits, então:

  • Se o seu Windows for 32 bits, copie para a pasta:  C:\Windows\System32
  • Se o seu Windows for 64 bits, copie para a pasta:  C:\Windows\SysWOW64

Se você estiver instalando DLLs de 64 bits em um Windows 64 bits, então a pasta correta é: C:\Windows\System32 (vai entender... pergunte pra Microsoft)

Como eu removo a dependência ?

Nunca usou o OpenSSL ? Nunca deseja usar ? Então você pode remover o suporte do ACBr ao OpenSSL/XMLSec, e com isso, remover a dependência de sua aplicação das DLLs do XMLSec..

Edite o ACBr.inc... Observe que no inicio do mesmo, existem as linhas abaixo:


{.$DEFINE DFE_SEM_OPENSSL}
{.$DEFINE DFE_SEM_CAPICOM}    

Apenas remova o ".", se quiser ativar a remoção...


{$DEFINE DFE_SEM_OPENSSL}

 

Por que mesmo assim, a sua aplicação fica dependente das DLLs do OpenSSL (libeay32.dll, ssleay32.dll) ?

O ACBr usa o OpenSSL para várias outras tarefas, como: criptografia e assinatura (ACBrEAD), comunicação segura (ACBrMail, ACBrHttp)... e outras... Então hoje, elas sempre serão necessárias... essa dependência já existia no "Trunk1"

Daniel?

porque no instalador não selecionar isso ?

E o instalador ir lá e mexer no acbr.inc ?

  • Curtir 1
  • Este tópico foi criado há 2370 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.