Expérience de l'utilisation de la technologie Rutoken pour l'enregistrement et l'authentification des utilisateurs dans le systÚme (partie 2)

Bonjour! Continuons à examiner ce sujet (la partie précédente est disponible via le lien).

Aujourd'hui, nous allons passer à la partie pratique. Commençons par configurer notre propre autorité de certification basée sur une bibliothÚque cryptographique complÚte et open source, openSSL. Cet algorithme a été testé avec Windows 7.

AprÚs avoir installé openSSL, nous pouvons effectuer diverses opérations cryptographiques (comme la création de clés et de certificats) via la ligne de commande.

L'algorithme des actions est le suivant :

  1. Téléchargez le distributeur d'installation openssl-1.1.1g.
    Il existe différentes versions d'openSSL. La documentation de Rutoken indique qu'il est nécessaire d'avoir la version 1.1.0 d'openSSL ou plus récente. J'ai utilisé la version openssl-1.1.1g. Vous pouvez télécharger openSSL à partir du site officiel, mais pour une installation plus simple, vous devez trouver le fichier d'installation pour Windows en ligne. Je l'ai fait pour vous : slproweb.com/products/Win32OpenSSL.html
    Faites défiler la page vers le bas et téléchargez l'installateur Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Installez openssl-1.1.1g sur votre ordinateur.
    L'installation doit ĂȘtre effectuĂ©e selon le chemin par dĂ©faut, qui est automatiquement spĂ©cifiĂ© dans le dossier C:Program Files. Le programme sera installĂ© dans le dossier OpenSSL-Win64.
  3. Pour configurer openSSL comme vous le souhaitez, il existe un fichier openssl.cfg. Ce fichier se trouve Ă  l'emplacement C:Program FilesOpenSSL-Win64bin si vous avez installĂ© openSSL comme indiquĂ© dans le point prĂ©cĂ©dent. AccĂ©dez au dossier oĂč se trouve openssl.cfg et ouvrez ce fichier avec Notepad+, par exemple.
  4. Vous avez sĂ»rement compris que la configuration de l'autoritĂ© de certification se fera par modification du contenu du fichier openssl.cfg, et vous avez tout Ă  fait raison. Pour cela, il faut configurer la commande [ ca ]. Dans le fichier openssl.cfg, le dĂ©but du texte oĂč nous allons apporter des modifications se trouve comme suit : [ ca ].
  5. Maintenant, je vais donner un exemple de configuration avec sa description :
    [ ca ]
    default_ca	= CA_default		
    
     [ CA_default ]
    dir		= /Users/username/bin/openSSLca/demoCA		 
    certs		= $dir/certs		
    crl_dir		= $dir/crl		
    database	= $dir/index.txt	
    new_certs_dir	= $dir/newcerts	
    certificate	= $dir/ca.crt 	
    serial		= $dir/private/serial 		
    crlnumber	= $dir/crlnumber	
    					
    crl		= $dir/crl.pem 		
    private_key	= $dir/private/ca.key
    x509_extensions	= usr_cert
    

    Il est maintenant nécessaire de créer le répertoire demoCA et ses sous-répertoires, comme indiqué dans l'exemple ci-dessus. Et de placer dans ce répertoire selon le chemin spécifié dans dir (chez moi c'est /Users/username/bin/openSSLca/demoCA).

    Il est trĂšs important de spĂ©cifier correctement le dir – c'est le chemin vers le rĂ©pertoire oĂč se trouvera notre autoritĂ© de certification. Ce rĂ©pertoire doit obligatoirement se trouver dans /Users (c'est-Ă -dire dans le compte d'un utilisateur quelconque). Si ce rĂ©pertoire est par exemple placĂ© dans C:Program Files, le systĂšme ne verra pas le fichier de configuration openssl.cfg (en tout cas, c'est ce qui m'est arrivĂ©).

    $dir - c'est ici que le chemin indiqué dans dir est intégré.

    Un autre point important est de créer un fichier vide index.txt, sans ce fichier, les commandes «openSSL ca ...» ne fonctionneront pas.

    Il est également nécessaire d'avoir un fichier serial, la clé privée racine (ca.key) et le certificat racine (ca.crt). Le processus d'obtention de ces fichiers sera décrit plus loin.

  6. Nous connectons les algorithmes de cryptage fournis par Rutoken.
    Cette connexion se fait dans le fichier openssl.cfg.
    • Tout d'abord, il est nĂ©cessaire de tĂ©lĂ©charger les algorithmes nĂ©cessaires de Rutoken. Ce sont les fichiers rtengine.dll, rtpkcs11ecp.dll.
      Pour cela, téléchargeons le SDK de Rutoken : www.rutoken.ru/developers/sdk.

      Le SDK de Rutoken est tout ce qui existe pour les développeurs qui souhaitent essayer Rutoken. Il contient à la fois des exemples séparés pour travailler avec Rutoken dans différents langages de programmation, ainsi que certaines bibliothÚques. Nos bibliothÚques rtengine.dll et rtpkcs11ecp.dll se trouvent dans le SDK de Rutoken respectivement aux emplacements suivants :

      sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll

      Un point trĂšs important. Les bibliothĂšques rtengine.dll, rtpkcs11ecp.dll ne fonctionnent pas sans le driver installĂ© pour Rutoken. De plus, Rutoken doit obligatoirement ĂȘtre connectĂ© Ă  l'ordinateur. (Pour l'installation de tout le nĂ©cessaire pour Rutoken, voir la partie prĂ©cĂ©dente de l'article habr.com/ru/post/506450)

    • Les bibliothĂšques rtengine.dll et rtpkcs11ecp.dll peuvent ĂȘtre placĂ©es n'importe oĂč dans le compte utilisateur.
    • Nous spĂ©cifions les chemins vers ces bibliothĂšques dans openssl.cfg. Pour cela, ouvrez le fichier openssl.cfg et placez la ligne suivante au dĂ©but de ce fichier :
      openssl_conf = openssl_def

      À la fin du fichier, il est nĂ©cessaire d'ajouter :

      [ openssl_def ]
      engines = engine_section
      [ engine_section ]
      rtengine = gost_section
      [ gost_section ]
      dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll
      RAND_TOKEN = pkcs11:manufacturer=AktivCo.;model=RutokenECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamic_path – il est nĂ©cessaire de spĂ©cifier votre chemin vers la bibliothĂšque rtengine.dll.
      MODULE_PATH – il est nĂ©cessaire de spĂ©cifier votre chemin vers la bibliothĂšque rtpkcs11ecp.dll.

  7. Ajoutons des variables d'environnement.

    Il est impératif d'ajouter une variable d'environnement qui indique le chemin vers le fichier de configuration openssl.cfg. Dans mon cas, une variable OPENSSL_CONF a été créée avec le chemin C:Program FilesOpenSSL-Win64binopenssl.cfg.

    La variable path doit pointer vers le dossier oĂč se trouve openssl.exe, dans mon cas il s'agit de : C:Program FilesOpenSSL-Win64bin.

  8. Nous pouvons maintenant revenir au point 5 et créer les fichiers manquants pour le répertoire demoCA.
    1. Le premier fichier important sans lequel rien ne fonctionnera est serial. C'est un fichier sans extension, dont la valeur doit ĂȘtre 01. Vous pouvez crĂ©er ce fichier vous-mĂȘme et y inscrire 01. Il est Ă©galement possible de le tĂ©lĂ©charger depuis le SDK RUToken Ă  l'emplacement sdk/openssl/rtengine/samples/tool/demoCA/.
      Dans le répertoire demoCA se trouve le fichier serial, dont nous avons besoin.
    2. Créons la clé privée de l'autorité de certification.
      Pour cela, nous utiliserons la commande de la bibliothĂšque openSSL, qui doit ĂȘtre lancĂ©e directement dans l'invite de commandes :
      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Créons le certificat racine.
      Pour cela, nous utiliserons la commande suivante de la bibliothĂšque openSSL :
      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Veuillez noter que pour crĂ©er un certificat racine, il faut la clĂ© privĂ©e racine, qui a Ă©tĂ© créée Ă  l'Ă©tape prĂ©cĂ©dente. L'invite de commandes doit donc ĂȘtre lancĂ©e dans le mĂȘme rĂ©pertoire.

    Maintenant, tous les fichiers manquants pour la configuration complÚte du répertoire demoCA sont disponibles. Placez les fichiers créés dans les répertoires indiqués au point 5.

Nous considérerons que, suite à l'exécution des 8 points, notre autorité de certification est entiÚrement configurée.

Dans la prochaine partie, je vous expliquerai comment nous allons travailler avec l'autorité de certification pour réaliser ce qui a été décrit dans la partie précédente de l'article.

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