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.

[ Hits: 23.023 ]

Por: Arnaldo Luiz Estevao em 03/09/2012


CURL lib setopt (Perl e PHP) e Wget



Observações:
  • Não quero entrar aqui na discussão do sistema de envio e resposta de XML, apenas na autenticação SSL;
  • CAfile e CApath são métodos opcionais, escolha entre um ou outro;
  • Não esqueça de trocar o endereço dos servidores pelo da unidade de federação correspondente a ser testada.

Para um teste usando cURL:

- CAfile:

curl --key chave.pem --cacert cafile.pem --cert cliente.pem https://homologacao.cte.ms.gov.br/cteWEB/CteStatusServico.asmx

- CApath:

curl --key chave.pem --capath capath --cert cliente.pem https://homologacao.cte.ms.gov.br/cteWEB/CteStatusServico.asmx

Para um teste usando Wget:

- CAfile:

wget --private-key=chave.pem --ca-certificate=cafile.pem --certificate=cliente.pem https://homologacao.cte.ms.gov.br/cteWE/CteStatusServico.asmx

- CApath:

wget --private-key=chave.pem --ca-directory=capath --certificate=cliente.pem https://homologacao.cte.ms.gov.br/cteWEB/CteStatusServico.asmx

Perl e PHP

Para o Perl, você pode utilizar o módulo: WWW::Curl::Easy

Maiores informações e download, aqui:
No PHP, você encontra informações de como usar a libcurl, aqui:
Em ambos os casos, para configurar a autenticação mútua, informe os seguintes parâmetros.

Autenticação com CAfile:

CURLOPT_SSL_VERIFYPEER, True
CURLOPT_SSL_VERIFYHOST, True
CURLOPT_CAPATH, ./capath
CURLOPT_SSLCERT, cliente.pem
CURLOPT_SSLKEY, chave.pem


Página anterior    

Páginas do artigo
   1. Explicação e pré-requisitos
   2. Autenticações
   3. CURL lib setopt (Perl e PHP) e Wget
Outros artigos deste autor

Instalando Slackware 11.0 em um pendrive

Phperl, minha gambiarra para usar Perl como se fosse PHP

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

Impressão remota via WEB

Leitura recomendada

Módulos de Web no Perl

Enviando emails em Perl

Impressão remota via WEB

Configurando OTRS com PSGI/Plack e executando com Starman

Catalyst Framework Perl - (parte 2)

  
Comentários
[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=42140200460986000506550040000164481000164489&amp=PROD">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=42140200460986000506550040000164481000164489&=PROD">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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts