Goedendag! Laten we verder gaan met dit onderwerp ().
Vandaag gaan we naar het praktische gedeelte. We beginnen met het instellen van onze eigen certificeringsautoriteit op basis van de volledige open-source cryptografische bibliotheek openSSL. Dit algoritme is getest op Windows 7.
Met openSSL geïnstalleerd, kunnen we verschillende cryptografische operaties uitvoeren (bijvoorbeeld het maken van sleutels en certificaten) via de opdrachtregel.
De stappen zijn als volgt:
- Download het installatiepakket openssl-1.1.1g.
OpenSSL heeft verschillende versies. In de documentatie van de Rutoken werd vermeld dat versie openSSL 1.1.0 of hoger nodig is. Ik heb versie openssl-1.1.1g gebruikt. Je kunt openSSL downloaden van de officiële website, maar voor een eenvoudigere installatie is het nodig om het installatiebestand voor Windows online te vinden. Ik heb dat voor je gedaan:
Scroll naar beneden op de pagina en download de Win64 OpenSSL v1.1.1g EXE 63MB Installer. - Installeer openssl-1.1.1g op de computer.
De installatie moet plaatsvinden via het standaardpad, dat automatisch wordt aangegeven in de map C:Program Files. Het programma zal worden geïnstalleerd in de map OpenSSL-Win64. - Om openSSL in te stellen zoals je wilt, is er een bestand openssl.cfg. Dit bestand bevindt zich op het pad C:Program FilesOpenSSL-Win64bin als je openSSL hebt geïnstalleerd zoals vermeld in het vorige punt. Ga naar de map waar openssl.cfg is opgeslagen en open dit bestand met bijvoorbeeld Notepad++.
- Je hebt waarschijnlijk al geraden dat de configuratie van de certificeringsautoriteit zal worden gemaakt door de inhoud van het bestand openssl.cfg aan te passen, en je hebt helemaal gelijk. Hiervoor moet de sectie [ ca ] worden ingesteld. In het bestand openssl.cfg is het begin van de tekst waar we wijzigingen aan zullen brengen te vinden als: [ ca ].
- Nu geef ik een voorbeeld van de configuratie met de 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_certHet is nu nodig om de map demoCA en submappen te maken, zoals in het bovenstaande voorbeeld weergegeven. Plaats in deze map de bestanden volgens het pad dat wordt aangegeven in dir (in mijn geval /Users/username/bin/openSSLca/demoCA).
Het is zeer belangrijk om dir correct in te stellen – dit is het pad naar de directory waar ons certificeringscentrum zich bevindt. Deze directory moet zich in /Users bevinden (dus in het account van een gebruiker). Als je deze directory bijvoorbeeld in C:Program Files plaatst, zal het systeem het openssl.cfg configuratiebestand niet kunnen vinden (althans dat was mijn ervaring).
$dir – hier wordt het pad ingevuld dat in dir is opgegeven.
Een ander belangrijk punt is dat je een leeg bestand index.txt moet aanmaken; zonder dit bestand zullen de commando's 'openSSL ca …' niet werken.
Daarnaast is het noodzakelijk om een bestand serial, de privén sleutel (ca.key) en het certificaat (ca.crt) te hebben. Het proces voor het verkrijgen van deze bestanden zal verderop worden beschreven.
- We schakelen de encryptie-algoritmen in die door Rutoken worden aangeboden.
Deze aansluiting vindt plaats in het bestand openssl.cfg.- Allereerst is het nodig om de noodzakelijke algoritmen van Rutoken te downloaden. Dit zijn de bestanden rtengine.dll, rtpkcs11ecp.dll.
Daarvoor downloaden we de Rutoken SDK: .De Rutoken SDK bevat alles voor ontwikkelaars die Rutoken willen uitproberen. Het bevat zowel aparte voorbeelden voor de werking met Rutoken in verschillende programmeertalen, alsook enkele bibliotheken. Onze bibliotheken rtengine.dll en rtpkcs11ecp.dll zijn te vinden in de Rutoken SDK op de volgende locaties:
sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dllEen heel belangrijk punt. De bibliotheken rtengine.dll en rtpkcs11ecp.dll werken niet zonder de geïnstalleerde driver voor Rutoken. Daarnaast moet de Rutoken ook aan de computer zijn aangesloten. (voor installatie van alles wat nodig is voor Rutoken, zie het vorige deel van het artikel )
- De bibliotheken rtengine.dll en rtpkcs11ecp.dll kunnen op elke locatie in het gebruikersaccount worden bewaard.
- We geven de paden naar deze bibliotheken op in openssl.cfg. Daarom openen we het bestand openssl.cfg en plaatsen we de volgende regel aan het begin van dit bestand:
openssl_conf = openssl_defAan het einde van het bestand moet je het volgende 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=AktivCo.;model=RutokenECP default_algorithms = CIPHERS, DIGEST, PKEY, RANDdynamic_path – je moet je eigen pad naar de bibliotheek rtengine.dll opgeven.
MODULE_PATH – je moet je eigen pad naar de bibliotheek rtpkcs11ecp.dll opgeven.
- Allereerst is het nodig om de noodzakelijke algoritmen van Rutoken te downloaden. Dit zijn de bestanden rtengine.dll, rtpkcs11ecp.dll.
- Voeg omgevingsvariabelen toe.
Zorg ervoor dat je een omgevingsvariabele toevoegt die de pad naar het configuratiebestand openssl.cfg aangeeft. In mijn geval is de variabele OPENSSL_CONF gemaakt met het pad C:Program FilesOpenSSL-Win64binopenssl.cfg.
In de path-variabele moet je het pad naar de map opgeven waar openssl.exe zich bevindt, in mijn geval is dat: C:Program FilesOpenSSL-Win64bin.
- Nu kunnen we terugkeren naar stap 5 en de ontbrekende bestanden voor de demoCA-map aanmaken.
- Het eerste belangrijke bestand zonder welk niets zal werken, is serial. Dit is een bestand zonder extensie, waarvan de waarde 01 moet zijn. Je kunt dit bestand zelf aanmaken en 01 erin schrijven. Je kunt het ook downloaden uit de RUTOKEN SDK via het pad sdk/openssl/rtengine/samples/tool/demoCA/.
In de demoCA-map ligt het bestand serial, dat we nodig hebben. - Laten we de root privé-sleutel aanmaken.
Hiervoor gebruiken we de opdracht van de openSSL-bibliotheek, die rechtstreeks in de opdrachtprompt moet worden uitgevoerd:openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key - Laten we het rootcertificaat aanmaken.
Hiervoor gebruiken we de volgende opdracht van de openSSL-bibliotheek:openssl req -utf8 -x509 -key ca.key -out ca.crtLet op dat voor het aanmaken van het rootcertificaat de root privé-sleutel nodig is die in de vorige stap werd aangemaakt. Daarom moet de opdrachtprompt in dezelfde directory worden uitgevoerd.
Nu zijn alle ontbrekende bestanden voor de volledige configuratie van de demoCA-map aanwezig. Plaats de gemaakte bestanden in de mappen die in stap 5 zijn opgegeven.
- Het eerste belangrijke bestand zonder welk niets zal werken, is serial. Dit is een bestand zonder extensie, waarvan de waarde 01 moet zijn. Je kunt dit bestand zelf aanmaken en 01 erin schrijven. Je kunt het ook downloaden uit de RUTOKEN SDK via het pad sdk/openssl/rtengine/samples/tool/demoCA/.
Laten we aannemen dat ons certificeringscentrum volledig is ingesteld na het voltooien van alle 8 stappen.
In het volgende deel zal ik uitleggen hoe we met het certificeringscentrum gaan werken om uit te voeren wat eerder is beschreven in .
Bron: habr.com
