Mostrando postagens com marcador certificado digital. Mostrar todas as postagens
Mostrando postagens com marcador certificado digital. Mostrar todas as postagens

Usando Certificado Digital para Nota Fiscal Eletrônica no Windows Server 2003/2008

Desde que lançaram a nota fiscal eletrônica, nós programadores ficamos com receio do uso das leitoras e cartões nos sistemas operacionais para a assinatura do XML usando o certificado digital. Geralmente os servidores usufruem de alguma versão do Windows Server para acomodar as aplicações web (que realizam o processo de assinatura) além de proporcionar mais robustez e qualidade diante dos trabalhos. Mas as leitoras e cartões simplesmente não funcionam como deveriam! Incompatibilidade... dizem.
Enfim... como fazer? Simplesmente é só usar outro sistema operacional!

"Mas como vou usar se meu servidor é Windows Server e não posso instalar outro SO?" (Você se perguntando)

Resposta: Use os dois através de uma máquina virtual! Há vários tipos e para vários gostos ficando a critério do que você for utilizar. Recomendo o VMware! Ele dispõe de duas versões (há outras que você pode optar também) que são ótimas para uso: Player e Server. Em resumo, a Player é limitada pois seu uso é simples mas não deixa de ser útil.

Vamos ao processo que será bem simples:
  1. Instale uma das versões do VMware;
  2. Instale um Windows 2000/XP/Vista nela contanto que seja compatível com sua leitora/cartão (a instalação é bem simples e sem dificuldades - é mais fácil do que quando vai instalar no computador "de verdade" bastando seguir o Wizard dela);
  3. Agora conecte a leitora do cartão no PC. Note que no Windows Server não acontecerá nada, mas no Windows interno começará a instalação;
  4. Em seguida espete o cartão na leitora;
  5. Abra o utilitário da leitora (através do Windows da máquina virtual) e verá que o cartão foi lido corretamente.
Pronto! Daí basta compartilhar uma pasta entre o Windows Server e a máquina virtual (através do VMWare se faz isso) e, enquanto no Windows Server vai jogando os XMLs nessa pasta, o Windows MV (da máquina virtual) vai assinando/enviando. Bem louco, não? Mas funciona! Pode até ter o Linux virtualizando um Windows que a leitora irá funcionar.

Obter Certificado Digital para Nota Fiscal Eletrônica

Post rápido sobre Nota Fiscal Eletrônica... Caso esteja desenvolvendo a aplicação de NFe para um PF e/ou PJ e esteja utilizando certificados do tipo A3 (no A1 deve servir também, mas ainda não testei), utilize a função abaixo para capturar da leitora o certificado. Os dados são armazenados no objeto para posterior manipulação, exemplo, assinatura do XML para envio.

using System.Security.Cryptography.X509Certificates;

X509Certificate2 oX509Cert = new X509Certificate2();
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
X509Certificate2Collection collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
X509Certificate2Collection collection2 = (X509Certificate2Collection)collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, false);
X509Certificate2Collection scollection = (X509Certificate2Collection)collection2.Find(X509FindType.FindBySubjectName, "NOME DA EMPRESA \ PESSOA", false);
if (scollection.Count == 0)
    oX509Cert = null;
else
    oX509Cert = scollection[0];
 
No objeto oX509Cert é o objeto representativo de seu certificado digital no seu sistema. Geralmente esse tipo de certificado fica armazenado temporariamente na pasta Pessoal do Gerenciador de Certificados do Windows. Caso deseje visualizar qual o nome correto do certificado e realizar demais operações, vá em Iniciar, Executar e digite certmgr.msc. Uma tela como essa irá surgir:
 

Se o seu certificado não aparecer aí, deve ser que o leitor não está reconhecendo o cartão, ou o software de leitura não foi corretamente instalado e outros fatores que agora não entrará em detalhes.