O objectivo deste artigo é mostrar-lhe como assinar electronicamente facturas em formato PDF no JTL-Wawi e garantir que estes documentos não podem ser alterados sem perder a sua assinatura digital. Além disso, cumpre plenamente os requisitos legais para o envio de facturas por via electrónica.
No JTL-Wawi existem duas possibilidades para assinar digitalmente documentos PDF:
- A opção 1 consiste em utilizar o portal de assinaturas para o efeito.
- A opção 2 consiste em utilizar uma ferramenta externa para o efeito.
A opção 2 tem a vantagem de poder utilizar o seu próprio certificado e poupar os custos do portal de assinaturas. A desvantagem da segunda solução é que é o próprio utilizador que é responsável pela segurança do seu certificado e tem de fazer muito trabalho preparatório e configurações até que a JTL-Wawi assine digitalmente facturas em PDF.
Além disso, explicámos num artigo separado como enviar facturas automaticamente no JTL-Wawi.
Esquerda:
X Gestão de certificados e chaves:
https://sourceforge.net/projects/xca/
PortableSigner:
https://sourceforge.net/projects/portablesigner/files/portablesigner/2.0-Release/
Java Cryptography Extension (JCE) Ficheiros de política de jurisdição de força ilimitada 7:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
Instalação do certificado X e gestão de chaves
No primeiro passo, descarrega-se o X Certificate and Key management e instala-se o software no PC central que fornece a base de dados JTL-Wawi. Iniciar o ficheiro setup_xca-0.9.3.exe com um duplo clique.
Seleccione“Alemão” como língua e clique em“OK“.
Aceitar o acordo de licença clicando no botão“Aceitar“.
Seleccione todos os componentes e clique em“Seguinte“.
Deixe as definições do directório de destino como estão e clique em“Instalar“.
Concluir a instalação clicando em“Concluir“.
Depois de instalar o software, configuramos a nossa própria autoridade de certificação com a qual podemos criar certificados para a nossa empresa. No passo seguinte, precisamos de criar o chamado certificado raiz, no qual se baseiam os outros certificados que emitimos.Criar certificado raiz
Por isso, inicie o X Certificate and Key management a partir do menu Iniciar.
Primeiro, precisamos de criar uma nova base de dados para os nossos certificados. Para o fazer, clicamos em“Ficheiro” no menu e depois em“Nova base de dados“.
Em Nome do ficheiro, dê um novo nome à base de dados, por exemplo, contoso, e clique em“Guardar“.
No passo seguinte, é necessário atribuir uma palavra-passe à base de dados. Anote a palavra-passe e clique em“OK“.
Depois de ter criado a base de dados, pode começar a criar o certificado de raiz. Para o fazer, clique no botão“Novo certificado” no lado direito da janela.
Na janela “Criar certificado x509”, seleccione a CA abaixo como modelo para o novo certificado (predefinição).
Mudar para o separador “Titular”. Aqui temos de criar primeiro uma nova chave. Para o fazer, clique no botão“Criar uma nova chave” no canto inferior direito.
Atribua “rootkey” como nome, seleccione RSA como tipo de chave e defina o comprimento da chave para 2048 bits. Clique em“Criar” para criar a nova chave.
Pode confirmar a mensagem sobre a criação bem sucedida da chave privada RSA com“OK“.
Preencha os campos em Distinguished name (Nome distinto), como mostra a imagem à esquerda. Através de Adicionar, também se introduzem as informações
- commonName
- nome da organização
- nome do país
- organizationalUnitName
- endereço electrónico
e preenchê-los também.
No separador Extensões, defina o período de validade do certificado para 2 anos e, em seguida, clique no botão“Aplicar“.
No separador Utilização de chaves, seleccione as entradas Assinatura de certificado e Assinatura de LCR, que devem ser destacadas a azul, conforme mostrado na captura de ecrã à direita.
Por fim, verifique se não foram feitas entradas no separador Netscape e se não foi feita nenhuma selecção. Se tudo estiver correcto, clicamos em“OK“.
Por fim, recebemos a mensagem de que o certificado foi criado com sucesso. Voltamos a confirmar a mensagem clicando em “OK”.
x.509 Criar um certificado para a assinatura
Depois de criarmos o nosso certificado raiz, podemos criar o certificado real para assinar as facturas em PDF. Em princípio, são quase os mesmos passos que a criação do certificado de raiz.
Vamos clicar novamente no botão“Novo certificado“.
Desta vez, seleccionamos “(default) HTTPS_client” como modelo.
Passamos para o separador“Titular” e clicamos no botão“Criar uma nova chave” na parte inferior.
Atribuímos um nome à nova chave, por exemplo, Cliente_1, seleccionamos RSA como tipo de chave e definimos novamente o comprimento da chave para 2048 bits. Em seguida, clicamos no botão“Criar“.
A mensagem subsequente sobre a criação bem sucedida da chave pode ser confirmada clicando no botão“OK“.
Agora podemos preencher todos os campos em Distinguished name (Nome distinto) e criar os seguintes campos através do botão Add (Adicionar):
- commonName
- organizationalUnitName
- nome da organização
- endereço electrónico
- contryName
- stateOrProvinceName
No separador Extensões, também definimos o período de tempo para 2 anos e clicamos no botão“Aplicar“.
No separador Utilização de chaves, seleccionamos Assinatura digital, Cifragem de chaves e Cifragem de dados.
No separador Netscape, verificamos novamente que não foi feita qualquer selecção e que não foram preenchidos quaisquer campos. Em seguida, clicamos no botão “OK”.
Confirmamos a mensagem de que o nosso certificado foi criado com êxito, clicando no botão“OK“.
Exportação do certificado do cliente
Para a assinatura digital das facturas em formato PDF, é necessário exportar o certificado
Destacamos o último certificado de cliente criado e clicamos no botão“Exportar“.
Na janela “Exportação de certificados”, começamos por seleccionar o formato de exportação PKCS #12. Em seguida, seleccionamos uma localização/nome para o certificado e clicamos em“OK“.
Para a encriptação do ficheiro PKCS#12, temos ainda de atribuir uma palavra-passe. Tomamos nota do facto e clicamos no botão“OK“.
Repetimos o processo de exportação para o certificado de raiz. Ambos são então instalados no repositório de certificados do computador. Por isso, marque o certificado de topo e clique no botão “Exportar”.
Desta vez, definimos DER como o formato de exportação. Atribua o local de armazenamento e o nome e, em seguida, clique novamente no botão“OK“.
Instalação dos certificados
Não é obrigatório, mas recomenda-se a instalação dos certificados no PC cliente depois de terem sido criados.
A instalação de um certificado no Windows é relativamente simples. Seleccione o certificado, clique no botão direito do rato e, em seguida, clique em Instalar certificado. Começamos por fazer isto com o certificado de raiz que criámos anteriormente.
Clique em“Seguinte” no assistente de importação de certificados.
Seleccione Seleccionar automaticamente o armazenamento de certificados e clique em“Seguinte“.
Por fim, basta clicar em Concluir.
A mensagem sobre o êxito do processo de importação pode ser confirmada clicando no botão“OK“.
No passo seguinte, instalamos o certificado do cliente. Clicamos com o botão direito do rato no nosso certificado de cliente *.p12 e clicamos em Instalar PFX.
Clicamos em“Next” (Seguinte) no assistente de importação de certificados.
Verifique novamente se é o ficheiro correcto e, em seguida, clique em“Next” (Seguinte).
Agora temos de introduzir a palavra-passe que fornecemos quando exportámos a chave e clicar em“Next” (Seguinte).
Agora, clique em“Concluir“.
Confirme o aviso de segurança clicando em“Sim“.
Por fim, feche a nota sobre o processo de importação bem sucedido com um clique no botão“OK“.
Instalação do PortableSigner
Para adicionar uma assinatura digital às nossas facturas em formato PDF, precisamos de um pequeno utilitário em todos os computadores chamado PortableSigner. No início do artigo, encontrará a ligação para descarregar. Além disso, dois ficheiros especiais de política de segurança para o Java Runtime devem ser trocados para que o nosso programa auxiliar também possa fazer o seu trabalho.
Copie os dois ficheiros da transferência Java(UnlimitedJCEPolicyJDK7.zip) para o directório da sua instalação Java, por exemplo:C:Program Files (x86)Javajre7libsecurity
Pode então iniciar o ficheiro PortableSigner-Installer-2.0.38c0573.exe com um duplo clique. Seleccione o idioma alemão e clique em“OK“.
Basta clicar em “Seguinte”.
Saltar as informações de instalação clicando em“Seguinte“.
Aceite o acordo de licença e clique em“Seguinte“.
Deixe os detalhes do caminho como estão e clique em“Next” (Seguinte).
Fechar a mensagem clicando no botão“OK“.
Seleccione o pacote de instalação Basic (não há outro…) e clique em“Next” (Seguinte).
Deixe as definições em “Set up shortcuts” (Configurar atalhos) como estão e clique em“Next” (Seguinte).
O PortableSigner está instalado.
Por fim, termine a instalação clicando no botão “Concluído”.
O Windows 7 informa então que o programa pode não ter sido instalado correctamente. Pode evitar esta situação clicando em“O programa foi instalado correctamente“.
Teste de assinatura digital
Antes de adaptarmos a JTL-Wawi e enviarmos facturas assinadas digitalmente, efectuamos um pequeno teste com o PortableSigner para nos certificarmos de que o nosso certificado e o software estão a funcionar correctamente. Para isso, precisamos de um PDF não assinado, por exemplo, uma factura da JTL-Wawi.
Vamos iniciar o PortableSigner a partir do menu Iniciar.
Em primeiro lugar, seleccionamos o ficheiro de entrada com o botão “Procurar” na linha 1 em Assinar PDF. Em seguida, especificamos o ficheiro de saída, ou Aceitar a predefinição. Na linha 3 seleccionamos o x.509 certificado com a extensão de ficheiro p12. Na linha 4 marcamos Append signature block (Anexar bloco de assinatura) e na linha 5 introduzimos a palavra-passe para o certificado. Em seguida, podemos criar o novo PDF com assinatura clicando no botão“OK“.
Se tudo estiver correctamente configurado, no final, na linha 8, o resultado a verde é:“Documento assinado“.
Quando abrimos o novo documento no leitor Adobe PDF, a assinatura pode ser vista no final, numa nova página.
Enviar facturas JTL-Wawi automaticamente através de um script ou fluxo de trabalho
Até à data, temos a nossa própria autoridade de certificação em funcionamento e a possibilidade de assinar digitalmente documentos PDF com um certificado. Com muitas facturas por dia a serem enviadas por correio, a abordagem apresentada no teste é bastante ineficaz. É por isso que escrevemos um pequeno ficheiro batch baseado na predefinição do software JTL(https://wiki.jtl-software.de/index.php?title=Kategorie:JTL-Wawi:Workarounds). Infelizmente, a documentação sobre este assunto é um pouco escassa. Bastou-me uma mensagem no fórum e algumas brincadeiras para resolver o puzzle.
Em primeiro lugar, criamos um ficheiro batch com o editor ou o Notepad e inserimos o seguinte conteúdo:
java -jar C:Program Files (x86)PortableSignerPortableSigner.jar
-n -t %1 -o %1_ -s <Pfad>Client.p12 -p <Kennwort>
copy %1_ %1
del %1_
Substituímos os espaços reservados <Caminho> e <Palavra-passe> pelo caminho para o nosso certificado na rede ou no disco rígido local e, em Palavra-passe, introduzimos a palavra-passe do nosso certificado.
Em seguida, guardamos este ficheiro com o nome Sign.bat. Utilizei uma partilha de rede no meu servidor de teste.
Passamos agora para o JTL-Wawi e chamamos as definições de empresa/mail no menu Settings (Definições).
Seleccionar a empresa correspondente e passar para o separador Definições de e-mail. Aqui clicamos no botão“Definições da assinatura“.
Nas definições da assinatura de correio electrónico, passamos para o separador Comando externo e marcamos“Activar edição/assinatura por comando externo“. Em seguida, introduzimos o caminho para Sign.bat ou procuramos o ficheiro clicando no botão com os 3 pontos […].
Não se esqueça de sair do campo Nome do ficheiro premindo a tecla Tab, caso contrário as alterações não serão aplicadas!
Quando a caixa verde com o visto aparecer na parte inferior, está tudo bem e podemos sair da janela clicando em“Fechar“. As definições de empresa/milha também podem ser fechadas com um clique em“OK“.
Agora ainda precisamos da gestão de modelos, que infelizmente só existe aqui. Aqui temos de encontrar o nosso modelo de factura na estrutura em árvore, marcá-lo e mudar para o separador Correio, à direita. Em seguida, seleccionamos o comando externo em Assinatura e fechamos a janela com um clique no botão“OK“.
Nesta altura, também podemos adicionar um destinatário para uma cópia da mensagem em cópia oculta (BCC), por exemplo, rechnungsausgang@contoso.local.