Goedendag!
We hebben met succes onze eigen certificeringsinstantie opgericht. Hoe kan deze in wezen nuttig zijn voor onze doeleinden?
Met behulp van de lokale certificeringsinstantie kunnen we certificaten uitgeven en de handtekening op deze certificaten verifiëren.
Bij het uitgeven van een certificaat aan een gebruiker gebruikt de certificeringsinstantie een speciale aanvraag voor certificaatuitgifte, PKCS#10, met het bestandstype '.csr'. Deze aanvraag bevat een gecodeerde reeks die de certificeringsinstantie weet hoe te parseren. De aanvraag bevat zowel de publieke sleutel van de gebruiker als gegevens voor het creëren van het certificaat (een associatieve array met gebruikersgegevens).
Hoe we de aanvraag voor certificaatuitgifte kunnen verkrijgen, zullen we in het volgende artikel bespreken. In dit artikel wil ik de belangrijkste commando's van de certificeringsinstantie geven die ons helpen onze taak aan de backend uit te voeren.
Dus, eerst moeten we een certificaat aanmaken. Hiervoor gebruiken we het commando:
openssl ca -batch -in user.csr -out user.crt ca — het openSSL-commando dat betrekking heeft op de certificeringsinstantie.
-batch — schakelt bevestigingsverzoeken uit bij het aanmaken van een certificaat.
user.csr — de aanvraag voor het creëren van een certificaat (bestand van het type .csr).
user.crt — het certificaat (de verkregen output van het commando).
Om dit commando succesvol uit te voeren, moet de certificeringsinstantie exact zo zijn ingesteld als beschreven . In dat geval moet de locatie van het rootcertificaat van de certificeringsinstantie apart worden opgegeven.
Het commando voor het verifiëren van het certificaat:
openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/……/demoCA/ca.crt -out data.filecms — het openSSL-commando dat wordt gebruikt voor het ondertekenen, verifiëren, versleutelen van gegevens en andere cryptografische bewerkingen met openSSL.
-verify — in dit geval voeren we de verificatie van het certificaat uit.
authenticate.cms — het bestand dat de ondertekende gegevens bevat van het certificaat dat door het vorige commando is uitgegeven.
-inform PEM — gebruikt het PEM-formaat.
-CAfile /Users/……/demoCA/ca.crt — het pad naar het rootcertificaat. (zonder dit werkte mijn commando niet, hoewel de paden naar ca.crt zijn aangegeven in het bestand openssl.cfg)
-out data.file — de ontsleutelde gegevens worden naar bestand data.file gestuurd.
Het algoritme voor het toepassen van de certificeringsinstantie aan de backend is als volgt:
- Registratie van de gebruiker:
- We receive a request to create a certificate and save it in the file user.csr.
- We save the first command of this article in a file with the .bat or .cmd extension. We run this file from the code, having previously saved the request to create a certificate in the file user.csr. We obtain the certificate file user.crt.
- We read the file user.crt and send it to the client.
- User authentication:
- We obtain signed data from the client and save it in the file authenticate.cms.
- We save the second command of this article in a file with the .bat or .cmd extension. We run this file from the code, having previously saved the signed data from the server in authenticate.cms. We obtain a file with the decrypted data data.file.
- We read data.file and check this data for validity. What exactly to verify is described . If the data is valid, the user authentication is considered successful.
To implement these algorithms, any programming language that you use for backend development can be utilized.
In the next article, we will explore how to work with the Rutoken plugin.
Bedankt voor uw aandacht!
Bron: habr.com
