Wiki – Centrium Sistemas

Configuração do Certificado A3 (CentriumA3Signer)

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, 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.

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.

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.

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:

Os demais campos referentes a proxy deverão ser preenchidos apenas se:

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:

Sair da versão mobile