Terug naar blog

OpenSSL Essentials: Werken met privésleutels, Certificate Signing Requests en SSL-certificaten

OpenSSL Essentials: Werken met privésleutels, Certificate Signing Requests en SSL-certificaten

OpenSSL is een open-source cryptografiebibliotheek die een verscheidenheid aan commando's bevat die worden gebruikt in het TLS Protocol en Public Key Infrastructure. OpenSSL is uitgebracht in 1998 en is beschikbaar voor Windows-, Linux-, macOS- en BSD-systemen. Het OpenSSL-commando helpt u bij het uitvoeren van verschillende taken, waaronder Certificate Signing Request (CSR), het genereren van privésleutels en SSL-certificering.

OpenSSL is belangrijk omdat het zorgt voor een correcte SSL-implementatie. Het op de juiste manier verkrijgen van SSL is cruciaal voor de beveiliging van uw website. Bovendien geeft Google, een topzoekmachine, prioriteit aan websites waarop SSL-certificaten zijn geïmplementeerd. Sommige browsers zoals Chrome en Firefox kunnen uw website markeren als Niet beveiligd als u geen correct SSL-certificaat hebt. Daarom is het van cruciaal belang om uw websiteverkeer over het gecodeerde HTTPS protocol.

Eerst en vooral

Deze handleiding is een gids in spiekbriefstijl, met enkele maar waarschijnlijk niet alle OpenSSL-commando's die u in alledaagse scenario's kunt gebruiken.

Het eerste deel legt alles uit wat u moet weten over Certificate Signing Requests (CSR). Als u er echter al bekend mee bent, kunt u doorgaan naar een andere sectie die relevant is voor wat u probeert te bereiken. Elke sectie bevat een opdrachtregelfragment om te bereiken wat de ondertitel aangeeft.

Laten we beginnen!

