Ervaring met het gebruik van Rutoken-technologie voor het registreren en autoriseren van gebruikers in het systeem (deel 2)

Goedemiddag Laten we doorgaan met dit onderwerpHet vorige deel vind je via de link).

Vandaag gaan we verder met het praktische gedeelte. Laten we beginnen met het opzetten van onze CA op basis van de volwaardige open source cryptografische bibliotheek openSSL. Dit algoritme is getest met Windows 7.

Als openSSL is geïnstalleerd, kunnen we via de opdrachtregel verschillende cryptografische bewerkingen uitvoeren (zoals het maken van sleutels en certificaten).

Het algoritme van acties is als volgt:

  1. Download de installatiedistributie openssl-1.1.1g.
    openSSL heeft verschillende versies. In de documentatie voor Rutoken staat dat openSSL versie 1.1.0 of nieuwer vereist is. Ik gebruikte de openssl-1.1.1g-versie. U kunt openSSL downloaden van de officiële site, maar voor een eenvoudigere installatie moet u het installatiebestand voor Windows op internet zoeken. Ik heb dit voor je gedaan: slproweb.com/products/Win32OpenSSL.html
    Scroll naar beneden op de pagina en download Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. Installeer openssl-1.1.1g op de computer.
    De installatie moet worden uitgevoerd volgens het standaardpad, dat automatisch wordt aangegeven in de map C: Program Files. Het programma wordt geïnstalleerd in de map OpenSSL-Win64.
  3. Om openSSL in te stellen zoals jij het nodig hebt, is er het bestand openssl.cfg. Dit bestand bevindt zich in het pad C:Program FilesOpenSSL-Win64bin als u openSSL hebt geïnstalleerd zoals beschreven in de vorige paragraaf. Ga naar de map waarin openssl.cfg is opgeslagen en open dit bestand met bijvoorbeeld Notepad++.
  4. U vermoedde waarschijnlijk dat de certificeringsinstantie op de een of andere manier zal worden geconfigureerd door de inhoud van het bestand openssl.cfg te wijzigen, en u heeft volkomen gelijk. Hiervoor is aanpassing van de opdracht [ ca ] vereist. In het bestand openssl.cfg is het begin van de tekst waarin we wijzigingen zullen aanbrengen te vinden als: [ ca ].
  5. Nu zal ik een voorbeeld geven van een instelling met zijn beschrijving:
    [ 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
    

    Nu moeten we de demoCA-map en submappen maken, zoals weergegeven in het bovenstaande voorbeeld. En plaats het in deze map langs het pad dat is opgegeven in dir (ik heb /Users/gebruikersnaam/bin/openSSLca/demoCA).

    Het is erg belangrijk om dir correct te spellen - dit is het pad naar de map waar ons certificeringscentrum zich zal bevinden. Deze map moet zich in /Users bevinden (dat wil zeggen, in het account van een bepaalde gebruiker). Als je deze directory bijvoorbeeld in C: Program Files plaatst, zal het systeem het bestand met de instellingen openssl.cfg niet zien (zo was het bij mij tenminste).

    $dir - het pad dat in dir is opgegeven, wordt hier vervangen.

    Een ander belangrijk punt is het maken van een leeg index.txt-bestand, zonder dit bestand zullen de “openSSL ca …”-opdrachten niet werken.

    U hebt ook een serieel bestand, een privé-rootsleutel (ca.key) en een rootcertificaat (ca.crt) nodig. Het proces voor het verkrijgen van deze bestanden wordt hieronder beschreven.

  6. We verbinden de versleutelingsalgoritmen van Rutoken.
    Deze verbinding vindt plaats in het bestand openssl.cfg.

    • Allereerst moet u de benodigde Rutoken-algoritmen downloaden. Dit zijn de bestanden rtengine.dll, rtpkcs11ecp.dll.
      Download hiervoor de Rutoken SDK: www.rutoken.ru/developers/sdk.

      De Rutoken SDK is alles wat er is voor ontwikkelaars die Rutoken willen uitproberen. Er zijn beide afzonderlijke voorbeelden voor het werken met Rutoken in verschillende programmeertalen, en er worden enkele bibliotheken gepresenteerd. Onze bibliotheken rtengine.dll en rtpkcs11ecp.dll bevinden zich respectievelijk in de Rutoken SDK op de locatie:

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

      Een heel belangrijk punt. Bibliotheken rtengine.dll en rtpkcs11ecp.dll werken niet zonder het geïnstalleerde stuurprogramma voor Rutoken. Ook Rutoken moet op de computer zijn aangesloten. (zie het vorige deel van het artikel voor het installeren van alles wat je nodig hebt voor Rutoken habr.com/en/post/506450)

    • De bibliotheken rtengine.dll en rtpkcs11ecp.dll kunnen overal in het gebruikersaccount worden bewaard.
    • We schrijven de paden naar deze bibliotheken in openssl.cfg. Om dit te doen, opent u het bestand openssl.cfg en plaatst u de regel aan het begin van dit bestand:
      openssl_conf = openssl_def

      Aan het einde van het bestand moet je toevoegen:

      [ 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=Aktiv%20Co.;model=Rutoken%20ECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamic_path - u moet uw pad naar de rtengine.dll-bibliotheek opgeven.
      MODULE_PATH - u moet uw pad naar de bibliotheek rtpkcs11ecp.dll instellen.

  7. Omgevingsvariabelen toevoegen.

    Zorg ervoor dat u een omgevingsvariabele toevoegt die het pad naar het configuratiebestand openssl.cfg specificeert. In mijn geval werd de OPENSSL_CONF variabele gemaakt met het pad C:Program FilesOpenSSL-Win64binopenssl.cfg.

    In de padvariabele moet je het pad opgeven naar de map waar openssl.exe zich bevindt, in mijn geval is dat: C: Program FilesOpenSSL-Win64bin.

  8. Nu kunt u teruggaan naar stap 5 en de ontbrekende bestanden voor de demoCA-directory maken.
    1. Het eerste belangrijke bestand zonder welke niets zal werken, is serieel. Dit is een bestand zonder extensie, waarvan de waarde 01 moet zijn. Je kunt dit bestand zelf maken en erin schrijven 01. Je kunt het ook downloaden van de Rutoken SDK langs het pad sdk/openssl/rtengine/samples/tool/demoCA /.
      De demoCA-map bevat het seriële bestand, en dat is precies wat we nodig hebben.
    2. Maak een root-privésleutel.
      Om dit te doen, gebruiken we de opdracht openSSL-bibliotheek, die rechtstreeks op de opdrachtregel moet worden uitgevoerd:

      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. We maken een rootcertificaat aan.
      Gebruik hiervoor de volgende openSSL-bibliotheekopdracht:

      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Houd er rekening mee dat de privésleutel van de root, die in de vorige stap is gegenereerd, vereist is om het rootcertificaat te genereren. Daarom moet de opdrachtregel in dezelfde map worden gestart.

    Alles bevat nu alle ontbrekende bestanden voor de volledige configuratie van de demoCA-directory. Plaats de aangemaakte bestanden in de mappen aangegeven in punt 5.

Wij gaan ervan uit dat na het voltooien van alle 8 punten ons certificeringscentrum volledig is geconfigureerd.

In het volgende deel zal ik beschrijven hoe we met de certificeringsinstantie zullen samenwerken om te bereiken wat is beschreven in het vorige deel van het artikel.

Bron: www.habr.com

Voeg een reactie