Assinatura Digital
Índice
- 1 O que é Assinatura Digital?
- 2 Como configurar assinatura digital no Unilab
- 3 Recursos da assinatura digital
- 4 Assinar laudos utilizando AssDig32.dll e uPdfSign.jar
- 4.1 Qual modelo utilizar?
- 4.2 Configurando o modelo AssDig32.dll
- 4.3 Registrar arquivo de DLL manualmente
- 4.4 Selecionando o modelo AssDig32.dll no Unilab
- 4.5 Configurando o modelo Java (uPdfSign.jar)
- 4.6 Configuração Adicionais do Java (uPdfSign.jar) para Windows e Linux
- 4.7 Selecionando o modelo uPdfSign.jar no Unilab
- 4.8 Erros Comuns
- 4.9 Teste Assinatura Java CMD Line
- 5 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.
- 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
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".
- Caso a assinatura esteja no formato ".P12" basta renomear a extensão de ".P12" para ".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".
- Esta assinatura por exame de nada tem a ver com a assinatura digital A1 e-CPF
- 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.
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.
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.
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 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
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