Expérience d'application de la technologie Rutoken pour l'enregistrement et l'autorisation des utilisateurs dans le système (partie 3)

Bonjour !

Dans la partie précédente Nous avons réussi à créer notre propre autorité de certification. À quoi cela peut-il être utile pour nos besoins ?

Avec une autorité de certification locale, nous pouvons délivrer des certificats et vérifier les signatures de ces certificats.

Lors de la délivrance d'un certificat à un utilisateur, l'autorité de certification utilise une demande spéciale de délivrance de certificat Pkcs#10, ayant le format de fichier '.csr'. Cette demande contient une séquence codée que l'autorité de certification sait comment analyser correctement. La demande contient à la fois la clé publique de l'utilisateur et des données pour créer le certificat (un tableau associatif avec des informations sur l'utilisateur).

La manière d'obtenir une demande de délivrance de certificat sera examinée dans l'article suivant, mais ici je souhaite présenter les commandes principales de l'autorité de certification qui nous aideront à accomplir notre tâche côté backend.

Tout d'abord, nous devons créer un certificat. Pour cela, utilisons la commande :

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

ca — commande OpenSSL qui est liée à l'autorité de certification,
-batch — évite les demandes de confirmation lors de la création du certificat.
user.csr — demande de création de certificat (fichier au format .csr).
user.crt — certificat (résultat obtenu de la commande).

Pour que cette commande fonctionne, l'autorité de certification doit être configurée exactement comme décrit dans la partie précédente de l'article. Sinon, il faudra spécifier en plus l'emplacement du certificat racine de l'autorité de certification.

Commande de vérification du certificat :

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

cms — commande OpenSSL utilisée pour la signature, la vérification, le chiffrement de données et d'autres opérations cryptographiques avec OpenSSL.

-verify — dans ce cas, nous effectuons la vérification du certificat.

authenticate.cms — fichier contenant les données signées par le certificat délivré par la commande précédente.

-inform PEM — utilisé pour le format PEM.

-CAfile /Users/……/demoCA/ca.crt — chemin vers le certificat racine. (sans cela, ma commande n'a pas fonctionné, même si les chemins vers ca.crt sont indiqués dans le fichier openssl.cfg)

-out data.file — les données déchiffrées sont envoyées dans le fichier data.file.

L'algorithme d'application de l'autorité de certification côté backend est le suivant :

  • Enregistrement de l'utilisateur :
    1. Nous recevons une demande de création de certificat et l'enregistrons dans le fichier user.csr.
    2. Nous sauvegardons la première commande de cet article dans un fichier avec l'extension .bat ou .cmd. Nous exécutons ce fichier depuis le code, après avoir enregistré la demande de création de certificat dans le fichier user.csr. Nous obtenons le fichier de certificat user.crt.
    3. Nous lisons le fichier user.crt et l'envoyons au client.

  • Autorisation de l'utilisateur :
    1. Nous recevons les données signées du client et les enregistrons dans le fichier authenticate.cms.
    2. Nous sauvegardons la deuxième commande de cet article dans un fichier avec l'extension .bat ou .cmd. Nous exécutons ce fichier depuis le code, après avoir enregistré les données signées depuis le serveur dans authenticate.cms. Nous obtenons le fichier avec les données déchiffrées data.file.
    3. Nous lisons data.file et vérifions la validité de ces données. Ce qui doit être vérifié est décrit dans le premier article. Si les données sont valides, l'autorisation de l'utilisateur est considérée comme réussie.

Pour mettre en œuvre ces algorithmes, on peut utiliser n'importe quel langage de programmation utilisé pour écrire le backend.

Dans le prochain article, nous allons explorer comment travailler avec le plugin Rutoken.

Merci de votre attention !

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster