Hoe een Certificaat Autoriteit (CA) instellen en configureren op Ubuntu 20.04

Inleiding

Een Certificaat Autoriteit (CA) is een entiteit die verantwoordelijk is voor het uitgeven van digitale certificaten om identiteiten op het internet te verifiëren. Hoewel publieke CA’s een populaire keuze zijn voor het verifiëren van de identiteit van websites en andere diensten die aan het grote publiek worden aangeboden, worden private CA’s meestal gebruikt voor gesloten groepen en private diensten.

Het bouwen van een private Certificate Authority stelt u in staat om programma’s te configureren, te testen en uit te voeren die versleutelde verbindingen tussen een client en een server vereisen. Met een private CA kunt u certificaten uitgeven voor gebruikers, servers, of individuele programma’s en diensten binnen uw infrastructuur.

Enkele voorbeelden van programma’s op Linux die hun eigen private CA gebruiken zijn OpenVPN en Puppet . U kunt ook uw webserver configureren om certificaten te gebruiken die zijn uitgegeven door een privé-CA om ontwikkelings- en stagingomgevingen te laten overeenkomen met productieservers die TLS gebruiken om verbindingen te versleutelen.

In deze gids leren we hoe u een privé-Certificaatinstantie instelt op een Ubuntu 20.04-server, en hoe u een testcertificaat genereert en ondertekent met behulp van uw nieuwe CA. U zult ook leren hoe u het publieke certificaat van de CA-server kunt importeren in de certificaatopslag van uw besturingssysteem, zodat u de vertrouwensketen tussen de CA en externe servers of gebruikers kunt verifiëren. Tenslotte leert u hoe u certificaten intrekt en een Certificate Revocation List verspreidt om er zeker van te zijn dat alleen geautoriseerde gebruikers en systemen diensten kunnen gebruiken die op uw CA vertrouwen.

Voorvereisten

Om deze zelfstudie te voltooien, heeft u toegang nodig tot een Ubuntu 20.04 server om uw CA server te hosten. U zult een niet-root gebruiker met sudo rechten moeten configureren voordat u met deze handleiding begint. U kunt onze Ubuntu 20.04 initiële server setup gids volgen om een gebruiker met de juiste rechten in te stellen. De gelinkte handleiding zal ook een firewall instellen, waarvan wordt aangenomen dat deze is ingesteld in deze handleiding.

Deze server zal worden aangeduid als de CA Server in deze handleiding.

Zorg ervoor dat de CA Server een standalone systeem is. Het zal alleen gebruikt worden om certificaataanvragen te importeren, te ondertekenen en in te trekken. Er mogen geen andere diensten op draaien, en in het ideale geval is hij offline of helemaal afgesloten als u niet actief met uw CA werkt.

Note: De laatste sectie van deze zelfstudie is optioneel als u wilt leren over het ondertekenen en intrekken van certificaten. Als u ervoor kiest om deze praktijkstappen te voltooien, hebt u een tweede Ubuntu 20.04-server nodig of u kunt uw eigen lokale Linux-computer gebruiken waarop Ubuntu of Debian draait, of distributies die van een van deze zijn afgeleid.

Stap 1 – Easy-RSA installeren

De eerste taak in deze zelfstudie is het installeren van de easy-rsa-scriptset op uw CA-server. easy-rsa is een Certificate Authority management tool dat u zult gebruiken om een private key en een publiek root certificaat te genereren, die u vervolgens zult gebruiken om verzoeken van clients en servers te ondertekenen die op uw CA zullen vertrouwen.

Log in op uw CA Server als de niet-root sudo gebruiker die u tijdens de initiële installatiestappen heeft aangemaakt en voer het volgende uit:

  • sudo apt update
  • sudo apt install easy-rsa

U zult gevraagd worden om het pakket te downloaden en het te installeren. Druk op y om te bevestigen dat u het pakket wilt installeren.

Op dit punt heeft u alles wat u nodig heeft ingesteld en klaar om Easy-RSA te gebruiken. In de volgende stap maakt u een Public Key Infrastructure aan, en daarna begint u met het bouwen van uw Certificate Authority.

Step 2 – Voorbereiden van een Public Key Infrastructure Directory

