Assinatura Digital
De UniWiki
Revisão de 15h36min de 26 de abril de 2017 por FranciscoCampos (Discussão | contribs) (→Configurar assinatura do Responsável pelo Laudo)
Índice
- 1 O que é Assinatura Digital?
- 2 Como configurar assinatura digital no Unilab
- 3 Assinar laudos utilizando AssDig32.dll e uPdfSign.jar
- 3.1 Qual modelo utilizar?
- 3.2 Configurando o modelo AssDig32.dll
- 3.3 Registrar arquivo de DLL manualmente
- 3.4 Selecionando o modelo AssDig32.dll no Unilab
- 3.5 Configurando o modelo Java (uPdfSign.jar)
- 3.6 Configuração Adicionais do Java (uPdfSign.jar) no Linux
- 3.7 Selecionando o modelo uPdfSign.jar no Unilab
- 3.8 Erros Comuns
- 4 Exportação do certificado A1
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
-
- 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"
- 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".
- Após a assinatura selecionada, preencher a senha.
- Após a confirmação da senha, será exibido o nome "Responsável da assinatura digital" e a "Data de validade da assinatura digital"
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.
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".
- 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".
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.
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\
- 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".
- 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
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
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