Assinatura Digital

De UniWiki
Ir para: navegação, pesquisa

O que é Assinatura Digital?

Pfx .png
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".
    • Caso a assinatura esteja no formato ".P12" basta renomear a extensão de ".P12" para ".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 "Liberador" no exame

Nas configurações de exames, existe uma seção com nome "Liberado por - Nome", onde indica o nome de quem liberou o exame, e outra seção com "Código da liberação".
Código da liberação é um código de segurança do laudo, onde toda vez que o status do exame passar para Liberado, será gravado um novo código de liberação.
Na versão 3.03.022 foi criado um facilitador para acrescentar estas duas seções em todos os exames.
Para isso, é preciso acessar o Unilab utilizando o usuário UNIWARE, através do menu "Outros > Manutanção", na aba "Manut. 2", existe um botão com nome "Adiciona código de liberação em todos os exames".
Esta assinatura por exame de nada tem a ver com a assinatura digital A1 e-CPF
Adicionar código de liberação em todos os exames

  • Obs.: Antes de utilizar este recurso, recomendamos que realize um backup dos exames e também da base para caso queira voltar como estava antes, pois esta ação estará disponível para ser realizada APENAS UMA VEZ, e não será possível desfazê-la automaticamente.
Após realizado a rotina para adicionar código de liberação em todos os exames, será adicionado na última linha de cada configuração de exame (divida em duas colunas) a primeira coluna: "Liberado por - Nome" e a segunda "Código da liberação".
Tela de configuração de exame


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.

Recursos da assinatura digital

Como localizar laudos assinados

No Unilab existe "Histórico de laudos assinados" que pode ser encontrado em "Movimentação > Histórico de laudos assinados".
Neste tela, é possível visualizar o PDF gerado de cada laudo que já foi assinado através do botão "Consulta", podendo filtrar por número de Pedido, data em que foi Arquivado, Assinador, Código assinatura (Código do laudo assinado) e inclusive, Código de liberação.
Através do botão "Histórico" também é possível abrir o Histórico de Intervenções do pedido selecionado, podendo identificar quaisquer alterações que tenham ocorrido.
Histórico de laudos assinados

Diferença entre "Código de liberação" e "Código de laudo assinado"

Primeiramente é preciso saber que o Código de liberação é por exame, já o Código de laudo assinado é por laudo.
  • Código de liberação é um código que tem uma sequência pré-definida, cada exame terá um código diferente (nunca irá repetir), e será gerado um novo código toda vez que o exame passar para o status de Liberado.
  • Código de laudo assinado é um código que é configurado no rodapé do laudo, também tem uma sequência pré-definida, todas as páginas do mesmo laudo terão o mesmo código, porém o código é alterado a cada nova impressão.


Transmitir laudos assinados para o posto

No Unilab também é possível transmitir os laudos do posto que foram assinados na central, para o próprio posto de origem.
Através do menu "Cadastros > Configurações > Assinatura digital", no campo "Transmite laudo assinado para o posto".
Caso este campo esteja configurado como "Sim", quando a central assinar o algum laudo do posto, ao realizar a transmissão, este PDF será enviado para o posto.
  • Obs.: Este campo vem por padrão marcado como "Não", pois isso pode deixar a transmissão significativamente mais lenta.
Este PDF poderá ser visualizado no posto, através do menu "Movimentação > Histórico de laudos assinados", através do botão "Consulta".
Caso este recurso não esteja habilitado, na tela de Histórico de laudos assinados do posto, vai aparecer o registro, porém ao tentar Consultar, o sistema não irá encontrar o PDF e irá gerar uma mensagem de que o PDF não foi encontrado, e solicitará para que seja verificado junto a central, se este PDF encontra-se lá.

Rastreabilidade de laudos assinados

Na rastreabilidade de laudos assinados, também é possível identificar qual o código utilizado para assinar cada exame, quem foi o liberador do exame e inclusive qual foi o usuário que assinou digitalmente por aquele laudo.
Rastreabilidade de laudos assinados

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 Unilabw (geralmente a pasta raíz: uniwarew)
    NOTA:  \\svw-uniware2\REDEUNIWARE\UNIWARE\UnilabVersoes\VersaoAtual\AssinaturaDigital\uPdfSign\
  • Configurar o java (JRE) em cada terminal que utilize o unilab (Modo de configuração JRE abaixo tanto em Windows quanto para Linux) ou simplesmente baixando o java no próprio site: www.java.com
    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) para Windows e Linux

  • Editar o arquivo [java_dir]\jre\lib\security\java.security e adicionar 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

Obs.: Geralmente no arquivo original, já tem um security.provider.10. Você deve substituir por esta linha: security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider como mostra a nota acima.

  • 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\REDEUNIWARE\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.

Teste Assinatura Java CMD Line

Um teste alternativo do pacote de assinatura digital Java (uPdfSign.jar) pode ser feito no prompt do DOS.
- Acesse a pasta jassdigz/run
- mande gerar um PDF assinado pelo Unilab (isso vai gerar um datagrama, arquivo *.ddtg)
- execute o seguinte comando:

 java -jar  uPdfSign.jar -data arquivo.ddtg


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