Assinatura Digital

De UniWiki
Revisão de 15h20min de 26 de abril de 2017 por FranciscoCampos (Discussão | contribs) (Configurar "Liberador" no exame)
Ir para: navegação, pesquisa

O que é Assinatura Digital?

Assinatura Digital é o processo eletrônico de assinatura, baseado em sistema criptográfico assimétrico, que permite ao usuário usar sua chave privada para declarar a autoria de documento eletrônico a ser entregue à Receita Federal do Brasil, garantindo a integridade de seu conteúdo.

Modelo Utilizado

Certificado dig a1.jpg
  • No Unilab foi decidido que será utilizado o modelo A1 para a assinatura dos laudos.
  • Validade de um ano e instalado em seu computador;
  • Protegido por uma senha de acesso (opcional);
  • Recomenda-se fazer cópia de segurança externa ao computador;
  • Emissão do Certificado somente em Windows Vista, 7, 8.1 ou 10 e linux e algumas certificadoras..

Como configurar assinatura digital no Unilab

Cadastro de usuários

  • Para vincular uma assinatura a um usuário, primeiramente é preciso que o CPF preenchido seja exatamente o mesmo da assinatura que será configurada.
  • Após preenchido o CPF do usuário, clicar no botão "Incluir Arquivo de Assinatura"
Tela de cadastro de usuários

  • Em seguida, basta navegar até o local da assinatura, selecioná-la e clicar em "Abrir".
    • Obs.: Os arquivos de assinatura digital possuem extensão ".PFX".
Seleção de assinatura

  • Após a assinatura selecionada, preencher a senha.
Senha da assinatura digital

  • Após a confirmação da senha, será exibido o nome "Responsável da assinatura digital" e a "Data de validade da assinatura digital"
Assinatura digital configurada no usuário

Configuração do rodapé do laudo

Na configuração do rodapé do laudo, existe uma seção "Código do Laudo Assinado", onde é gerado um novo código a cada nova geração de PDF com assinatura digital, e também existe o "Texto Assinado Digitalmente", onde é configurado um texto padrão para aparecer em todo laudo que estiver assinado.
Estas configurações são opcionais e podem ser feitas em "Cadastros > Configurações de relatórios > Laudo - rodapé", basta alterar o rodapé desejado, e incluir as seções que preferir.
Configuração do rodapé para Assinatura Digital

Configurar assinatura do Responsável pelo Laudo

A partir da versão 3.03.022 do Unilab, existe o recurso para configurar um usuário (com assinatura digital) para ser o "Responsável pelo Laudo".
Este recurso serve para que saia apenas uma assinatura no PDF, que é apenas a que estiver configurada como Responsável pelo laudo, independente de o usuário que liberar o exame ter ou não assinatura.
Para configurar, basta ir em "Cadastros > Configurações > Assinatura digital", e no campo "Responsável pelo laudo", basta selecionar o usuário, após isso, a assinatura digital vinculada ao usuário selecionado, será utilizada em todos os próximos laudos.
Tela de configuração de Responsável pelo Laudo

Qual assinatura será utilizada para assinar os laudos?

Após a assinatura vinculada ao usuário do Unilab, os documentos de PDF que forem gerados terão a assinatura digital incluída automaticamente.
Quem assina o PDF?
  • Se no Unilab possuir um "Responsável pelo laudo" configurado, é esta assinatura que será utilizada no PDF, independente de o liberador possuir ou não outra assinatura.
  • Se não possuir "Responsável pelo laudo" configurado, é utilizado a assinatura de quem liberou o exame.
  • Caso quem tenha liberado o exame também não possua assinatura, é utilizado a assinatura padrão que estiver configurada em algum dos usuários.
  • Se a assinatura padrão está expirada (ou não tem uma padrão), pegar alguma válida.
  • Se não houver válida emitir sem assinatura.

Assinar laudos utilizando AssDig32.dll e uPdfSign.jar

Qual modelo utilizar?

Primeiramente, é preciso identificar o ambiente que será utilizado a assinatura digital de laudos, para identificar qual é o modelo recomendado, pois cada modelo possui limitações.
  • AssDig32.dll não funciona para Windows XP e Linux, porém caso as máquinas que forem liberar laudos forem todas com Windows 7 ou superior, terá a vantagem de que basta os arquivos AssDig32.dll, AsDig32.tlb e iTextSharp.dll estarem no mesmo nível de pasta do executável do Unilab, e todas as máquinas conseguirão assinar laudos sem a necessidade de uma configuração individual por máquina.
  • uPdfSign.jar tem a vantagem de que funciona também para Windows XP e Linux, porém a desvantagem é que para este modelo, é necessário realizar a configuração do java em toda máquina que for liberar laudos.


Configurando o modelo AssDig32.dll

  • Como citado anteriormente, para utilizar o modelo AssDig32.dll, é preciso que os arquivos AssDig32.dll, AsDig32.tlb e iTextSharp.dll estejam no mesmo nível de pasta do executável do Unilab.
    • Estes arquivos atualizados, podem ser encontrados em nosso servidor, através do caminho: \\svw-uniware2\REDEUNIWARE\UNIWARE\UnilabVersoes\VersaoAtual\AssinaturaDigital\AssDig32\
Desta forma, ao realizar uma geração de PDF de algum laudo, o Unilab irá verificar se a DLL necessária já está registrada na máquina, e caso não esteja, irá realizar este registro automaticamente.

Registrar arquivo de DLL manualmente

Caso ocorra algum problema, é possível realizar o registro da DLL de outras duas formas:
  • Primeiramente, os três arquivos ainda necessitam estar na mesma pasta do executável do Unilab.
  • Em seguida, é necessário executar o Unilab como administrar e logar com o usuário UNIWARE.
  • Após isso, ir no menu "Outros > Manutenção" na aba "Manut. 4" e clicar no botão "Registra DLL da assinatura digital".


Outra forma de realizar o registro da DLL, é diretamente por linhas de comando.
  • Basta abrir o prompt de comandos do windows como Administrador, e digitar o seguinte comando:
C:\Windows\Microsoft.NET\Framework\"VERSAO"\RegAsm.exe "LOCAL_DA_DLL"\AssDig32.dll /tlb
  • Onde "VERSAO" é a pasta com a última versão do framework (Ex.: v4.0.30319), sem as aspas, e "LOCAL_DA_DLL" é o local onde está a AssDig32.dll (Ex.: D:\Rede_Unilab\Uniwarew\AssDig32.dll /tlb)

Selecionando o modelo AssDig32.dll no Unilab

Após os ajustes necessários, basta acessar o Unilab, ir no menu "Cadastros > Configurações > Assinatura digital" e no campo "Assina laudos usando", selecionar AssDig32.dll
Selecionando o modelo de assinatura digital

Configurando o modelo Java (uPdfSign.jar)

A instalação do uPdfSign para utilização no Unilab deverá ser feita da seguinte forma:
  • Copiar a pasta jassdig (Nota abaixo) para a pasta na qual está localizado o unilab (geralmente uniwarew)
    NOTA:  \\svw-uniware2\REDEUNIWARE\UNIWARE\UnilabVersoes\VersaoAtual\AssinaturaDigital\uPdfSign\
  • Configurar o java (JRE) em cada terminal que utilize o unilab da seguinte forma:
    NOTA:  No linux, o JRE deve ser instalado no wine (java para Windows), os arquivos de instalação encontram-se
           na pasta  \\svw-uniware2\REDEUNIWARE\STORAGE\Linux-desenvolvimento\Java\JRE\jre-i386-wine\
               jre-6u45-windows-i586.exe       - JRE 1.6
           É altamente recomendável que o Wine (32) deve estar configurado para "Windows 2008 R2" e deve ser a versão 
           mais recente disponível.
           Instale o pacote jre-6u45-windows-i586.exe
    NOTA:  No Windows, verificar a versão do Java (JRE) e caso seja inferior a 1.6, baixar e instale a versão 8 do Java.
           Para conferir a versão do JRE digite o seguinte comando no prompt (windows ou linux):  java -version. 
           Instalação do JRE em:   http://www.oracle.com/technetwork/pt/java/javase/downloads/jre8-downloads-2133155.html
    OBS:   As versões apontadas nas notas acima, são as mínimas exigidas pelo assinador e são o cenário ideal.


Configuração Adicionais do Java (uPdfSign.jar) no Linux

  • Editar o arquivo [java_dir]\jre\lib\security\java.security e adiconar o provider "org.bouncycastle.jce.provider.BouncyCastleProvider" na lista de permitidos
    OBS:   Normalmente a pasta padrão de instalação do java se encontra em C:\Program Files (x86)\Java\ correspondente ao [java_dir]    
    NOTA:  A entrada no arquivo deverá ficar parecida com isso:
           security.provider.1=sun.security.provider.Sun
           security.provider.2=sun.security.rsa.SunRsaSign
           security.provider.3=sun.security.ec.SunEC
           security.provider.4=com.sun.net.ssl.internal.ssl.Provider
           security.provider.5=com.sun.crypto.provider.SunJCE
           security.provider.6=sun.security.jgss.SunProvider
           security.provider.7=com.sun.security.sasl.Provider
           security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
           security.provider.9=sun.security.smartcardio.SunPCSC
           security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
  • Substituir o "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files"
     Windows:
         Para o JRE 1.8x, usar o pacote no arquivo jce_policy-8.zip nesta pasta ou fazer o download
         diretamente do site da Oracle: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
         Obs: Para versões do Java superiores a 8x, localize o dowload informando a string
              "Java Cryptography Extension (JCE) Unlimited Strength"  na pesquisa do site.
  
     Linux:
         Utilize os arquivos do pacote jce_policy-6.zip 
     NOTA:
         \\svw-uniware2\STORAGE\Linux-desenvolvimento\Java\JRE\jre-i386-wine   
         jce_policy-6.zip - JCE security para chaves menores  (Certificado A1)
  • Descompactar o zip
  • Copiar os arquivos "local_policy.jar" e "US_export_policy.jar" para a pasta "[java_dir]\jre\lib\security\"
    NOTA: é recomendável salvar os arquivos originais antes da substituição
  • Boa pratica: Adicione uma nota em arquivo texto (por ex.: jce-unlimited-leia-me.txt) na pasta "[java_dir]\jre\lib\security\", indicando que o JCE foi substituido (quem, quando e porque)


Selecionando o modelo uPdfSign.jar no Unilab

Após os ajustes necessários, basta acessar o Unilab, ir no menu "Cadastros > Configurações > Assinatura digital" e no campo "Assina laudos usando", selecionar uPdfSign.jar
Selecionando o modelo de assinatura digital


Erros Comuns

Erro: java.lang.SecurityException: JCE cannot authenticate the provider BC
Causa: java.security não configurado.


Erro: java.io.IOException: exception unwrapping private key - java.security.InvalidKeyException: Illegal key size
Causa: java Cryptography Extension (JCE) Unlimited Strength" não instalado.

Exportação do certificado A1

Atenção !!!

Não basta qualquer certificado para assinar um documento (mesmo que o certificado esteja instalado no windows).

Existem regras para utilização dos certificados.

Para exportar seu certificado tipo A1 para uso no Unilab ou saber mais sobre certificados e a assinatura digital de documentos, consulte o Manual para assinatura digital no Unilab em um dos links abaixo:

Interno: http://svw-uniware2/_wiki_docs/manuais/Assinatura-Digital-Unilab.ctb.pdf
Público: http://uniware-lda.no-ip.net:3080/_wiki_docs/manuais/Assinatura-Digital-Unilab.ctb.pdf