Experiencia no uso da tecnoloxía Rutoken para rexistrar e autorizar usuarios no sistema (parte 3)

Bo día!

Na parte anterior Creamos con éxito o noso propio centro de certificación. Como pode ser útil para os nosos propósitos?

Usando unha autoridade de certificación local, podemos emitir certificados e tamén verificar sinaturas nestes certificados.

Ao emitir un certificado a un usuario, a autoridade de certificación utiliza unha solicitude de certificado especial Pkcs#10, que ten o formato de ficheiro ".csr". Esta solicitude contén unha secuencia codificada que a autoridade de certificación sabe analizar correctamente. A solicitude contén tanto a clave pública do usuario como os datos para crear un certificado (unha matriz asociativa con datos sobre o usuario).

Veremos como recibir unha solicitude de certificado no seguinte artigo, e neste artigo quero dar os principais comandos da autoridade de certificación que nos axudarán a completar a nosa tarefa no backend.

Entón, primeiro temos que crear un certificado. Para iso usamos o comando:

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

ca é o comando openSSL que se relaciona coa autoridade de certificación,
-batch: cancela as solicitudes de confirmación ao xerar un certificado.
user.csr — solicitude para crear un certificado (ficheiro en formato .csr).
user.crt - certificado (resultado do comando).

Para que este comando funcione, a autoridade de certificación debe estar configurada exactamente como se describe na parte anterior do artigo. En caso contrario, terá que especificar adicionalmente a localización do certificado raíz da autoridade de certificación.

Comando de verificación do certificado:

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

cms é un comando openSSL que se usa para asinar, verificar, cifrar datos e outras operacións criptográficas mediante openSSL.

-verify - neste caso, verificamos o certificado.

authenticate.cms - un ficheiro que contén datos asinados co certificado emitido polo comando anterior.

-inform PEM - Utilízase o formato PEM.

-CAfile /Users/……/demoCA/ca.crt - camiño ao certificado raíz. (sen isto o comando non funcionou para min, aínda que os camiños a ca.crt estaban escritos no ficheiro openssl.cfg)

-out data.file — Envio os datos descifrados ao ficheiro data.file.

O algoritmo para usar unha autoridade de certificación no lado do backend é o seguinte:

  • Rexistro de usuario:
    1. Recibimos unha solicitude para crear un certificado e gardalo no ficheiro user.csr.
    2. Gardamos o primeiro comando deste artigo nun ficheiro coa extensión .bat ou .cmd. Executamos este ficheiro desde o código, xa que previamente gardamos a solicitude para crear un certificado no ficheiro user.csr. Recibimos un ficheiro co certificado user.crt.
    3. Lemos o ficheiro user.crt e enviámosllo ao cliente.

  • Autorización de usuario:
    1. Recibimos datos asinados do cliente e gardámolos no ficheiro authenticate.cms.
    2. Garda o segundo comando deste artigo nun ficheiro coa extensión .bat ou .cmd. Executamos este ficheiro desde o código, tendo gardado previamente os datos asinados do servidor en authenticate.cms. Recibimos un ficheiro con datos descifrados data.file.
    3. Lemos data.file e comprobamos a validez destes datos. Descríbese o que se debe comprobar exactamente no primeiro artigo. Se os datos son válidos, a autorización do usuario considérase exitosa.

Para implementar estes algoritmos, pode usar calquera linguaxe de programación que se utilice para escribir o backend.

No seguinte artigo veremos como traballar co complemento Retoken.

Спасибо за внимание!

Fonte: www.habr.com

Engadir un comentario