Mudanças entre as edições de "Assinatura Digital"

De UniWiki
Ir para: navegação, pesquisa
 
(100 revisões intermediárias por 11 usuários não estão sendo mostradas)
Linha 1: Linha 1:
 +
[[Categoria:Suporte]]
 +
[[Categoria:Java]]
 +
[[Categoria:Assinatura Digital]]
 +
[[Categoria:Unilab]]
 +
[[categoria:Implantação]]
 
==O que é Assinatura Digital?==
 
==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.
+
:[[Arquivo:Pfx .png|direita]]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.
 +
:* Para maior esclarecimento sobre o que seria e porque utilizar, o Cláudio, diretor da Uniware, fez um Webinar para poder explicar. Para assistir, acesse ao link: [http://materiais.unilab.com.br/video-webinar-rdc30 '''http://materiais.unilab.com.br/video-webinar-rdc30''']
  
===Modelos===
+
===Modelo Utilizado===
====Modelo A1====
 
 
::::[[Arquivo:Certificado_dig_a1.jpg]]
 
::::[[Arquivo: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;  
 
:*Validade de um ano e instalado em seu computador;  
 
:*Protegido por uma senha de acesso (opcional);   
 
:*Protegido por uma senha de acesso (opcional);   
 
:*Recomenda-se fazer cópia de segurança externa ao computador;   
 
:*Recomenda-se fazer cópia de segurança externa ao computador;   
:*Emissão do Certificado somente em Windows Vista, 7 ou 8.1 e linux e algumas certificadoras.
+
:*Emissão do Certificado somente em Windows Vista, 7, 8.1 ou 10 e linux e algumas certificadoras..
  
====Modelo A3====
+
==Como configurar assinatura digital no Unilab==
::::[[Arquivo:Certificado_dig_a3.png]]
 
:*Validade de até três anos e instalado obrigatoriamente em uma mídia; 
 
:*Protegido pela senha de acesso à mídia; 
 
:*Tipo recomendado pela Receita Federal por oferecer maior segurança
 
  
==Configurações do Unilab==
+
===Cadastro de usuários===
:No Unilab foi decidido que será usado o modelo A1 para a assinatura dos laudos.  
+
 
:Após a assinatura vinculada ao usuário do Unilab e o rodapé do laudo ser configurado os documentos de PDF que forem gerados terão a assinatura digital incluída automaticamente.
+
* 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"
 +
 
 +
[[Arquivo:01LoginAssinatura.jpg|800px|thumb|center|Tela de cadastro de usuários]]<br style="clear:both;">
 +
 
 +
* 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"'''
 +
 
 +
[[Arquivo:02OpenDialogAssinatura.jpg|800px|thumb|center|Seleção de assinatura]]<br style="clear:both;">
 +
 
 +
* Após a assinatura selecionada, preencher a senha.
 +
 
 +
[[Arquivo:03SenhaAssinatura.jpg|800px|thumb|center|Senha da assinatura digital]]<br style="clear:both;">
 +
 
 +
* Após a confirmação da senha, será exibido o nome "Responsável da assinatura digital" e a "Data de validade da assinatura digital"
 +
 
 +
[[Arquivo:04ConfirmarAssinatura.jpg|800px|thumb|center|Assinatura digital configurada no usuário]]<br style="clear:both;">
 +
 
 +
===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.
 +
 
 +
[[Arquivo:05RodapeAssinatura.jpg|800px|thumb|center|Configuração do rodapé para Assinatura Digital]]<br style="clear:both;">
 +
 
 +
===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
 +
 
 +
[[Arquivo:08ManutencaoAssinatura.jpg|800px|thumb|center|Adicionar código de liberação em todos os exames]]<br style="clear:both;">
 +
 
 +
:* 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 <span style="color:red">'''APENAS UMA VEZ, e não será possível desfazê-la automaticamente'''</span>.
 +
 
 +
: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".
 +
 
 +
[[Arquivo:09ExamCadAssinatura.jpg|800px|thumb|center|Tela de configuração de exame]]<br style="clear:both;">
 +
 
 +
 
 +
===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.
 +
 
 +
[[Arquivo:06ConfigSis.jpg|800px|thumb|center|Tela de configuração de Responsável pelo Laudo]]<br style="clear:both;">
 +
 
 +
===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?
 
:Quem assina o PDF?
:*Se quem liberou um dos exames do laudo tem assinatura, ela vai no 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 um dos que liberar não tem assinatura, vai a assinatura padrão no PDF.
+
:*Se não possuir "Responsável pelo laudo" configurado, é utilizado a assinatura de quem liberou o exame.
:*Se a assinatura padrão está expirada (ou não tem uma padrão), pegar alguma válida.  
+
:*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.
 
:*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".
  
:Abaixo segue o descritivo de como será configurado o sistema.
+
: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.
  
===Cadastro de usuários===
+
: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.
:No cadastro de usuários foi incluído os campos:
+
 
:*Assinatura Padrão - Define se a assinatura do usuário é ou não padrão
+
[[Arquivo:10HistoricoDeLaudosAssinados.jpg|800px|thumb|center|Histórico de laudos assinados]]<br style="clear:both;">
:*Arquivo de Assinatura digital - É o arquivo propriamente dito. O Unilab ira colocar o arquivo dentro do banco de dados. A seleção do arquivo será feita pelo botão "Incluir arquivo de assinatura"
+
 
:*Senha de Assinatura digital - É a senha pessoal usada para a assinatura digital.
+
===Diferença entre "Código de liberação" e "Código de laudo assinado"===
:*Data de validade da Assinatura digital - Esta informação não será preenchida. Se o arquivo de assinatura digital for válido esta data será preenchida automaticamente.
+
: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.
 +
 
 +
[[Arquivo:11HistoricoIntervencoes.jpg|800px|thumb|center|Rastreabilidade de laudos assinados]]<br style="clear:both;">
 +
 
 +
==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: <span style="color:red">\\svw-uniware2\REDEUNIWARE\UNIWARE\UnilabVersoes\VersaoAtual\AssinaturaDigital\AssDig32\</span>
 +
 
 +
*Também é necessário que na máquina que for liberar resultado, tenha o programa .NetFramework atualizado.
 +
**Caso necessário, é possível fazer o download através do link: https://www.microsoft.com/pt-br/download/confirmation.aspx?id=49981
 +
 
 +
: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".
 +
 
 +
<br />
 +
: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
 +
 
 +
[[Arquivo:07ConfigSisModeloAssinatura.jpg|800px|thumb|center|Selecionando o modelo de assinatura digital]]<br style="clear:both;">
 +
 
 +
===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
 +
 
 +
[[Arquivo:07ConfigSisModeloAssinatura.jpg|800px|thumb|center|Selecionando o modelo de assinatura digital]]<br style="clear:both;">
 +
 
 +
 
 +
===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===
  
:A disposição da tela no cadastro de usuários ficou da seguinte forma:
+
Um teste alternativo do pacote de assinatura digital Java (uPdfSign.jar) pode ser feito no prompt do DOS.<br />
::::[[Arquivo:Cadastro_usuarios.jpg]]
+
- Acesse a pasta jassdigz/run<br />
 +
- mande gerar um PDF assinado pelo Unilab (isso vai gerar um datagrama, arquivo *.ddtg)<br />
 +
- execute o seguinte comando:
 +
  java -jar  uPdfSign.jar -data arquivo.ddtg
  
:Poderá ser incluída uma assinatura por usuário.
 
:Será permitido excluir a assinatura de um usuário quando necessário.
 
  
:Para incluir uma assinatura basta clicar no botão "'''incluir arquivo de assinatura'''".
+
==Exportação do certificado A1==
::::[[Arquivo:BotaoAddAssinatura.JPG‎]]
 
  
:A tela a seguir aparecerá então o usuário deve procurar nas pastas do computador o arquivo e clicar no botão abrir para selecionar o arquivo.
+
<span style="color:red; 'Trebuchet MS', Arial, Helvetica, sans-serif; font-size: 16pt">Atenção !!!</span>
:::[[Arquivo:OpenDialog.jpg]]
 
:Os arquivos de assinatura digital tem extensão "'''*PFX'''"
 
  
:Quando o usuário confirmar o cadastro será feita uma validação na assinatura e se o arquivo selecionado estiver correto o campo "'''Data de Validade da Assinatura Digital'''" será preenchido.
+
<div style="color:red; 'Trebuchet MS', Arial, Helvetica, sans-serif; font-size: 10pt">
::::[[Arquivo:BoxAssinatura.JPG]]
+
Não basta qualquer certificado para assinar um documento (mesmo que o certificado esteja instalado no windows).  
  
===Configuração de Laudos===
+
Existem regras para utilização dos certificados.
:*Para que o laudo seja assinado digitalmente no menu Cadastros » Configurações de Relatórios selecione: "Laudo - Rodapé".
+
</div>
:*Selecione qual registro está sendo usado e clique em alterar, ou inclua um novo rodapé.
 
:*Inclua uma nova seção na configuração e selecione o tipo de coluna como "Texto Assinado Digitalmente" como mostrado na imagem a seguir:
 
::::[[Arquivo:Propriedades_config_col.jpg‎]]
 
  
 +
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:
  
:A Nova seção deve ficar assim:
+
Interno: http://svw-uniware2/_wiki_docs/manuais/Assinatura-Digital-Unilab.ctb.pdf
::::[[Arquivo:Rodape_laudo.jpg‎]]
 
  
===Histórico de intervenções do pedido===
+
Público: http://uniware-lda.no-ip.net:3080/_wiki_docs/manuais/Assinatura-Digital-Unilab.ctb.pdf
:Quando o PDF é assinado digitalmente um histórico é gerado.  
 
:Este histórico pode ser visualizado nos históricos de intervenção do Pedido.
 
:Abaixo segue uma imagem de como isto será apresentado.
 
::::[[Arquivo:Hist_Interv_Ass.jpg]]
 

Edição atual tal como às 11h04min de 15 de abril de 2019

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