Sectie 1: Certificate Signing Requests (CSR's) begrijpen

Een certificate signing request is een vereiste bij het verkrijgen van een SSL-certificaat van een certificeringsinstantie (CA). De CSR bevat de openbare sleutel van een sleutelpaar en aanvullende informatie. Deze moet u tijdens het ondertekeningsproces in het certificaat opnemen.

Tijdens het genereren van de CSR wordt u gevraagd om identificerende informatie te verstrekken, die bekend staat als een Distinguished Name (DN). De DN bevat velden die nodig zijn voor het certificaat, zoals de Common Name (CN), wat de exacte Fully Qualified Domain Name (FQDN) is van de host die het certificaat zal gebruiken. De andere velden van de DN zijn voor aanvullende informatie zoals land, staat, plaatsnaam en organisatie- of bedrijfsnaam als u certificaten genereert die specifiek zijn voor uw bedrijf. U kunt ervoor kiezen om de prompts over te slaan door de informatie uit een bestand of via de opdrachtregel op te geven.

Bekijk een voorbeeld van de CSR-informatieprompt in de onderstaande schermafbeelding:

U kunt de informatie in een opdracht op één regel opgeven om de prompts te vermijden door de vlag -subj toe te voegen, zoals hieronder weergegeven, en de informatie voor de velden op te geven:

Het bovenstaande commando gebruikt dezelfde informatie die wordt weergegeven in het codeblokvoorbeeld van CSR-informatieprompts.

Sectie 2: Certificate Signing Requests genereren

In deze sectie behandelen we de OpenSSL-commando's die u kunt gebruiken om CSR's en privésleutels te genereren. CSR's zijn nodig voor het aanvragen van SSL-certificaten bij een certificeringsinstantie (CA).

Een privésleutel en een Certificate Signing Request genereren

U kunt deze methode gebruiken als u wilt dat een certificeringsinstantie een SSL-certificaat uitgeeft om uw Apache of Nginx server om verkeer over HTTPS te serveren, d.w.z. HTTP met TLS. De CSR die met de opdracht is gegenereerd, kan naar een CA worden verzonden om een door de CA ondertekend SSL-certificaat aan te vragen. U kunt onze gedetailleerde handleidingen volgen over het instellen van uw Apache of Nginx servers op Ubuntu.

Voer de volgende opdracht in uw terminal in om een 2048-bits privésleutel (domain.key) en CSR (domain.csr) vanaf nul te genereren:

Beantwoord de vragen met uw specifieke CSR-informatie. Optioneel kunt u de vlag -subj aan de opdracht toevoegen om de vragen te vermijden:

De -newkey rsa:2048 vlag geeft aan dat de sleutel moet worden gegenereerd met behulp van het 2048-bits RSA-algoritme. De -nodes vlag geeft aan dat er geen wachtwoordversleuteling is voor de privésleutel. Er is een -new optie die niet is opgenomen maar wel wordt geïmpliceerd om aan te geven dat er een nieuwe CSR wordt gegenereerd.

Een Certificate Signing Request genereren op basis van een bestaande privésleutel

Als u al een privésleutel heeft, kunt u deze methode gebruiken om een CSR te genereren. U gebruikt deze vervolgens om een SSL-certificaat aan te vragen bij een CA. Voer de volgende opdracht in om een nieuwe CSR (domain.csr) te genereren met behulp van een bestaande privésleutel (domain.key):

Beantwoord de vragen met uw specifieke CSR-informatie. Optioneel kunt u de -subj-vlag aan de opdracht toevoegen om de vragen te vermijden:

De vlag -key specificeert de bestaande privésleutel (domain.key) die moet worden gebruikt om een nieuwe CSR te genereren. De -new vlag geeft aan dat er een nieuwe CSR wordt gegenereerd.

Een Certificate Signing Request genereren op basis van een bestaand certificaat en privésleutel

Als u al een bestaand certificaat heeft dat u wilt gebruiken om een CSR te genereren, kunt u deze methode gebruiken. Deze methode kan handig zijn als u of uw CA de originele CSR verliest en u deze moet genereren met de eerder ingevoerde CSR-informatie zonder deze opnieuw te hoeven invoeren. De opdracht extraheert de informatie uit het bestaande certificaat. Voer de volgende opdracht in uw terminal in om een nieuwe CSR (domain.csr) te maken met behulp van een bestaand certificaat (domain.crt) en een bestaande privésleutel (domain.key):

De optie -x509toreq geeft aan dat u het X509-certificaat gebruikt om de CSR te genereren.

Sectie 3: SSL-certificaten genereren

In sommige situaties wilt u misschien een SSL-certificaat gebruiken zonder het gedoe van het verkrijgen van een door een CA ondertekend certificaat. In deze sectie wordt uitgelegd hoe u uw eigen certificaten kunt ondertekenen. Het is geldig en gratis. Deze certificaten worden aangeduid als zelfondertekende certificaten, en ze komen vrij vaak voor.

Een zelfondertekend certificaat is ondertekend met zijn eigen privésleutel. Zowel zelfondertekende als door een CA ondertekende certificaten werken even goed om gegevens en websiteverkeer te versleutelen. Bij zelfondertekende certificaten krijgen gebruikers echter meestal een waarschuwing in hun browser dat het certificaat niet wordt vertrouwd. Daarom kunt u zelfondertekende certificaten gebruiken voor websites die geen gevoelige informatie met gebruikers uitwisselen, of op niet-productieservers. Hieronder vindt u de OpenSSL-opdrachten die u kunt gebruiken om zelfondertekende certificaten te genereren.

  • Een zelfondertekend certificaat genereren

U kunt deze methode gebruiken om een SSL-certificaat te genereren om uw Apache- of Nginx-server te beveiligen. Dit zorgt ervoor dat het verkeer via HTTPS of HTTP over TLS verloopt, zonder dat u naar een CA hoeft te gaan om het certificaat te ondertekenen:

Beantwoord de vragen met uw specifieke CSR-informatie. Optioneel kunt u de -subj-vlag aan de opdracht toevoegen om de vragen te vermijden:

De -x509 vlag geeft het maken van een zelfondertekend certificaat aan. De -days 365 optie specificeert het aantal dagen dat het certificaat geldig zal zijn. In dit geval is dat 365 dagen. U kunt ook een ander aantal dagen kiezen. De opdracht genereert een tijdelijke CSR om de informatie te bevatten die u aan het certificaat moet koppelen.

  • Een zelfondertekend certificaat genereren op basis van een bestaande privésleutel

Deze methode helpt u bij het genereren van een zelfondertekend certificaat op basis van uw reeds bestaande privésleutel. Voer de volgende opdracht in om een zelfondertekend certificaat (domain.crt) te genereren met behulp van een bestaande privésleutel (domain.key):

Voorzie de vragen van uw specifieke CSR-informatie. Optioneel kunt u de -subj-vlag aan de opdracht toevoegen om de vragen te vermijden:

De -x509 vlag geeft het maken van een zelfondertekend certificaat aan. De -days 365 optie specificeert het aantal dagen dat het certificaat geldig zal zijn. In dit geval is dat 365 dagen. U kunt ook een ander aantal dagen kiezen. De -new optie start de prompt voor CSR-informatie.

Sectie 4: Certificaten bekijken

Certificaten en CSR-bestanden worden gecodeerd en opgeslagen met de .pem extensie. Dit staat voor Privacy-Enhanced Mail. Het is een bestandsindeling voor het opslaan en verzenden van cryptografische sleutels, certificaten en andere cruciale gegevens. PEM-bestanden zijn niet direct leesbaar voor mensen. In deze sectie vindt u opdrachten die u kunt gebruiken om de vermeldingen uit de gecodeerde PEM-bestanden te bekijken.

  • CSR-bestanden bekijken

Voer de volgende opdracht in om de inhoud van een CSR (domain.csr) in uw terminal te bekijken en te verifiëren:

De bovenstaande opdracht kan bijvoorbeeld zoiets als dit uitvoeren:

Viewing CSR files

  • Certificaatvermeldingen bekijken

Voer de volgende opdracht in om de inhoud van een certificaat (domain.crt):

De bovenstaande opdracht kan zoiets als dit uitvoeren:

OpenSSL

  • Verifiëren of een certificaat is ondertekend door een certificeringsinstantie

Om te verifiëren of een certificaat (domain.crt) is ondertekend door een bepaald CA-certificaat (ca.crt), voert u de volgende opdracht in:

 

Sectie 5: Privésleutels

Als u op zoek bent naar OpenSSL-opdrachten die nodig zijn voor het maken en verifiëren van privésleutels, dan is deze sectie voor u.

  • Een privésleutel maken

Om een met een wachtwoord beveiligde 2048-bits privésleutel (domain.key) te maken, voert u de volgende opdracht in uw terminal in:

De opdracht vraagt u om een wachtwoord om het proces te voltooien. Zie de onderstaande schermafbeelding:

Creating a Private Key

  • Een privésleutel verifiëren

Om de geldigheid van een privésleutel (domain.key) te verifiëren, voert u de volgende opdracht in uw terminal in:

Vervolgens moet u een wachtwoord opgeven. Als de privésleutel is versleuteld en u de juiste wachtwoordzin invoert, wordt de niet-versleutelde sleutel op de terminal weergegeven. Zie de screenshot hieronder:

Verifying a Private Key

  • Verifiëren of een privésleutel overeenkomt met een certificaat en CSR

Als u wilt controleren of een privésleutel (domain.key) overeenkomt met een certificaat (domain.crt) en een CSR (domain.csr), voer dan de volgende opdrachten in op uw terminal:

Als u merkt dat de uitvoer van de bovenstaande opdrachten identiek is, is het mogelijk dat de privésleutel, het certificaat en de CSR aan elkaar gerelateerd zijn.

  • Een privésleutel versleutelen

Als u een niet-versleutelde privésleutel hebt (unencrypted.key) en u wilt de versleutelde versie van de sleutel verkrijgen (encrypted.key), voer dan de volgende opdracht in op uw terminal:

De opdracht zal u om een wachtwoordzin vragen om de privésleutel te versleutelen.

  • Een privésleutel ontsleutelen

Als u een versleutelde privésleutel hebt (encrypted.key) en u wilt de ontsleutelde versie ervan verkrijgen (decrypted.key), voer dan de volgende opdracht in op uw terminal:

De opdracht zal u om een wachtwoordzin vragen voor de versleutelde sleutel. Als u de juiste wachtwoordzin invoert, wordt deze ontsleuteld. De uitvoer gaat naar decrypted.key.

 

Sectie 6: Certificaatformaten converteren

U heeft misschien gemerkt dat we tot nu toe hebben gewerkt met X.509 -certificaten die zijn gecodeerd met ASCII PEM. Hoewel dat prima is, is er een verscheidenheid aan andere certificaatcoderings- en containertypen die u kunt gebruiken. In sommige toepassingen geeft u wellicht de voorkeur aan bepaalde formaten boven andere. Bovendien kunnen sommige verschillende formaten meerdere items bevatten, zoals een privésleutel, CSR en door een CA ondertekend certificaat in één bestand. U kunt OpenSSL ook gebruiken om te converteren tussen verschillende certificaatformaten. Lees verder voor enkele OpenSSL-opdrachten voor het converteren van certificaatformaten.

  • PEM naar DER converteren

DER (Distinguished Encoding Rules) is een binaire codering voor X.509 -certificaten en privésleutels. Om een PEM-gecodeerd certificaat (domain.crt) te converteren naar een DER-gecodeerd certificaat (domain.der), voert u de volgende opdracht in:

U zult de meeste toepassingen van het DER-coderingsformaat vinden in de programmeertaal Java. Volg deze handleiding voor een snelle installatie van Java op uw Ubuntu-server.

  • DER naar PEM converteren

Om een DER-gecodeerd certificaat (domain.der) te converteren naar een PEM-certificaat (domain.crt), voert u de volgende opdracht in:

 

  • PEM naar PKCS7 converteren

U wilt misschien PEM-certificaten, bijvoorbeeld domain.crt en ca-chain.crt toevoegen aan een PKCS7-bestand (domain.p7b). Hier is de opdracht om dit te bereiken:

U kunt de optie -certfile meerdere keren gebruiken om de certificaten op te geven die aan het PKCS7-bestand moeten worden toegevoegd. PKCS7-bestanden zijn vooral relevant voor de Java Key stores en Microsoft IIS. Ze staan ook bekend als P7B-bestanden en zijn ASCII-bestanden die certificaten en door een CA ondertekende certificaten kunnen bevatten.

  • PKCS7 naar PEM converteren

Om een PKCS7-bestand (domain.p7b) te converteren naar een PEM-gecodeerd bestand (domain.crt), voert u de volgende opdracht in op uw terminal:

 

  • PEM naar PKCS12 converteren

Om een privésleutel (domain.key) en een certificaat (domain.crt) te combineren in een PKCS12-bestand (domain.pfx), voer het volgende commando in:

Het commando zal u vragen om de exportwachtwoorden in te voeren, die u optioneel leeg kunt laten. U kunt meerdere certificaten aan het PKCS12-bestand koppelen door de certificaten in een enkel PEM-bestand (domain.crt) samen te voegen. PKCS12 is ook bekend als PFX en wordt meestal gebruikt in Microsoft IIS.

  • PKCS12 naar PEM converteren

Om een PKCS12-bestand te converteren (domain.pfx) naar een PEM-gecodeerd formaat (domain.combined.crt), voer het volgende commando in:

Het PEM-bestand dat door het bovenstaande commando is gemaakt, bevat alle verschillende items die het PKCS12-bestand bevatte.

Sectie 7: OpenSSL-versie controleren

De versie van de software die u gebruikt, kan invloed hebben op de mogelijkheden van de applicaties die u uitvoert. Daarom is het noodzakelijk om de versie vast te stellen. Hetzelfde geldt voor OpenSSL. Sommige opdrachtregelopties kunnen in de ene versie ontbreken en in een andere versie wel beschikbaar zijn. Om de versie van OpenSSL te bekijken die u gebruikt, voert u het volgende commando in:

Hieronder ziet u de uitvoer die we kregen toen we het bovenstaande commando uitvoerden tijdens het maken van deze handleiding:

Hieronder vindt u de daadwerkelijke screenshot:

OpenSSL

Conclusie

In deze handleiding hebben we uitgelegd wat OpenSSL is, hebben we certificate signing requests (CSR) behandeld en enkele van de cruciale OpenSSL-commando's die u in uw serveromgeving kunt gebruiken.

Missen we een cruciaal commando of heeft u problemen met een van de commando's in uw serverconfiguratie op CloudSigma? Neem gerust contact op met onze 24/7 klantenservice via de live chat om het te bespreken.

Veel computerplezier!

author

Manpreet Singh

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.