Nu u easy-rsa heeft geinstalleerd, is het tijd om een skelet Public Key Infrastructure (PKI) aan te maken op de CA Server. Zorg ervoor dat u nog steeds ingelogd bent als uw niet-root gebruiker en maak een easy-rsa directory aan. Zorg ervoor dat je sudo niet gebruikt om de volgende commando’s uit te voeren, aangezien je normale gebruiker de CA moet beheren en ermee moet werken zonder verhoogde privileges.

  • mkdir ~/easy-rsa

Dit zal een nieuwe directory genaamd easy-rsa in je thuismap aanmaken. We zullen deze directory gebruiken om symbolische links te maken die wijzen naar de easy-rsa pakketbestanden die we in de vorige stap hebben geïnstalleerd. Deze bestanden bevinden zich in de /usr/share/easy-rsa map op de CA Server.

Maak de symlinks met het ln commando:

  • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Note: Terwijl andere gidsen u zouden kunnen instrueren om de easy-rsa pakket bestanden naar uw PKI directory te kopiëren, kiest deze handleiding voor een symlink aanpak. Als gevolg daarvan zullen alle updates van het easy-rsa-pakket automatisch worden weerspiegeld in de scripts van uw PKI.

Om de toegang tot uw nieuwe PKI directory te beperken, zorgt u ervoor dat alleen de eigenaar er toegang toe heeft met het chmod commando:

  • chmod 700 /home/sammy/easy-rsa

Initialiseer tenslotte de PKI in de easy-rsa directory:

  • cd ~/easy-rsa
  • ./easyrsa init-pki
Output
init-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/sammy/easy-rsa/pki

Na het voltooien van deze sectie heeft u een directory die alle bestanden bevat die nodig zijn om een Certificaat Autoriteit te maken. In de volgende sectie zult u de private key en het publieke certificaat voor uw CA aanmaken.

Stap 3 – Een Certificaat Autoriteit Aanmaken

Voordat u de private key en het certificaat van uw CA kunt aanmaken, moet u een bestand genaamd vars aanmaken en vullen met een aantal standaard waarden. Eerst zult u cd in de easy-rsa directory plaatsen, dan zult u het vars bestand maken en bewerken met nano of uw favoriete tekst editor:

  • cd ~/easy-rsa
  • nano vars

Als het bestand eenmaal is geopend, plak dan de volgende regels en bewerk elke gemarkeerde waarde om uw eigen organisatie informatie weer te geven. Het belangrijkste is dat u geen waarden blanco laat:

~/easy-rsa/vars
set_var EASYRSA_REQ_COUNTRY "US"set_var EASYRSA_REQ_PROVINCE "NewYork"set_var EASYRSA_REQ_CITY "New York City"set_var EASYRSA_REQ_ORG "DigitalOcean"set_var EASYRSA_REQ_EMAIL "[email protected]"set_var EASYRSA_REQ_OU "Community"set_var EASYRSA_ALGO "ec"set_var EASYRSA_DIGEST "sha512"

Wanneer u klaar bent, slaat u het bestand op en sluit u het. Als u nano gebruikt, kunt u dit doen door op CTRL+X te drukken, dan Y en ENTER om te bevestigen. U bent nu klaar om uw CA te bouwen.

Om het root publieke en private sleutelpaar voor uw Certificate Authority te maken, voert u het ./easy-rsa commando opnieuw uit, deze keer met de build-ca optie:

  • ./easyrsa build-ca

In de uitvoer ziet u enkele regels over de OpenSSL versie en wordt u gevraagd om een passphrase voor uw sleutelpaar in te voeren. Zorg ervoor dat u een sterke passphrase kiest, en noteer die ergens veilig. U zult de passphrase elke keer moeten invoeren als u met uw CA moet communiceren, bijvoorbeeld om een certificaat te ondertekenen of in te trekken.

U zult ook gevraagd worden om de Common Name (CN) voor uw CA te bevestigen. De CN is de naam die wordt gebruikt om naar deze machine te verwijzen in de context van de Certificaat Autoriteit. U kunt een willekeurige reeks karakters invoeren voor de Common Name van de CA, maar om het eenvoudig te houden drukt u op ENTER om de standaardnaam te accepteren.

Output
. . .Enter New CA Key Passphrase:Re-Enter New CA Key Passphrase:. . .Common Name (eg: your user, host, or server name) :CA creation complete and you may now import and sign cert requests.Your new CA certificate file for publishing is at:/home/sammy/easy-rsa/pki/ca.crt

