Ir para conteúdo
  • Cadastre-se

dev botao

OpenSSL 3 - Erro ao ler dados do certificado


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

Recommended Posts

  • Membros Pro
Postado (editado)

Bom dia,

Assim como sempre fizemos, estamos alimentando os dados do certificado no componente com uma stream gravada no BD de nossa aplicação.

Desta forma:
TBlobField(FDSFiscais.FieldByName('CERT_DADOSPFX')).SaveToStream(VStream);
FAcbrNota.SSL.DadosPFX := VStream.DataString;

Sempre funcionou e continua funcionando.

Porém, com as openSSL versão 3 não funciona.
Após alimentar os dados no componente e se tenta verificar o CNPJ AcbrNFe1.SSL.CertCNPJ ocorre o erro em anexo.

Repito: a mesma rotina, mas utilizando as openSSL 1.1, não ocorre nenhum erro. 

 

 

 

image.png

Editado por Valdir Dill
Destaque

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Membros Pro
Postado
1 minuto atrás, Daniel InfoCotidiano disse:

Bom dia @Valdir Dill
E as dlls 3.0 estão ai na pasta do seu exe?
Segue os links das dlls
http://svn.code.sf.net/p/acbr/code/trunk2/DLLs/OpenSSL/3.1.3/

Sim sim, exatamente por causa das dll estarem na pasta é que o Acbr está carregando elas e, quando as carrega, ocorre o problema.

Entendo perfeitamente essa questão das .dll openSSL e que o Acbr buscará na pasta do .exe. Já usamos isso há vários anos, rs.

A questão é simples: com dlls versão 1.1, tudo certo. Com dlls versão 3.0, vai dar esse erro. 

Acredito que você fizer esse teste aí, vai acontecer o erro também, pois aconteceu com vários usuários nossos. Assim que colocamos as novas dlls na pasta, o problema ocorreu. Voltamos as dlls 1.1, o problema foi sanado.

Lembrando que só ocorre se usar assim: FAcbrNota.SSL.DadosPFX := ...
Se alimentar o número de série, ou buscando o .pfx do arquivo, o problema não acontece.

Obrigado! 

  • Curtir 2

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
Postado

Bom dia @Valdir Dill

A versão 3.0 foi recém disponibilizada e é muito importante que a comunidade utilize e reporte os problemas para podermos corrigir.

Obrigado pela informação e assim que tivermos uma atualização a esse respeito informamos aqui. Criamos a TK-4659 para avaliar o caso.

O procedimento no momento é exatamente o que você realizou, operar com a versão 1.1 até termos uma atualização.

Obrigado mais uma vez.

  • Curtir 4
Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

  • Membros Pro
Postado
6 minutos atrás, Alexandre de Paula disse:

Bom dia @Valdir Dill

A versão 3.0 foi recém disponibilizada e é muito importante que a comunidade utilize e reporte os problemas para podermos corrigir.

Obrigado pela informação e assim que tivermos uma atualização a esse respeito informamos aqui. Criamos a TK-4659 para avaliar o caso.

O procedimento no momento é exatamente o que você realizou, operar com a versão 1.1 até termos uma atualização.

Obrigado mais uma vez.

Sim, exatamente essa foi a intenção do post, informar para que a questão seja analisada e, se for o caso, aplicada a correção.

Obrigado!

  • Curtir 4
  • Obrigado 1

Valdir Dill

Rio de Janeiro - RJ

 

 

  • 3 semanas depois ...
  • Fundadores
  • Solution
Postado

Eu não consegui reproduzir o problema, ou encontrar algo que pudesse ser a causa do problema...

Em 27/10/2023 at 07:52, Valdir Dill disse:

FAcbrNota.SSL.DadosPFX := VStream.DataString;

Mas notei que você está usando um TStringStream.DataString

Essa propriedade é declarada como String  e não AnsiString, e pode ser que o Delphi esteja inserindo caracteres de controle de string, como o UTF8 BOM, nela...

Tente por favor usar TMemoryStream ou TFileStream com o método ReadStrFromStream da Unit synautil.pas.... exemplo:

procedure TDFeSSLCryptClass.CarregarCertificadoDeArquivoPFX;
var
  PFXStream: TFileStream;
begin
  if not FileExists(FpDFeSSL.ArquivoPFX) then
    raise EACBrDFeException.Create('Arquivo: ' + FpDFeSSL.ArquivoPFX + ' não encontrado');

  PFXStream := TFileStream.Create(FpDFeSSL.ArquivoPFX, fmOpenRead or fmShareDenyNone);
  try
    PFXStream.Position := 0;
    FpDFeSSL.DadosPFX := ReadStrFromStream(PFXStream, PFXStream.Size);
  finally
    PFXStream.Free;
  end;

  CarregarCertificadoDeDadosPFX;
end;

a rotina acima, é usada pelo ACBr, para mover o conteúdo do certificado do Arquivo, para SSL.DadosPFX , feito isso, ele sempre lê o certificado de DadosPFX

 

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