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á 2450 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 - PR, 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 - PR, 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á 2450 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...