Note: Als u niet om een wachtwoord gevraagd wilt worden iedere keer dat u met uw CA communiceert, kunt u het build-ca commando met de nopass optie uitvoeren, zoals dit:

  • ./easyrsa build-ca nopass

U heeft nu twee belangrijke bestanden – ~/easy-rsa/pki/ca.crt en ~/easy-rsa/pki/private/ca.key – die de publieke en private componenten vormen van een Certificate Authority.

  • ca.crt is het openbare certificaatbestand van de CA. Gebruikers, servers en klanten zullen dit certificaat gebruiken om te verifiëren dat ze deel uitmaken van hetzelfde vertrouwensweb. Elke gebruiker en server die uw CA gebruikt, moet een kopie van dit bestand hebben. Alle partijen vertrouwen op het openbare certificaat om er zeker van te zijn dat iemand zich niet voordoet als een systeem en een “man-in-the-middle”-aanval uitvoert.

  • ca.key is de privésleutel die de CA gebruikt om certificaten voor servers en clients te ondertekenen. Als een aanvaller toegang krijgt tot uw CA en, op zijn beurt, uw ca.key bestand, zal u uw CA moeten vernietigen. Dit is de reden waarom uw ca.key-bestand alleen op uw CA-machine zou moeten staan en dat, idealiter, uw CA-machine offline zou moeten worden gehouden wanneer u geen certificaataanvragen tekent als extra veiligheidsmaatregel.

Met dat, is uw CA op zijn plaats en het is klaar om te worden gebruikt om certificaataanvragen te tekenen, en om certificaten in te trekken.

Stap 4 – Het distribueren van het openbare certificaat van uw certificeringsinstantie

Nu is uw CA geconfigureerd en klaar om te fungeren als vertrouwensbasis voor alle systemen die u wilt configureren om deze te gebruiken. U kunt het CA-certificaat toevoegen aan uw OpenVPN-servers, webservers, mailservers, enzovoort. Elke gebruiker of server die de identiteit van een andere gebruiker of server in uw netwerk moet verifiëren, zou een kopie van het ca.crt-bestand moeten laten importeren in de certificaatopslag van hun besturingssysteem.

Om het publieke certificaat van de CA in een tweede Linux-systeem te importeren, zoals een andere server of een lokale computer, verkrijgt u eerst een kopie van het ca.crt-bestand van uw CA-server. U kunt het cat commando gebruiken om het in een terminal uit te voeren, en het dan kopiëren en plakken in een bestand op de tweede computer die het certificaat importeert. U kunt ook gereedschappen als scp, rsync gebruiken om het bestand tussen systemen over te zetten. Maar we zullen kopiëren en plakken met nano in deze stap gebruiken, omdat het op alle systemen werkt.

Als uw niet-root gebruiker op de CA Server, voert u het volgende commando uit:

  • cat ~/easy-rsa/pki/ca.crt

Er zal uitvoer in uw terminal verschijnen die lijkt op het volgende:

Output
-----BEGIN CERTIFICATE-----MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .-----END CERTIFICATE-----

Kopieer alles, inclusief de -----BEGIN CERTIFICATE----- en -----END CERTIFICATE----- regels en de streepjes.

Op uw tweede Linux systeem gebruikt u nano of uw favoriete tekst editor om een bestand te openen genaamd /tmp/ca.crt:

  • nano /tmp/ca.crt

Plak de inhoud die u zojuist gekopieerd heeft van de CA Server in de editor. Wanneer u klaar bent, sla het bestand op en sluit het. Als u nano gebruikt, kunt u dit doen door op CTRL+X te drukken, dan Y en ENTER om te bevestigen.

Nu u een kopie van het ca.crt bestand op uw tweede Linux systeem heeft, is het tijd om het certificaat in de certificaat opslag van het besturingssysteem te importeren.

Op Ubuntu en Debian gebaseerde systemen, voert u de volgende commando’s uit als uw niet-root gebruiker om het certificaat te importeren:

Ubuntu en Debian afgeleide distributies
  • sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  • sudo update-ca-certificates

Om het certificaat van de CA Server op CentOS, Fedora, of RedHat gebaseerde systemen te importeren, kopieert en plakt u de inhoud van het bestand op het systeem, net als in het vorige voorbeeld in een bestand genaamd /tmp/ca.crt. Vervolgens kopieert u het certificaat naar /etc/pki/ca-trust/source/anchors/, en voert dan het update-ca-trust commando uit.

