Objetivo
ConfigurarCertificado A3 para emissão de notas fiscais.
A forma de trabalho com as certificações digitais modelo A3 é um tanto diferente da simplicidade e praticidade de se usar o certificado digital A1.
O certificado digital modelo A1 é um arquivo ( Software ). Já o certificado modelo digital de A3 e Um Cartão ( Hardware ).
No CentriumWEB a forma de trabalhar com certificados digitais modelo A1 é a mais simples e prática possível, já que apenas é necessário o upload do arquivo no cadastro do certificado. Mas para trabalhar com certificado digital modelo A3 é necessário acessar o Hardware (cartão) na máquina cliente. Para acessar o certificado A3 instalado na máquina cliente, será necessário que o aplicativo CentriumA3Signer esteja corretamente configurado.
O CentirumA3Signer é o aplicativo web que fará a intermediação da assinatura do XML da NFe, bem como sua transmissão, do CentriumWEB para o portal fazendário utilizando o certificado digital modelo A3.
Compatibilidade
Versão 12.00 ou superior.
Requisitos
- .NET Framework 4.0
- IIS Express 8.0 – Detalhes
- Visual J#
- Certificado A3 instalado e funcionando na máquina em que vai ser instalado o CentriumA3Signer
.NET Framework, IIS Express e o Visual J# podem ser baixados diretamente da página da Microsoft.
Instalação
Sendo os pré-requisitos já instalados, é necessário fazer um teste para confirmar se o IIS Express está executando corretamente.
- Acessar a pasta de instalação do IIS Express, normalmente localizado em: “C:\Program Files (x86)\IIS Express”, e executar o iisexpress.exe.
- Obs: Utilizar o executável do IIS Express da instalação de 32 bits.
Ao abrir a janela do IIS Express, localize a seguinte linha:
Successfully registered URL "http://localhost:8080/"
Acesse o endereço informado, e veja se é exibido uma página com conteúdo personalizado do IIS Express. A finalidade deste passo é somente para garantir que o IIS Express está instalado corretamente. O conteúdo exibido pode variar, conforme o exemplo abaixo:
Feito o teste, para a instalação prosseguir é necessário que o IIS Express esteja fechado.
- Como o IIS Express foi executado corretamente, agora é necessário “adicionar” o aplicativo web CentriumA3Signer. Os arquivos necessários estão disponíveis em um arquivo na página da versão web no FTP com o nome “CentriumA3Signer.exe“.
- O arquivo “CentriumA3Signer.exe” deve ser executado como administrador, informando o caminho de destino para pasta de WebSites, localizada na pasta Documentos do usuário do windows. O nome da pasta varia de acordo com o idioma de instalação do IIS Express, conforme no exemplo abaixo, o nome da pasta é “My Web Sites”:
Após executado a instalação, deve-se prosseguir com a configuração da URL de acesso do serviço, que por padrão está permitido o acesso local através da URL “http://localhost:8080”, conforme acessada anteriormente. A URL de acesso deve ser configurada de forma que o servidor onde se encontra o CentriumWEB consiga acesso. Assim como o endereço localhost nos leva ao IP 127.0.0.1, devemos configurar um endereço que mesmo que o IP seja “dinâmico” esse endereço não mude, ou seja, não usaremos o IP para acessar, mas sim o nome da máquina.
- Inicialmente deve-se localizar o arquivo de configuração dos WebSites, localizado na pasta “…\Usuario\Documentos\IIS Express\config\applicationhost.config“, conforme visualizado na imagem abaixo:
NOTA: Caso seja Windows 10 e o arquivo deve ser alterado no caminho C:\Program Files (x86)\IIS Express\AppServer ou C:\Program Files\IIS Express\AppServer , verificar em qual das duas pasta foi instalado.
No arquivo “applicationhost.config” está toda a configuração de sistema do IIS Express e também de parte dos WebSites ali instalados.
Como exemplo, está sendo instalado em uma máquina reconhecida na rede local através do endereço “M14-PC”. Logo, a configuração da URL desejada é: “http://M14-PC:22714”, onde 22714 é a porta utilizada para a comunicação com o CentriumWEB. E para que isto ocorra é necessário adicionar o aplicativo CentriumA3Signer no arquivo de configurações conforme o exemplo. É importante ressaltar que apenas o nome da máquina é de exemplo, sendo que a porta utilizada para comunicação será a 22714.
Abrindo o arquivo de configuração com um editor de texto deverá localizar a tag <sites>, onde é listado todos os aplicativos instalados, conforme visualizado no exemplo abaixo, sendo a primeira linha em negrito (Development Web Site) o nome do aplicativo; a segunda parte em negrito (WebSite1) identificando o caminho para a pasta com os arquivos do aplicativo CentriumA3Signer; e a terceira parte em negrito (8080:localhost) é a configuração da URL e a porta que serão liberadas.
<sites> <site name="Development Web Site" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="%IIS_USER_HOME%\WebSite1" /> </application> <bindings> <binding protocol="http" bindingInformation=":8080:localhost" /> </bindings> </site> <siteDefaults> <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" /> <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> </siteDefaults> <applicationDefaults applicationPool="IISExpressAppPool" /> <virtualDirectoryDefaults allowSubDirConfig="true" /> </sites>
Conforme procedimentos realizados corretamente, ficará como abaixo, com exceção do nome da máquina que em cada cliente deverá ser verificado:
<sites> <site name="CentriumA3Signer" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="%IIS_USER_HOME%\CentriumA3Signer" /> </application> <bindings> <binding protocol="http" bindingInformation=":22714:M14-PC" /> </bindings> </site> <siteDefaults> <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" /> <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> </siteDefaults> <applicationDefaults applicationPool="IISExpressAppPool" /> <virtualDirectoryDefaults allowSubDirConfig="true" /> </sites>
Configurar também para os pools de aplicativos ficarem sempre em execução. Para isto localize a tag <applicationPools>, e em cada pool de aplicativo, identificados na tag <add>, adicione a propriedade startMode com o valor “AlwaysRunning“. Segue exemplo abaixo:
<applicationPools> <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" startMode="AlwaysRunning" /> <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" startMode="AlwaysRunning" /> <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" startMode="AlwaysRunning" /> <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" startMode="AlwaysRunning" /> <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" startMode="AlwaysRunning" /> <applicationPoolDefaults managedRuntimeLoader="v4.0"> <processModel /> </applicationPoolDefaults> </applicationPools>
Após configurado o aplicativo, é necessário “informar” ao IIS Express que essa URL é permitida, adicionando uma regra através do “AdicionarURL.bat” disponível junto com a aplicação CentriumA3Signer. Antes de executar o batch deverá editá-lo para alterar o nome da máquina. Localize as linhas abaixo no arquivo “AdicionarURL.bat”:
set urlMaquina=M14-PC set portaMaquina=22714
Onde está M14-PC deverá ser substituído pelo nome da máquina utilizada.
Feito isso, apenas é necessário executar o “AdicionarURL.bat” como administrador, e confirmar se a mensagem é a apresentada abaixo:
Reserva de URL adicionada com êxito
Também está incluso o “RemoverURL.bat”, que é a mesma sistemática de alterar a URL. Porém este arquivo vai remover a permissão de acesso nessa URL. Este arquivo deverá ser usado apenas quando se deseja alterar a URL do aplicativo CentriumA3Signer, em que durante uma primeira instalação não será necessário utilizá-lo.
Agora é necessário realizar um teste, ou seja, vamos verificar se o aplicativo CentriumA3Signer está funcionando corretamente. Para isto, informe na URL de um navegador o seguinte endereço, onde M14-PC deve ser alterado para o nome da máquina utilizado:
http://m14-pc:22714/pnfecentriumdll.svc
deverá aparecer uma tela conforme abaixo, com o IIS Express executando e ao lado no navegador a página para verificar se o serviço está funcionando conforme o esperado:
Apresentando a mesma tela que a do navegador na imagem, o serviço estará funcionando corretamente.
Verificar também a necessidade de registrar a DLL de assinatura e transmissão, utilizando o batch “RegistraDLL.bat”, disponível na pasta bin da aplicação. (“..\CentriumA3Signer\bin\RegistraDLL.bat”)
Cadastro do Certificado no CentriumWEB
No cadastro de certificados digitais é necessário informar em qual o endereço e porta que está executando o CentriumA3Signer. Além disto, também deverá informar o caminho para o arquivo (.cer) exportado do certificado. O caminho informado deve estar acessível através da máquina onde foi instalado o CentriumA3Signer.
No CentriumWEB, acessar o cadastro de certificados digitais em “Configurações do Sistema / Parâmetros / Documentos Fiscais Eletrônicos / Certificados Digitais”. Escolher o certificado digital em uso, e verificar o cadastro conforme na imagem abaixo:
Para o correto funcionamento é de importância o preenchimento dos seguintes campos:
- Descrição do ceritifcado.
- Tipo: Neste caso informar A3
- Caminho do Certificado (.cer): Informar onde está localizado o .cer exportado do certificado A3
- Validade: Informar a data de vencimento do certificado digital. (Único propósito de avisar o cliente, antecipadamente, de que é necessário “renovar” o certificado digital, pois pode demorar até 30 dias para vir outro).
- Será exibido mensagem na digitação de notas com até 30 dias de antecedência da data de vencimento do certificado ditigal.
- Mensagem: “ATENÇÃO! Seu Certificado Digital expirará em dd/mm/aaaa”, sendo “dd” o dia, “mm” o mês, e “aaaa” o ano, ambos referente a data de validade do certificado digital.
- Mensagem quando o certificado digital estiver com a data de validade expirada ou não configurada: “Certificado Vencido”.
- Será exibido mensagem na digitação de notas com até 30 dias de antecedência da data de vencimento do certificado ditigal.
- Na Configuração do A3
- Host: Informar o host em que foi instalado o aplicativo CentriumA3Signer. Novamente: O host aqui informado deve ser acessível a partir do servidor CentriumWEB.
- Porta: Informar a porta em que está instalado o aplicativo CentriumA3Signer. Informar a mesma porta que foi utilizada durante a instalação, neste caso a 22714.
Os demais campos referentes a proxy deverão ser preenchidos apenas se:
- Na máquina em que foi instalado o CentriumA3Signer precisa de proxy pra acessar a rede.
Inicializar o IIS Express ao Fazer Logon no Windows
Como o aplicativo CentriumA3Signer geralmente vai estar executando em alguma máquina cliente, então sempre que essa máquina inicializar deverá executar o IIS Express.
Por padrão o IIS Express não tem opções para inicializar em modo oculto, sempre irá exibir o prompt de comando. Neste caso foi desenvolvido um executável para que inicializae determinado aplicativo em modo “oculto“. O objetivo de inicializar em modo oculto, dentre muitas situações, é que não há necessidade de visualizar os logs gerados no IIS, e muito menos que essa janela seja fechada de forma involuntária.
Para inicializar um programa ao fazer logon no windows há várias maneiras de se configurar. Para este caso será citado 2 maneiras, em que na implanatação pode-se decidir qual deles utilizar, se utilizando o agendador de tarefas do windows, ou se criando um atalho na pasta “Inicializar” do menu iniciar.
Inicializar IIS Express Utilizando Agendador de Tarefas
Utilizando o agendador de tarefas do windows, está incluso junto com a aplicação CentriumA3Signer um arquivo para importar a tarefa.
Para acessar o agendador de tarefas, utilize a pesquisa no menu iniciar por “Agendador de Tarefas”.
Para utilizar o arquivo “pré-configurado”, utilize a opção importar e selecione o arquivo disponível em “..\CentriumA3Signer\IISExpressRunner\TarefaCentriumA3Signer.xml”, conforme visualizado na imagem abaixo:
Após selecionar o arquivo, abrirá a janela para, antes de salvar a tarefa, editar algumas propriedades:
Deverá informar o usuário do windows que será utilizado pra executar a tarefa.
Na aba “Ações”, no campo “Programa/Script”, deverá editar o programa e ajustar o caminho para o executável do IIS Express (iisexpress.exe).
Deverá ajustar também o campo “Iniciar em”, informando a pasta onde se encontra o executável do IIS Express (iisexpress.exe), conforme exemplo abaixo:
C:\Program Files (x86)\IIS Express
Após importado a tarefa e ajustado o usuário e o caminho do executável, ainda no agendador de tarefas selecione a pasta “Biblioteca do Agendador” e selecione a tarefa recém importada clicando com o direito e selecionando a opção executar. Ao executar a tarefa deverá aparecer uma tela de prompt de comando, já com o CentriumA3Signer em operação.
Executando o IIS Express através do agendador de tarefas conforme o esperado, sempre que o usuário fizer logon no windows o aplicativo será iniciado.
Inicializar IIS Express Utilizando um Atalho na Pasta Inicializar do Menu Iniciar
Ao acessar o “Menu Iniciar” do Windows, em “Todos os Programas”, há uma pasta com o nome “Inicializar”. Localize-a e clicando com o botão direito do mouse selecione a opção “Abrir todos os usuários”.
No Windows 8.1 deverá acessar essa pasta através do “Windows Explorer”, pois em alguns casos não estará no menu iniciar.
Geralmente a pasta Inicializar de todos os usuários está localizada em: “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup” ou “C:\ProgramData\Microsoft\Windows\Menu Iniciar\Programas\Inicializar”
Nesta pasta “Inicializar”, todos os atalhos ali contidos serão executados assim que o usuário fizer logon no Windows. Então, semelhante com o agendador de tarefas, aqui deve ser criado um atalho para o executável do IIS Express (iisexpress.exe).
Com a pasta “Inicializar” aberta, clicar com o botão direito do mouse e na opção “Novo” selecionar o item “Atalho”.
Será solicitado para qual item criar o atalho, então deverá selecionar o executável do IIS Express (iisexpress.exe). Logo, o campo local ficará assim:
"C:\Program Files (x86)\IIS Express\iisexpress.exe"
Ao avançar para o próximo passo será solicitado o nome para o atalho. Este pode ser qualquer nome que identifique que este atalho serve para abrir o IIS Express, como, por exemplo, “IIS Express”. Feito isso, é só concluir e realizar um teste.
Para testar se o atalho está funcionando corretamente, basta executá-lo e testar a aplicação novamente. Para confirmar que o atalho será executado ao fazer logon na máquina, verifique se apareceu o atalho, recém criado, na pasta Inicializar do menu iniciar, conforme visualizado abaixo:
Considerações Finais
Para estar seguro que tudo está funcionando conforme o esperado, é recomendado reiniciar o commputador. Assim, quando o Windows inicializar por completo o IIS Express deverá estar executando.
Sempre que o IIS Express estiver executando, um ícone, conforme a imagem abaixo, será exibido: