Jump to content

diadoacbr

Cte Com Openssl - Error:failed To Load Private Key Pem From


Egon José Klipstein
Go to solution Solved by Egon José Klipstein,
  • Este tópico foi criado há 2905 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Perdão se estiver postando no lugar errado. Pesquisei um bocado antes, não consegui um assunto específico. A dificuldade é:

 

Preciso desenvolver a aplicação de CTE  para LINUX UBUNTU  e usará o WINE, o certificado digital é A1, devo usar OPENSSL. Nos meus testes estou recebendo o erro "Error:failed to load private pem  key from : "c:\certificado.pfx" quando faço a assinatura.

 

Obs.: A mesma aplicação rodando com capicom e o mesmo certificado está funcionando perfeitamente, o certificado é válido e foi emitido em maio deste ano. Atualizo com frequência os fontes, semanalmente ou menos.Estou usando a seguinte sintaxe:

 

{$IFDEF ACBrCTeOpenSSL}

frmprinc.ctre.configurações.certificados.certificado := 'c:\certificado.pfx';

frmprinc.ctre.configurações.certificados.senha := 'senha';

{$ELSE}

frmprinc.ctre.configurações.certificados.NumeroSerie := 'BLABLABLANumerode serie';

{$ENDIF}

 

 

Ademais segue a codificação como no uso com CAPICOM...

 

Tem alguma configuração a ser informada, algum macete, formato do certificado, qualquer coisa a mais que talvez eu tenha esquecido ? Pode ter relação com a versão das DLLs ?

 

Link to comment
Share on other sites

  • Solution

Encontrei uma solução, talvez uma gambiarra, mas funcionou, como o colega acima colocou, o certificado está certo, caminho do PFX existe e com CAPICOM o mesmo certificado funciona. A forma de resolver foi a adição de uma linha no arquivo ACBRCTeConhecimentos  " CTeUtil.initXMLSec; " na procedure TConhecimentos.Assinar...

 

Se existe outro local em que esse efeito seja o mesmo sem a necessidade de alterar o código fonte, seria preferível, creio eu.

 

Conclusão: Creio que essa instrução faça algum tipo de inicialização em variáveis que podem estar com um valor default indesejado...

Link to comment
Share on other sites

  • Consultores

Boa tarde Egon,

 

O InitXMLSec é executado automaticamente quando se cria o componente e desde que esteja usando o OpenSSL e a propriedade IniFimXMLSECAutomatico tenha o valor True.

 

Na Unit ACBrCTe temos:

 

constructor TACBrCTe.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  (...)
{$IFDEF ACBrCTeOpenSSL}
  if FConfiguracoes.Geral.IniFinXMLSECAutomatico then
   CteUtil.InitXmlSec;
{$ENDIF}
  FOnGerarLog := nil;
end;
  • Like 1
Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: italo.[email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Este tópico foi criado há 2905 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.