CentOS, Fedora, RedHat distributies
  • sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
  • sudo update-ca-trust

Nu zal uw tweede Linux systeem elk certificaat vertrouwen dat door de CA server is ondertekend.

Note: Als u uw CA met webservers gebruikt en Firefox als browser gebruikt, zult u het publieke ca.crt certificaat direct in Firefox moeten importeren. Firefox maakt geen gebruik van de certificaatopslag van het lokale besturingssysteem. Zie dit ondersteuningsartikel van Mozilla over het instellen van certificeringsinstanties (CA’s) in Firefox voor meer informatie over het toevoegen van het certificaat van uw CA aan Firefox.

Als u uw CA gebruikt om te integreren met een Windows-omgeving of desktopcomputers, raadpleegt u de documentatie over hoe u certutil.exe gebruikt om een CA-certificaat te installeren.

Als u deze zelfstudiegids gebruikt als voorkennis voor een andere zelfstudiegids, of als u weet hoe u certificaten ondertekent en intrekt, kunt u hier stoppen. Als u meer wilt leren over het ondertekenen en intrekken van certificaten, wordt elk proces in detail uitgelegd in het volgende optionele gedeelte.

(Optioneel) – Certificate Signing Requests aanmaken en certificaten intrekken

De volgende gedeelten van de zelfstudiegids zijn optioneel. Als u alle voorgaande stappen hebt voltooid, hebt u een volledig geconfigureerde en werkende Certificate Authority die u kunt gebruiken als eerste vereiste voor andere handleidingen. U kunt het ca.crt-bestand van uw CA importeren en certificaten in uw netwerk verifiëren die door uw CA zijn ondertekend.

Als u wilt oefenen en meer wilt leren over hoe u certificaataanvragen ondertekent, en hoe u certificaten intrekt, dan zullen deze optionele secties uitleggen hoe beide processen werken.

(Optioneel) – Een oefencertificaatverzoek aanmaken en ondertekenen

Nu u een CA klaar heeft om te gebruiken, kunt u oefenen met het genereren van een private key en een certificaatverzoek om vertrouwd te raken met het onderteken- en distributieproces.

Een Certificate Signing Request (CSR) bestaat uit drie delen: een publieke sleutel, identificerende informatie over het aanvragende systeem, en een handtekening van het verzoek zelf, die wordt gemaakt met de private sleutel van de aanvragende partij. De private sleutel wordt geheim gehouden, en wordt gebruikt om informatie te versleutelen die iedereen met het getekende publieke certificaat vervolgens kan ontsleutelen.

De volgende stappen worden uitgevoerd op uw tweede Ubuntu of Debian systeem, of een distributie die is afgeleid van een van beide. Het kan een andere server op afstand zijn, of een lokale Linux machine zoals een laptop of een desktop computer. Omdat easy-rsa niet standaard beschikbaar is op alle systemen, zullen we het openssl programma gebruiken om een private sleutel en certificaat te maken.

openssl is meestal standaard geïnstalleerd op de meeste Linux distributies, maar voor de zekerheid kunt u het volgende op uw systeem uitvoeren:

  • sudo apt update
  • sudo apt install openssl

Wanneer u gevraagd wordt om openssl te installeren, voert u y in om door te gaan met de installatiestappen. Nu bent u klaar om een praktijk CSR aan te maken met openssl.

De eerste stap die u moet voltooien om een CSR aan te maken is het genereren van een private key. Om een private key aan te maken met openssl, maakt u een practice-csr directory aan en genereert daarin een sleutel. We zullen deze aanvraag doen voor een fictieve server genaamd sammy-server, in tegenstelling tot het aanmaken van een certificaat dat gebruikt wordt om een gebruiker of een andere CA te identificeren.

  • mkdir ~/practice-csr
  • cd ~/practice-csr
  • openssl genrsa -out sammy-server.key
Output
Generating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)

Nu dat u een private key heeft kunt u een corresponderende CSR aanmaken, opnieuw met het openssl hulpprogramma. U wordt gevraagd een aantal velden in te vullen, zoals Land, Staat, en Stad. U kunt een . invoeren als u een veld leeg wilt laten, maar als dit een echte CSR zou zijn, kunt u het beste de juiste waarden voor uw locatie en organisatie gebruiken:

  • openssl req -new -key sammy-server.key -out sammy-server.req
