Ir para conteúdo
  • Cadastre-se

dev botao

Assinar NFe com ACBr usando string do certificado.


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

Recommended Posts

Postado

Boa dia.

Gostaria de saber se existe alguma forma de assinar os documentos de NFe com o componente usando a string do certificado.
Hoje assino os documentos apontando o caminho do arquivo local .pfx no componente, funciona perfeitamente.
Agora o certificado digital A1 está sendo salvo no banco como string, algo parecido com isso: 

Citar

-----END CERTIFICATE-----
Bag Attributes
    friendlyName: Autoridade Certificadora ---
subject=/C=BR/O=ICP-Brasil/OU=Secretaria da Receita Federal do Brasil - RFB/CN=Autoridade Certificadora --
issuer=/C=BR/O=ICP-Brasil/OU=Autoridade Certificadora Raiz Brasileira v5/CN=AC Secretaria da Receita Federal do Brasil v4
-----BEGIN CERTIFICATE-----
MIIG7TCCBNWgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADCBkDELMAkGA1UEBhMCQlIx
(..)
yfWWeDSDw3PfnSEAm+CI7t5y1spW8YUQLYmZPN1o8dXIOZymZ6q14geLymnY9cek
fg==
-----END CERTIFICATE-----

Existe alguma forma de assinar o documento usando essa string? Tentei encontrar no componente e não encontrei.

Desde já, obrigado!

Atenciosamente.

 

Postado
5 horas atrás, Juliomar Marchetti disse:

você salva e recuperar Stream no seu banco o arquivo pfx

dá uma pesquisada aqui no fórum que tem até exemplos

Bacana Juliomar!

Eu cheguei a pesquisar aqui mas não encontrei dessa forma, vou adicionar a palavra "Stream" a minha busca kkkk

Obrigado por enquanto.
 

Postado
18 horas atrás, everson.turossi disse:

Pretendo fazer isso também no futuro, procurei aqui e tinha esses dois links salvos, vê se te ajuda.

 

Muito Obrigado Everson! Entendi como funcionar agora.

De forma bem pratica :

ACBrNFe1.Configuracoes.Geral.SSLLib := libOpenSSL;
ACBrNFe1.Configuracoes.Certificados.DadosPFX := Certificado;
ACBrNFe1.Configuracoes.Certificados.Senha := Senha;


Agora, quando eu aponto o caminho do arquivo .pfx em ACBrNFe1.Configuracoes.Certificados.ArquivoPFX funcionar perfeito.
Mas quando eu informo o DadosPFX  ele retorna o seguinte erro "Erro ao ler informações do Certificado. Provavelmente a senha está errada". Mas a senha esta certa.

O certificado que resgato do banco em modo texto vem assim, acredito que seja uma cadeia de certificados:

Citar

Bag Attributes
    localKeyID: (.....)
    friendlyName: (...) Nome do cliente
subject=/C=Pais/ST=Estado/L=Cidade/O=ICP-Brasil/OU=Secretaria da Receita Federal do Brasil - RFB/OU=Dados cliente
issuer=/C=BR/O=ICP-Brasil/OU=Secretaria da Receita Federal do Brasil - RFB/CN=Autoridade Certificadora 
-----BEGIN CERTIFICATE-----
MIIHVTCCBT2gAwIBAgIEAQfRvjANBgkqhkiG9w0BAQsFADCBiTELMAkGA1UEBhMC
(...)
73HIqjF/Wh2g
-----END CERTIFICATE-----
Bag Attributes
    friendlyName: AC Secretaria da Receita Federal do Brasil v4
subject=/C=BR/O=ICP-Brasil/OU=Autoridade Certificadora Raiz Brasileira v5/CN=AC Secretaria da Receita Federal do Brasil v4
issuer=/C=BR/O=ICP-Brasil/OU=Instituto Nacional de Tecnologia da Informacao - ITI/CN=Autoridade Certificadora Raiz Brasileira v5
-----BEGIN CERTIFICATE-----
MIIGYDCCBEigAwIBAgIBBDANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx
(..)
5xRMtA==
-----END CERTIFICATE-----
Bag Attributes
    friendlyName: Autoridade Certificadora Raiz Brasileira v5
subject=/C=BR/O=ICP-Brasil/OU=Instituto Nacional de Tecnologia da Informacao - ITI/CN=Autoridade Certificadora Raiz Brasileira v5
issuer=/C=BR/O=ICP-Brasil/OU=Instituto Nacional de Tecnologia da Informacao - ITI/CN=Autoridade Certificadora Raiz Brasileira v5
-----BEGIN CERTIFICATE-----
MIIGoTCCBImgAwIBAgIBATANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx
(...)
0gv8bn5NdUX8UMNX1sHhU3H1UpoW
-----END CERTIFICATE-----
Bag Attributes
    friendlyName: ......
subject=/C=BR/O=ICP-Brasil/OU=Secretaria da Receita Federal do Brasil - RFB/CN=Autoridade Certificadora
issuer=/C=BR/O=ICP-Brasil/OU=Autoridade Certificadora Raiz Brasileira v5/CN=AC Secretaria da Receita Federal do Brasil v4
-----BEGIN CERTIFICATE-----
MIIG7TCCBNWgAwIBAgIBCzANBgkqhkiG9w0BAQ0FADCBkDELMAkGA1UEBhMCQlIx
(...)
yfWWeDSDw3PfnSEAm+CI7t5y1spW8YUQLYmZPN1o8dXIOZymZ6q14geLymnY9cek
fg==
-----END CERTIFICATE-----
 

 

Já tentei informar o texto todo, só a parte do certificado do cliente, já retirei as quebras de linha, já tirei o cabeçalho, mas sempre retorna o mesmo erro.

Sabe me dizer qual parte exatamente tenho que informar em DadosPFX ? Ou precisa fazer algum tipo de conversão para funcionar?

Desde já, obrigado novamente!

 

 

 

  • Solution
Postado

Tenta dessa forma, passando o caminho do .pfx como parâmetro

function GetCertificado(APFXFile: String): AnsiString;
var
  FS: TFileStream;
begin
  FS := TFileStream.Create(APFXFile, fmOpenRead);
  try
    Result := ReadStrFromStream(FS, FS.Size); // de USES no pacote synautil
  finally
    FS.Free;
  end;
end;
ACBrNFe1.Configuracoes.Certificados.DadosPFX := GetCertificado('c:\certificado.pfx');
ACBrNFe1.Configuracoes.Certificados.Senha := 'senha';

 

  • Curtir 3
Postado
21 horas atrás, everson.turossi disse:

Tenta dessa forma, passando o caminho do .pfx como parâmetro


function GetCertificado(APFXFile: String): AnsiString;
var
  FS: TFileStream;
begin
  FS := TFileStream.Create(APFXFile, fmOpenRead);
  try
    Result := ReadStrFromStream(FS, FS.Size); // de USES no pacote synautil
  finally
    FS.Free;
  end;
end;

ACBrNFe1.Configuracoes.Certificados.DadosPFX := GetCertificado('c:\certificado.pfx');
ACBrNFe1.Configuracoes.Certificados.Senha := 'senha';

 

Perfeito Everson, deu certo!

Muito obrigado cara.

Acho que pode marcar esse tópico como resolvido.

Abraços.

  • Curtir 3
  • Este tópico foi criado há 2069 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.