Pular para o conteúdo

Autenticação mútua SSL em servidores de NF-e e CT-e

Como fazer autenticação mútua nos servidores das SEFAZ estaduais para emissão de NF-e e CT-e, usando o certificado digital A1 e o certificado raiz da entidade certificadora.
Arnaldo Luiz Estevao arnaldoestevao
Hits: 24.529 Categoria: Perl Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Explicação e pré-requisitos

Tanto o manual do CT-e como o da NF-e, informam:
"O meio físico de comunicação utilizado será a Internet, com o uso do protocolo SSL versão 3.0, com autenticação mútua, que, além de garantir um duto de comunicação seguro na Internet, permite a identificação do servidor e do cliente por meio de certificados digitais, eliminando a necessidade de identificação do usuário mediante nome ou código de usuário e senha."

Fontes:
Este artigo explica como extrair os certificados necessários em formato PEM, e como passar os parâmetros para a lib cURL, de modo a prover esta dupla autenticação.

Pré-requisitos

As cadeias de certificação digital dos servidores, no meu caso, fiz download:
Antes de continuar, você precisará extrair as chaves do seu certificado A1 para o formato PEM, veja como fazer isso neste link:
* Atenção: Antes de continuar, tenha em mente que CAfile e CApath, são métodos opcionais, escolha entre um ou outro.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Explicação e pré-requisitos
   2. Autenticações
   3. CURL lib setopt (Perl e PHP) e Wget

Impressão remota via WEB

XML de NF-e ou CT-e ou MDF-e - Como validar usando os pacotes de esquemas do Governo

Instalando Slackware 11.0 em um pendrive

Phperl, minha gambiarra para usar Perl como se fosse PHP

Instalação de MRTG em ambiente Windows

Catalyst Framework Perl - Parte III

Script Perl para consultas em base LDAP e/ou Active Directory

Trabalhando com arquivos no Perl

Um pouco de PERL

#1 Comentário enviado por Ragen em 06/09/2012 - 18:12h
Parabéns Arnaldo,

Resolveu meu problema para fazer download do XML pela chave.

Abs
#2 Comentário enviado por teccert em 12/09/2012 - 12:31h
Ótimo artigo!
No entanto meu problema é o driver do Etoken USB da Alladin (certificado digital) que não existe para o ubuntu 12.04, eu tinha instalado no ubuntu 10.04; sendo assim estou esperando que um haker chegue com a solução.
#3 Comentário enviado por lesandro em 27/03/2015 - 10:13h

olá,
estou tentando baixar xml do sefaz SC
pelo navegador consigo baixar normalmente https://tributario.sef.sc.gov.br/tax.NET/tax.Net.NFE/ssl/Nfe_DownloadXml.ashx?id=4214020046098600050...
tenho e-cnpj A1 instalado.

tentei o comando
wget https://tributario.sef.sc.gov.br/tax.NET/tax.Net.NFE/ssl/Nfe_DownloadXml.ashx?id=4214020046098600050... --no-check-certificate --ca-directory=capath --certificate=cl.pem --private-key=key.pem

a resposta:
--2015-03-27 10:14:28-- https://tributario.sef.sc.gov.br/tax.NET/tax.Net.NFE/ssl/Nfe_DownloadXml.ashx?id=42140200460986
000506550040000164481000164489
A resolver tributario.sef.sc.gov.br...200.19.214.140
A conectar tributario.sef.sc.gov.br|200.19.214.140|:443... conectado.
ERRO: nÒo Ú possÝvel verificar o certificado de tributario.sef.sc.gov.br, emitido por '/C=BR/O=ICP-Brasil/CN=SERASA Cert
ificadora Digital v2':
Incapaz de verificar localmente a autoridade do emissor.
Para conectar a tributario.sef.sc.gov.br de forma insegura, use '--no-check-certificate'.
Incapaz de estabelecer a conexÒo SSL.
'PROD' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.

alguem pode me ajudar?

Contribuir com comentário

Entre na sua conta para comentar.