Output
. . .-----Country Name (2 letter code) :USState or Province Name (full name) :New YorkLocality Name (eg, city) :New York CityOrganization Name (eg, company) :DigitalOceanOrganizational Unit Name (eg, section) :CommunityCommon Name (eg, your name or your server's hostname) :sammy-serverEmail Address :Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password :An optional company name :

Als u deze waarden automatisch wilt toevoegen als onderdeel van de openssl aanroeping in plaats van via de interactieve prompt, kunt u het -subj argument doorgeven aan OpenSSL. Zorg ervoor dat u de gemarkeerde waarden aanpast zodat ze overeenkomen met uw praktijklocatie, organisatie en servernaam:

  • openssl req -new -key sammy-server.key -out server.req -subj \
  • /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server

Om de inhoud van een CSR te verifiëren, kunt u een request bestand inlezen met openssl en de velden daarin onderzoeken:

  • openssl req -in sammy-server.req -noout -subject
Output
subject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

Als u tevreden bent met het onderwerp van uw praktijk certificaat aanvraag, kopieert u het sammy-server.req bestand naar uw CA server met scp:

  • scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

In deze stap heeft u een Certificate Signing Request gegenereerd voor een fictieve server genaamd sammy-server. In een echt scenario zou het verzoek kunnen komen van iets als een staging of development webserver die een TLS certificaat nodig heeft om te testen; of het zou kunnen komen van een OpenVPN server die een certificaat aanvraagt zodat gebruikers verbinding kunnen maken met een VPN. In de volgende stap gaan we het certificaat ondertekenen met de private sleutel van de CA-server.

(Optioneel) – Ondertekenen van een CSR

In de vorige stap hebt u een oefencertificaataanvraag en -sleutel gemaakt voor een fictieve server. U hebt het gekopieerd naar de /tmp directory op uw CA-server, waarmee u het proces emuleert dat u zou gebruiken als u echte clients of servers had die u CSR-verzoeken stuurden die ondertekend moesten worden.

Het fictieve scenario voortzettend, moet de CA-server nu het oefencertificaat importeren en het ondertekenen. Zodra een certificaataanvraag door de CA is gevalideerd en teruggestuurd naar een server, zullen clients die de Certificate Authority vertrouwen ook in staat zijn om het nieuw uitgegeven certificaat te vertrouwen.

Omdat we binnen de CA’s PKI zullen werken waar de easy-rsa utility beschikbaar is, zullen de ondertekenstappen de easy-rsa utility gebruiken om dingen makkelijker te maken, in tegenstelling tot het direct gebruiken van de openssl zoals we in het vorige voorbeeld deden.

De eerste stap om de fictieve CSR te ondertekenen is het importeren van het certificaatverzoek met behulp van het easy-rsa script:

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output
. . .The request has been successfully imported with a short name of: sammy-serverYou may now use this name to perform signing operations on this request.

Nu kunt u het verzoek ondertekenen door het easyrsa script uit te voeren met de sign-req optie, gevolgd door het type verzoek en de Common Name die in het CSR is opgenomen. Het request type kan één van client, server, of ca zijn. Aangezien we oefenen met een certificaat voor een fictieve server, moet u het verzoektype server gebruiken:

  • ./easyrsa sign-req server sammy-server

In de uitvoer wordt u gevraagd om te verifiëren dat het verzoek afkomstig is van een betrouwbare bron. Typ yes en druk dan op ENTER om dit te bevestigen:

Output
You are about to sign the following certificate.Please check over the details shown below for accuracy. Note that this requesthas not been cryptographically verified. Please be sure it came from a trustedsource or that you have verified the request checksum with the sender.Request subject, to be signed as a server certificate for 3650 days:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Confirm request details: yes. . .Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

Als u uw CA-sleutel hebt gecodeerd, wordt u om uw wachtwoord gevraagd op dit punt.

Als deze stappen voltooid zijn, hebt u de sammy-server.req CSR ondertekend met de privé sleutel van de CA-server in /home/sammy/easy-rsa/pki/private/ca.key. Het resulterende sammy-server.crt bestand bevat de publieke encryptie sleutel van de praktijkserver, evenals een nieuwe handtekening van de CA Server. Het doel van de handtekening is om iedereen die de CA vertrouwt te vertellen dat ze ook het sammy-server certificaat kunnen vertrouwen.

Als dit verzoek voor een echte server was, zoals een webserver of VPN-server, zou de laatste stap op de CA-server zijn om de nieuwe sammy-server.crt en ca.crt bestanden van de CA-server te distribueren naar de server op afstand die het CSR-verzoek heeft gedaan:

  • scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  • scp pki/ca.crt sammy@your_server_ip:/tmp

Op dit punt zou u in staat zijn om het uitgegeven certificaat te gebruiken met iets als een webserver, een VPN, configuratiemanagementtool, databasesysteem, of voor clientauthenticatiedoeleinden.

(Optioneel) – Een certificaat intrekken

Occasioneel kan het nodig zijn om een certificaat in te trekken om te voorkomen dat een gebruiker of server het gebruikt. Misschien is iemands laptop gestolen, is een webserver gecompromitteerd, of heeft een werknemer of contractor uw organisatie verlaten.

Om een certificaat in te trekken, volgt het algemene proces deze stappen:

  1. Herroep het certificaat met het ./easyrsa revoke client_name commando.
  2. Genereer een nieuwe CRL met het ./easyrsa gen-crl commando.
  3. Stuur het bijgewerkte crl.pem-bestand naar de server of servers die op uw CA vertrouwen, en kopieer het op die systemen naar de vereiste directory of directories voor programma’s die ernaar verwijzen.
  4. Start alle services opnieuw die uw CA en het CRL-bestand gebruiken.

U kunt dit proces gebruiken om certificaten die u eerder hebt uitgegeven op elk gewenst moment in te trekken. We zullen elke stap in detail bespreken in de volgende secties, te beginnen met het revoke commando.

Een certificaat intrekken

Om een certificaat in te trekken, navigeert u naar de easy-rsa directory op uw CA server:

  • cd ~/easy-rsa

Daarna voert u het easyrsa script uit met de revoke optie, gevolgd door de naam van de client die u wenst in te trekken. Volgens het praktijkvoorbeeld hierboven is de Common Name van het certificaat sammy-server:

  • ./easyrsa revoke sammy-server

Dit zal u vragen om de intrekking te bevestigen door yes:

Output
Please confirm you wish to revoke the certificate with the following subject:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Continue with revocation: yes. . .Revoking Certificate 8348B3F146A765581946040D5C4D590A. . .

Noteer de gemarkeerde waarde op de Revoking Certificate regel. Deze waarde is het unieke serienummer van het certificaat dat wordt ingetrokken. Als u de revocation list in de laatste stap van deze sectie wilt bekijken om te controleren of het certificaat erin staat, heeft u deze waarde nodig.

Nadat u de actie heeft bevestigd, zal de CA het certificaat intrekken. Systemen op afstand die afhankelijk zijn van de CA hebben echter geen manier om te controleren of er certificaten zijn ingetrokken. Gebruikers en servers kunnen het certificaat nog steeds gebruiken totdat de Certificate Revocation List (CRL) van de CA is verspreid onder alle systemen die op de CA vertrouwen.

In de volgende stap genereert u een CRL of werkt u een bestaand crl.pem bestand bij.

Generating a Certificate Revocation List

Nu u een certificaat hebt ingetrokken, is het belangrijk om de lijst met ingetrokken certificaten op uw CA-server bij te werken. Zodra u een bijgewerkte revocation list heeft, kunt u zien welke gebruikers en systemen geldige certificaten in uw CA hebben.

Om een CRL te genereren, voert u het easy-rsa commando uit met de gen-crl optie terwijl u nog in de ~/easy-rsa directory zit:

  • ./easyrsa gen-crl

Als u een passphrase heeft gebruikt bij het maken van uw ca.key bestand, zal u gevraagd worden om deze in te voeren. Het gen-crl commando zal een bestand genereren met de naam crl.pem, met daarin de bijgewerkte lijst van ingetrokken certificaten voor die CA.

Nogmaals moet u het bijgewerkte crl.pem bestand overbrengen naar alle servers en clients die afhankelijk zijn van deze CA, elke keer dat u het gen-crl commando uitvoert. Anders zullen clients en systemen nog steeds toegang kunnen krijgen tot services en systemen die uw CA gebruiken, aangezien die services op de hoogte moeten zijn van de ingetrokken status van het certificaat.

Een Certificaat Revocation List Overbrengen

Nu u een CRL op uw CA-server hebt gegenereerd, moet u deze overbrengen naar systemen op afstand die op uw CA vertrouwen. Om dit bestand naar uw servers over te brengen, kunt u het scp commando gebruiken.

Note: Deze tutorial legt uit hoe u handmatig een CRL genereert en distribueert. Hoewel er meer robuuste en geautomatiseerde methodes zijn om revocation lists te distribueren en te controleren, zoals OCSP-Stapling, valt het configureren van die methodes buiten het bereik van dit artikel.

Zorg ervoor dat u bent ingelogd op uw CA-server als uw niet-root gebruiker en voer het volgende uit, waarbij u uw eigen server IP of DNS-naam vervangt door your_server_ip:

  • scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

Nu het bestand op het externe systeem staat, is de laatste stap om alle diensten bij te werken met de nieuwe kopie van de revocation list.

Diensten bijwerken die een CRL ondersteunen

Het opsommen van de stappen die u moet gebruiken om diensten bij te werken die het crl.pem bestand gebruiken, valt buiten het bestek van deze handleiding. In het algemeen moet u het crl.pem-bestand kopiëren naar de locatie die de dienst verwacht en het dan opnieuw opstarten met systemctl.

Wanneer u uw diensten hebt bijgewerkt met het nieuwe crl.pem-bestand, zullen uw diensten verbindingen kunnen weigeren van clients of servers die een ingetrokken certificaat gebruiken.

De inhoud van een CRL onderzoeken en verifiëren

Als u een CRL-bestand wilt onderzoeken, bijvoorbeeld om een lijst van ingetrokken certificaten te bevestigen, gebruikt u het volgende openssl-commando vanuit uw easy-rsa directory op uw CA-server:

  • cd ~/easy-rsa
  • openssl crl -in pki/crl.pem -noout -text

U kunt dit commando ook uitvoeren op elke server of elk systeem waarop het openssl-hulpprogramma is geïnstalleerd met een kopie van het crl.pem-bestand. Als u bijvoorbeeld het crl.pem bestand naar uw tweede systeem hebt overgezet en wilt verifiëren dat het sammy-server certificaat is ingetrokken, kunt u een openssl commando als het volgende gebruiken, waarbij u het serienummer dat u eerder hebt genoteerd toen u het certificaat introk, vervangt door het gemarkeerde nummer hier:

  • openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output
Serial Number: 8348B3F146A765581946040D5C4D590A Revocation Date: Apr 1 20:48:02 2020 GMT

Merk op hoe het grep commando wordt gebruikt om te controleren op het unieke serienummer dat u noteerde in de intrekkingsstap. Nu kunt u de inhoud van uw Certificate Revocation List controleren op elk systeem dat erop vertrouwt om de toegang tot gebruikers en services te beperken.

Conclusion

In deze tutorial heeft u een private Certificate Authority gemaakt met het Easy-RSA pakket op een standalone Ubuntu 20.04 server. Je hebt geleerd hoe het vertrouwensmodel werkt tussen partijen die vertrouwen op de CA. U hebt ook een Certificate Signing Request (CSR) voor een praktijkserver aangemaakt en ondertekend en daarna hebt u geleerd hoe u een certificaat kunt intrekken. Tenslotte heeft u geleerd hoe u een Certificate Revocation List (CRL) kunt genereren en distribueren voor elk systeem dat op uw CA vertrouwt, om er zeker van te zijn dat gebruikers of servers die geen toegang mogen hebben tot services, dit ook niet mogen.

Nu kunt u certificaten uitgeven voor gebruikers en ze gebruiken met services zoals OpenVPN. U kunt uw CA ook gebruiken om ontwikkelings- en staging-webservers te configureren met certificaten om uw niet-productieomgevingen te beveiligen. Het gebruik van een CA met TLS-certificaten tijdens de ontwikkeling kan helpen ervoor te zorgen dat uw code en omgevingen zo goed mogelijk overeenkomen met uw productieomgeving.

Als u meer wilt leren over het gebruik van OpenSSL, onze OpenSSL Essentials: Werken met SSL-certificaten, private sleutels en CSR’s bevat veel aanvullende informatie om u meer vertrouwd te maken met de grondbeginselen van OpenSSL.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.