Pular para o conteúdo principal

Assinaturas web remotas

Uma assinatura remota é uma assinatura digital realizada com uma chave privada que não está disponível localmente, ou seja, em que o algoritmo de assinatura em si precisa ser computado remotamente. Como a realização do algoritmo pode depender de diversos fatores como latência de rede e intervenção do usuário, o processo de realizar assinaturas remotamente é inerentemente assíncrono, significando que o processo se inicia, espera-se a realização remota do algoritmo e só então finaliza-se o processo.

Chamamos de assinaturas web remotas o caso especial de assinaturas remotas em que o processo de assinatura está sendo realizado numa aplicação web com o backend controlando o processo, porém utilizando um certificado do usuário, cuja chave privada está disponível somente no lado do cliente.

Na maioria dos casos esta é a forma recomendada de implementar assinaturas web com nossos produtos (veja o artigo assinaturas web para exceções).

Esse processo, em linhas gerais, ocorre da seguinte maneira:

  1. O backend inicia a assinatura, gerando os bytes que precisam ser utilizados como entrada do algoritmo de assinatura utilizando a chave privada do usuário (chamados de "to-sign-data")
  2. O "to-sign-data" é transmitido para o lado do cliente
  3. O algoritmo de assinatura é realizado no frontend com a chave privada do certificado do usuário
  4. O resultado do algoritmo de assinatura é transmitido de volta ao servidor
  5. O backend finaliza o processo de assinatura

Web remote signature sequence

observação

Isso é apenas uma visão geral. Existem passos adicionais, como ler a codificação binária do certificado no frontend e enviar ao backend.

A forma recomendada de implementar assinaturas web remotas é utilizando o Rest PKI Core em conjunto com o Web PKI.

Passo-a-passo​

  1. Siga os Primeiros passos da documentação do Rest PKI Core: obtenha o endpoint e uma chave de API e adicione a biblioteca cliente da sua linguagem
  2. Leia Assinaturas em duas etapas, que implementa o processo acima numa página da sua aplicação, com o Web PKI
  3. Execute o exemplo PAdES signature com o Rest PKI Core do projeto PkiSuiteSamples da sua linguagem (.NET, Java, Node.js, PHP, Python ou Ruby)
dica

Embora a solução envolva o Rest PKI Core em conjunto com o Web PKI (para as operações no backend e frontend respectivamente), concentre-se na documentação do Rest PKI Core, que já mostra o uso dos dois produtos integrados. Se preferir não construir a página de assinatura, crie uma sessão de assinatura: a sua aplicação redireciona o usuário para uma página hospedada pelo Rest PKI Core, onde ele assina com o Web PKI ou com um certificado em nuvem.

Implementações alternativas​

Se a sua aplicação web for em .NET (C#, VB.NET, C++.NET), você pode também utilizar o PKI SDK no backend em conjunto com o Web PKI no frontend. Para mais informações, veja o artigo Assinatura com chave remota na documentação do SDK.

Se você já possui uma biblioteca de terceiros para certificação digital ou deseja implementar o código do backend você mesmo, você pode também utilizar o Web PKI apenas para realizar as operações necessárias no frontend.

As aplicações já integradas ao Rest PKI, produto legado que continua recebendo correções de bugs e de segurança, podem continuar seguindo a documentação dele, que mostra o Rest PKI e o Web PKI integrados. Para levar uma delas ao Rest PKI Core, veja Migração do Rest PKI para o Rest PKI Core.

Ver em Markdown