Experiência na aplicação da tecnologia Rutoken para registro e autenticação de usuários no sistema (parte 3)

Bom dia!

Na parte anterior criamos com sucesso nosso centro de certificação. Como ele pode ser útil para nossos objetivos?

Com um centro de certificação local, podemos emitir certificados e verificar assinaturas com esses certificados.

Ao emitir um certificado para o usuário, o centro de certificação usa uma solicitação especial de emissão de certificado Pkcs#10, que tem o formato de arquivo '.csr'. Esta solicitação contém uma sequência codificada que o centro de certificação sabe como interpretar corretamente. A solicitação contém tanto a chave pública do usuário quanto os dados para criar o certificado (um array associativo com as informações do usuário).

Como obter a solicitação de emissão de certificado será abordado no próximo artigo, mas nesta quero apresentar os principais comandos do centro de certificação que nos ajudarão a realizar nossa tarefa no lado do backend.

Portanto, primeiro devemos criar o certificado. Para isso, usamos o comando:

openssl ca -batch -in user.csr -out user.crt

ca — comando openSSL que se refere ao centro de certificação,
-batch — desativa as solicitações de confirmação ao gerar o certificado.
user.csr — solicitação para criar um certificado (arquivo no formato .csr).
user.crt — certificado (resultado obtido do comando).

Para que este comando funcione, o centro de certificação deve estar configurado exatamente como descrito na parte anterior do artigo. Caso contrário, será necessário especificar o local do certificado raiz do centro de certificação.

Comando de verificação do certificado:

openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/……/demoCA/ca.crt -out data.file

cms — comando openSSL usado para assinar, verificar, criptografar dados e outras operações criptográficas com o openSSL.

-verify — aqui realizamos a verificação do certificado.

authenticate.cms — arquivo que contém os dados assinados pelo certificado que foi emitido pelo comando anterior.

-inform PEM — o formato PEM é utilizado.

-CAfile /Users/……/demoCA/ca.crt — caminho para o certificado raiz. (sem isso meu comando não funcionou, mesmo com os caminhos para ca.crt especificados no arquivo openssl.cfg)

-out data.file — os dados descriptografados são enviados para o arquivo data.file.

O algoritmo de aplicação do centro de certificação no lado do backend é o seguinte:

  • Registro de usuário:
    1. Recebemos uma solicitação para criar um certificado e a salvamos no arquivo user.csr.
    2. Salvamos o primeiro comando deste artigo em um arquivo com a extensão .bat ou .cmd. Executamos este arquivo a partir do código, após salvar a solicitação para criar o certificado no arquivo user.csr. Obtemos o arquivo com o certificado user.crt.
    3. Lemos o arquivo user.crt e o enviamos ao cliente.

  • Autorização do usuário:
    1. Recebemos os dados assinados do cliente e os salvamos no arquivo authenticate.cms.
    2. Salvamos o segundo comando deste artigo em um arquivo com a extensão .bat ou .cmd. Executamos este arquivo a partir do código, após salvar os dados assinados do servidor em authenticate.cms. Recebemos o arquivo com os dados descriptografados data.file.
    3. Lemos o data.file e verificamos a validade desses dados. O que exatamente verificar está descrito no primeiro artigo. Se os dados forem válidos, a autorização do usuário é considerada bem-sucedida.

Para implementar esses algoritmos, é possível usar qualquer linguagem de programação que seja utilizada para a criação do backend.

No próximo artigo, vamos explorar como trabalhar com o plug-in Rutoken.

Obrigado pela atenção!

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster