Så här konfigurerar du en certifikatutfärdare i Ubuntu 20.04
Introduktion
En certifikatutfärdare (CA) är en enhet som ansvarar för att utfärda digitala certifikat för att verifiera identiteter på internet. Även om offentliga certifikatutfärdare är ett populärt val för att verifiera identiteten hos webbplatser och andra tjänster som tillhandahålls allmänheten, används privata certifikatutfärdare vanligtvis för slutna grupper och privata tjänster.
Byggandet av en privat certifikatutfärdare gör det möjligt för dig att konfigurera, testa och köra program som kräver krypterade anslutningar mellan en klient och en server. Med en privat certifikatutfärdare kan du utfärda certifikat för användare, servrar eller enskilda program och tjänster inom din infrastruktur.
Några exempel på program på Linux som använder sin egen privata certifikatutfärdare är OpenVPN och Puppet . Du kan också konfigurera din webbserver så att den använder certifikat som utfärdats av en privat certifikatutfärdare för att utvecklings- och staging-miljöer ska matcha produktionsservrar som använder TLS för att kryptera anslutningar.
I den här guiden lär vi oss hur du konfigurerar en privat certifikatutfärdare på en Ubuntu 20.04-server och hur du genererar och signerar ett testcertifikat med din nya certifikatutfärdare. Du lär dig också hur du importerar CA-serverns offentliga certifikat till operativsystemets certifikatarkiv så att du kan verifiera förtroendekedjan mellan CA och fjärrservrar eller fjärranvändare. Slutligen lär du dig hur du återkallar certifikat och distribuerar en Certificate Revocation List för att se till att endast auktoriserade användare och system kan använda tjänster som är beroende av din CA.
Förutsättningar
För att slutföra den här handledningen behöver du tillgång till en Ubuntu 20.04-server som värd för din CA-server. Du måste konfigurera en icke-rootanvändare med sudo
-privilegier innan du startar den här guiden. Du kan följa vår guide för Ubuntu 20.04 initial serverkonfiguration för att konfigurera en användare med lämpliga behörigheter. I den länkade handledningen konfigureras också en brandvägg, som antas vara på plats under hela den här handledningen.
Denna server kommer att kallas CA-server i den här handledningen.
Säkerställ att CA-servern är ett fristående system. Den kommer endast att användas för att importera, signera och återkalla certifikatförfrågningar. Den ska inte köra några andra tjänster, och helst ska den vara offline eller helt avstängd när du inte arbetar aktivt med din certifikatutfärdare.
Notera: Det sista avsnittet i den här handledningen är valfritt om du vill lära dig hur man signerar och återkallar certifikat. Om du väljer att genomföra dessa övningssteg behöver du en andra Ubuntu 20.04-server eller så kan du också använda din egen lokala Linux-dator som kör Ubuntu eller Debian, eller distributioner som härrör från någon av dessa.
Steg 1 – Installera Easy-RSA
Den första uppgiften i den här handledningen är att installera easy-rsa
uppsättningen skript på din CA-server. easy-rsa
är ett verktyg för hantering av certifikatutfärdare som du kommer att använda för att generera en privat nyckel och ett offentligt rotcertifikat som du sedan kommer att använda för att signera förfrågningar från klienter och servrar som kommer att förlita sig på din certifikatutfärdare.
Logga in på din certifikatutfärdare-server som den sudo-användare som inte är en root-användare och som du skapade under de första installationsstegen och kör följande:
- sudo apt update
- sudo apt install easy-rsa
Du kommer att uppmanas att ladda ner paketet och installera det. Tryck y
för att bekräfta att du vill installera paketet.
I det här läget har du allt du behöver ställt in och är redo att använda Easy-RSA. I nästa steg kommer du att skapa en infrastruktur för offentliga nycklar och sedan börja bygga din certifikatutfärdare.
Steg 2 – Förberedelse av en katalog för infrastruktur för offentliga nycklar
Nu när du har installerat easy-rsa
är det dags att skapa ett skelett av en infrastruktur för offentliga nycklar (PKI) på CA-servern. Se till att du fortfarande är inloggad som din icke-rootanvändare och skapa en easy-rsa
-katalog. Se till att du inte använder sudo för att köra något av följande kommandon, eftersom din normala användare ska hantera och interagera med CA utan förhöjda privilegier.
- mkdir ~/easy-rsa
Detta kommer att skapa en ny katalog som heter easy-rsa
i din hemmapp. Vi kommer att använda den här katalogen för att skapa symboliska länkar som pekar på easy-rsa
-paketfilerna som vi installerade i föregående steg. Dessa filer finns i mappen /usr/share/easy-rsa
på CA-servern.
Skapa symboliska länkar med kommandot ln
:
- ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Observera: Medan andra handledningar kanske instruerar dig att kopiera easy-rsa
-paketfilerna till PKI-katalogen, använder den här handledningen en symbolisk länk. Detta innebär att alla uppdateringar av easy-rsa
-paketet automatiskt kommer att återspeglas i din PKI:s skript.
För att begränsa åtkomsten till din nya PKI-katalog ser du till att endast ägaren kan komma åt den med hjälp av kommandot chmod
:
- chmod 700 /home/sammy/easy-rsa
Sluttligen initialiserar du PKI:n inne i easy-rsa
-katalogen:
- cd ~/easy-rsa
- ./easyrsa init-pki
Outputinit-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/sammy/easy-rsa/pki
När du har avslutat det här avsnittet har du en katalog som innehåller alla filer som behövs för att skapa en certifikatutfärdare. I nästa avsnitt kommer du att skapa den privata nyckeln och det offentliga certifikatet för din CA.
Steg 3 – Skapa en certifikatutfärdare
För att du ska kunna skapa din CA:s privata nyckel och certifikat måste du skapa och fylla på en fil som heter vars
med några standardvärden. Först ska du cd
till katalogen easy-rsa
, sedan ska du skapa och redigera filen vars
med nano
eller din föredragna textredigerare:
- cd ~/easy-rsa
- nano vars
När filen är öppnad, klistrar du in följande rader och redigerar varje markerat värde för att återspegla din egen organisationsinformation. Det viktiga här är att se till att du inte lämnar något av värdena tomt:
~/easy-rsa/varsset_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"
När du är klar, spara och stäng filen. Om du använder nano
kan du göra det genom att trycka på CTRL+X
, sedan Y
och ENTER
för att bekräfta. Du är nu redo att bygga din certifikatutfärdare.
För att skapa det offentliga och privata nyckelparet för din certifikatutfärdare kör du kommandot ./easy-rsa
igen, den här gången med alternativet build-ca
:
- ./easyrsa build-ca
I utmatningen ser du några rader om OpenSSL-versionen och du blir ombedd att ange en lösenfras för ditt nyckelpar. Se till att välja en stark lösenfras och notera den på ett säkert ställe. Du kommer att behöva ange lösenfrasen varje gång du behöver interagera med din certifikatutfärdare, till exempel för att signera eller återkalla ett certifikat.
Du kommer också att bli ombedd att bekräfta det gemensamma namnet (CN) för din certifikatutfärdare. CN är det namn som används för att hänvisa till den här maskinen i samband med certifikatutfärdaren. Du kan ange vilken teckensträng som helst för CA:s gemensamma namn, men för enkelhetens skull trycker du på RETUR för att acceptera standardnamnet.
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
Notera: Om du inte vill bli ombedd att ange ett lösenord varje gång du interagerar med din certifikatutfärdare kan du köra kommandot build-ca
med alternativet nopass
, så här:
- ./easyrsa build-ca nopass
Du har nu två viktiga filer – ~/easy-rsa/pki/ca.crt
och ~/easy-rsa/pki/private/ca.key
– som utgör de offentliga och privata komponenterna i en certifikatutfärdare.
-
ca.crt
är certifikatutfärdarens offentliga certifikatfil. Användare, servrar och klienter använder det här certifikatet för att verifiera att de är en del av samma förtroendenät. Alla användare och servrar som använder din certifikatutfärdare måste ha en kopia av den här filen. Alla parter kommer att förlita sig på det offentliga certifikatet för att säkerställa att någon inte utger sig för att vara ett system och utföra en Man-in-the-middle-attack. -
ca.key
är den privata nyckel som certifikatutfärdaren använder för att signera certifikat för servrar och klienter. Om en angripare får tillgång till din CA och i sin tur dinca.key
-fil måste du förstöra din CA. Detta är anledningen till att dinca.key
-fil endast bör finnas på din CA-maskin och att din CA-maskin helst bör hållas offline när den inte signerar certifikatförfrågningar som en extra säkerhetsåtgärd.
Därmed är din CA på plats och den är redo att användas för att signera certifikatförfrågningar och för att återkalla certifikat.
Steg 4 – Distribuera din certifikatutfärdares offentliga certifikat
Nu är din certifikatutfärdare konfigurerad och redo att fungera som en förtroenderot för alla system som du vill konfigurera för att använda den. Du kan lägga till certifikatutfärdarens certifikat till dina OpenVPN-servrar, webbservrar, e-postservrar och så vidare. Alla användare eller servrar som behöver verifiera identiteten hos en annan användare eller server i ditt nätverk bör ha en kopia av ca.crt
-filen importerad till sitt operativsystems certifikatarkiv.
Om du vill importera certifikatutfärdarens offentliga certifikat till ett andra Linux-system, t.ex. en annan server eller en lokal dator, skaffar du först en kopia av ca.crt
-filen från din certifikatutfärdarserver. Du kan använda kommandot cat
för att skriva ut den i en terminal och sedan kopiera och klistra in den i en fil på den andra datorn som importerar certifikatet. Du kan också använda verktyg som scp
, rsync
för att överföra filen mellan system. Vi använder dock kopiera och klistra in med nano
i det här steget eftersom det fungerar på alla system.
Som icke-rootanvändare på CA-servern kör du följande kommando:
- cat ~/easy-rsa/pki/ca.crt
Det kommer att visas en utskrift i terminalen som liknar följande:
Output-----BEGIN CERTIFICATE-----MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .-----END CERTIFICATE-----
Kopiera allting, inklusive raderna -----BEGIN CERTIFICATE-----
och -----END CERTIFICATE-----
och strecken.
På ditt andra Linuxsystem använder du nano
eller din föredragna textredigerare för att öppna en fil som heter /tmp/ca.crt
:
- nano /tmp/ca.crt
Plasta in innehållet som du just kopierade från CA-servern i redigeraren. När du är klar sparar och stänger du filen. Om du använder nano
kan du göra det genom att trycka på CTRL+X
, sedan Y
och ENTER
för att bekräfta.
När du nu har en kopia av ca.crt
-filen på ditt andra Linuxsystem är det dags att importera certifikatet till dess operativsystemets certifikatarkiv.
På Ubuntu- och Debianbaserade system kör du följande kommandon som icke-rootanvändare för att importera certifikatet:
- sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
- sudo update-ca-certificates
För att importera certifikatet från CA-servern på CentOS-, Fedora- eller RedHat-baserade system kopierar och klistrar du in filinnehållet på systemet precis som i det tidigare exemplet i en fil som heter /tmp/ca.crt
. Därefter kopierar du certifikatet till /etc/pki/ca-trust/source/anchors/
och kör sedan kommandot update-ca-trust
.
- sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
- sudo update-ca-trust
Nu litar ditt andra Linuxsystem på alla certifikat som har signerats av CA-servern.
Anmärkning: Om du använder din CA med webbservrar och använder Firefox som webbläsare måste du importera det offentliga ca.crt
-certifikatet direkt till Firefox. Firefox använder inte det lokala operativsystemets certifikatarkiv. Mer information om hur du lägger till din certifikatutfärdares certifikat i Firefox finns i den här supportartikeln från Mozilla om Setting Up Certificate Authorities (CAs) in Firefox.
Om du använder din certifikatutfärdare för att integrera med en Windows-miljö eller skrivbordsdatorer, se dokumentationen om hur du använder certutil.exe
för att installera ett certifikatutfärdares certifikat.
Om du använder den här handledningen som en förutsättning för en annan handledning, eller om du är bekant med hur man signerar och återkallar certifikat kan du sluta här. Om du vill lära dig mer om hur man signerar och återkallar certifikat förklarar följande valfria avsnitt varje process i detalj.
(Valfritt) – Skapa Certificate Signing Requests och återkalla certifikat
Följande avsnitt i handledningen är valfria. Om du har slutfört alla tidigare steg har du en fullt konfigurerad och fungerande certifikatutfärdare som du kan använda som en förutsättning för andra handledningar. Du kan importera din certifikatutfärdares ca.crt
-fil och verifiera certifikat i ditt nätverk som har signerats av din certifikatutfärdare.
Om du vill öva och lära dig mer om hur man signerar certifikatförfrågningar och hur man återkallar certifikat förklarar de här valfria avsnitten hur båda processerna fungerar.
(Valfritt) – Skapa och signera en övningscertifikatbegäran
Nu när du har en certifikatutfärdare klar att använda kan du öva på att generera en privat nyckel och en certifikatbegäran för att bekanta dig med signerings- och distributionsprocessen.
En certifikatunderteckningsbegäran (Certificate Signing Request, CSR) består av tre delar: en offentlig nyckel, identifieringsinformation om det begärande systemet och en signatur av själva begäran, som skapas med den begärande partens privata nyckel. Den privata nyckeln hålls hemlig och används för att kryptera information som alla med det signerade offentliga certifikatet sedan kan dekryptera.
De följande stegen kommer att köras på ditt andra Ubuntu- eller Debiansystem, eller en distribution som härstammar från någon av dessa. Det kan vara en annan fjärrserver eller en lokal Linux-maskin som en bärbar eller stationär dator. Eftersom easy-rsa
inte är tillgängligt som standard på alla system kommer vi att använda verktyget openssl
för att skapa en privat nyckel och ett certifikat för praxis.
openssl
installeras vanligtvis som standard på de flesta Linuxdistributioner, men för att vara säker kan du köra följande på ditt system:
- sudo apt update
- sudo apt install openssl
När du uppmanas att installera openssl
anger du y
för att fortsätta med installationsstegen. Nu är du redo att skapa en övnings-CSR med openssl
.
Det första steget som du måste genomföra för att skapa en CSR är att generera en privat nyckel. För att skapa en privat nyckel med openssl
skapar du en practice-csr
-katalog och genererar sedan en nyckel i den. Vi kommer att göra den här begäran för en fiktiv server som heter sammy-server
, i motsats till att skapa ett certifikat som används för att identifiera en användare eller en annan CA.
- mkdir ~/practice-csr
- cd ~/practice-csr
- openssl genrsa -out sammy-server.key
OutputGenerating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)
När du nu har en privat nyckel kan du skapa en motsvarande CSR, återigen med hjälp av verktyget openssl
. Du kommer att uppmanas att fylla i ett antal fält som land, delstat och stad. Du kan ange ett .
om du vill lämna ett fält tomt, men tänk på att om detta vore en riktig CSR är det bäst att använda de korrekta värdena för din plats och organisation:
- 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 :
Om du vill lägga till dessa värden automatiskt som en del av openssl
-invigningen i stället för via den interaktiva prompten, kan du skicka -subj
-argumentet till OpenSSL. Se till att redigera de markerade värdena så att de matchar din praktikplats, din organisation och ditt servernamn:
- 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
För att verifiera innehållet i en CSR kan du läsa in en förfrågningsfil med openssl
och undersöka fälten inuti:
- openssl req -in sammy-server.req -noout -subject
Outputsubject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server
När du är nöjd med ämnet för begäran om certifikat för din praktik kopierar du sammy-server.req
-filen till din CA-server med scp
:
- scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req
I det här steget har du genererat en begäran om signering av certifikat för en fiktiv server som heter sammy-server
. I ett verkligt scenario kan begäran komma från något som en webbserver för lagring eller utveckling som behöver ett TLS-certifikat för testning, eller från en OpenVPN-server som begär ett certifikat så att användarna kan ansluta till en VPN. I nästa steg fortsätter vi med att signera certifikatunderteckningsbegäran med hjälp av CA-serverns privata nyckel.
(Valfritt) – Signera ett CSR
I föregående steg skapade du en begäran om ett övningscertifikat och en nyckel för en fiktiv server. Du kopierade den till katalogen /tmp
på din CA-server, vilket emulerar den process som du skulle använda om du hade riktiga klienter eller servrar som skickade dig CSR-förfrågningar som måste signeras.
Fortsatt med det fiktiva scenariot måste CA-servern nu importera övningscertifikatet och signera det. När en certifikatbegäran har validerats av certifikatutfärdaren och vidarebefordrats tillbaka till en server kommer klienter som litar på certifikatutfärdaren också att kunna lita på det nyutfärdade certifikatet.
Då vi kommer att arbeta inom certifikatutfärdarens PKI där verktyget easy-rsa
finns tillgängligt, kommer signeringsstegen att använda verktyget easy-rsa
för att göra det enklare, i motsats till att använda openssl
direkt som vi gjorde i det föregående exemplet.
Det första steget för att signera den fiktiva CSR:n är att importera certifikatförfrågan med hjälp av skriptet easy-rsa
:
- 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 kan du signera förfrågan genom att köra skriptet easyrsa
med alternativet sign-req
, följt av förfrågningstyp och det Common Name som ingår i CSR:n. Begäran kan antingen vara en av följande typer: client
, server
eller ca
. Eftersom vi övar med ett certifikat för en fiktiv server ska du se till att använda begärandetypen server
:
- ./easyrsa sign-req server sammy-server
I utmatningen ombeds du att verifiera att begäran kommer från en betrodd källa. Skriv yes
och tryck sedan på ENTER
för att bekräfta detta:
OutputYou 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
Om du har krypterat din CA-nyckel kommer du att uppmanas att ange ditt lösenord vid det här laget.
Med dessa steg slutförda har du signerat sammy-server.req
CSR:n med hjälp av CA-serverns privata nyckel i /home/sammy/easy-rsa/pki/private/ca.key
. Den resulterande sammy-server.crt
-filen innehåller övningsserverns offentliga krypteringsnyckel samt en ny signatur från CA-servern. Syftet med signaturen är att tala om för alla som litar på CA att de också kan lita på sammy-server
-certifikatet.
Om denna begäran gällde en riktig server som en webbserver eller VPN-server skulle det sista steget på CA-servern vara att distribuera de nya sammy-server.crt
– och ca.crt
-filerna från CA-servern till fjärrservern som gjorde begäran om CSR:
- scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
- scp pki/ca.crt sammy@your_server_ip:/tmp
I det här läget skulle du kunna använda det utfärdade certifikatet med något som en webbserver, ett VPN, ett konfigurationshanteringsverktyg, ett databassystem eller för autentisering av klienter.
(Valfritt) – Återkalla ett certifikat
Ibland kan du behöva återkalla ett certifikat för att hindra en användare eller server från att använda det. Kanske har någons bärbara dator stulits, en webbserver har äventyrats eller en anställd eller entreprenör har lämnat organisationen.
För att återkalla ett certifikat följer den allmänna processen följande steg:
- Rekvalificera certifikatet med kommandot
./easyrsa revoke client_name
. - Generera en ny CRL med kommandot
./easyrsa gen-crl
. - Överför den uppdaterade
crl.pem
-filen till den eller de servrar som är beroende av din certifikatutfärdare, och på dessa system kopierar du den till den eller de kataloger som krävs för program som hänvisar till den. - Starta om alla tjänster som använder din certifikatutfärdare och CRL-filen.
Du kan när som helst använda den här processen för att återkalla alla certifikat som du tidigare har utfärdat. Vi går igenom varje steg i detalj i följande avsnitt och börjar med kommandot revoke
.
Revoking a Certificate
För att återkalla ett certifikat navigerar du till katalogen easy-rsa
på din certifikatutfärdare:
- cd ~/easy-rsa
Därefter kör du skriptet easyrsa
med alternativet revoke
följt av det klientnamn som du vill återkalla. Enligt exemplet ovan är certifikatets gemensamma namn sammy-server
:
- ./easyrsa revoke sammy-server
Detta kommer att be dig att bekräfta återkallelsen genom att skriva in yes
:
OutputPlease 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. . .
Notera det markerade värdet på Revoking Certificate
-linjen. Detta värde är det unika serienumret för det certifikat som återkallas. Om du vill granska återkallningslistan i det sista steget i det här avsnittet för att kontrollera att certifikatet finns med i den behöver du det här värdet.
När du har bekräftat åtgärden återkallar certifikatutfärdaren certifikatet. Fjärrsystem som förlitar sig på certifikatutfärdaren har dock inget sätt att kontrollera om några certifikat har återkallats. Användare och servrar kan fortfarande använda certifikatet tills certifikatutfärdarens Certificate Revocation List (CRL) distribueras till alla system som är beroende av certifikatutfärdaren.
I nästa steg genererar du en CRL eller uppdaterar en befintlig crl.pem
-fil.
Generering av en Certificate Revocation List
Nu när du har återkallat ett certifikat är det viktigt att du uppdaterar listan över återkallade certifikat på din certifikatutfärdarserver. När du har en uppdaterad revoceringslista kan du se vilka användare och system som har giltiga certifikat i din CA.
För att generera en CRL kör du kommandot easy-rsa
med alternativet gen-crl
medan du fortfarande befinner dig i katalogen ~/easy-rsa
:
- ./easyrsa gen-crl
Om du har använt en lösenfras när du skapade din ca.key
-fil kommer du att uppmanas att ange den. Kommandot gen-crl
kommer att generera en fil med namnet crl.pem
som innehåller den uppdaterade listan över återkallade certifikat för den CA:n.
Nästan måste du överföra den uppdaterade crl.pem
-filen till alla servrar och klienter som förlitar sig på den här CA:n varje gång du kör kommandot gen-crl
. Annars kommer klienter och system fortfarande att kunna komma åt tjänster och system som använder din certifikatutfärdare, eftersom dessa tjänster måste känna till certifikatets återkallade status.
Överföring av en Certificate Revocation List
Nu när du har genererat en CRL på din certifikatutfärdare-server måste du överföra den till fjärrsystem som förlitar sig på din certifikatutfärdare. Om du vill överföra filen till dina servrar kan du använda kommandot scp
.
Anmärkning: Den här handledningen förklarar hur du genererar och distribuerar en CRL manuellt. Det finns mer robusta och automatiserade metoder för att distribuera och kontrollera återkallningslistor som OCSP-Stapling, men konfigureringen av dessa metoder ligger utanför den här artikelns räckvidd.
Säkerställ att du är inloggad på din certifikatutfärdare-server som icke-root-användare och kör följande, och byt ut din egen server-IP eller ditt eget DNS-namn i stället för your_server_ip
:
- scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp
Nu när filen finns på fjärrsystemet är det sista steget att uppdatera eventuella tjänster med den nya kopian av återkallningslistan.
Uppdatering av tjänster som stöder en återkallelselista
En lista över de steg som du måste använda för att uppdatera tjänster som använder crl.pem
-filen ligger utanför ramen för den här handledningen. I allmänhet måste du kopiera crl.pem
-filen till den plats som tjänsten förväntar sig och sedan starta om den med hjälp av systemctl
.
När du har uppdaterat dina tjänster med den nya crl.pem
-filen kommer dina tjänster att kunna avvisa anslutningar från klienter eller servrar som använder ett återkallat certifikat.
Undersökning och verifiering av innehållet i en CRL
Om du vill undersöka en CRL-fil, till exempel för att bekräfta en lista över återkallade certifikat, använder du följande openssl
-kommando från din easy-rsa
-katalog på din certifikatutfärdare-server:
- cd ~/easy-rsa
- openssl crl -in pki/crl.pem -noout -text
Det här kommandot kan också köras på vilken server eller vilket system som helst som har openssl
-verktyget installerat med en kopia av crl.pem
-filen. Om du till exempel överförde crl.pem
-filen till ditt andra system och vill kontrollera att sammy-server
-certifikatet är återkallat kan du använda ett openssl
-kommando som följande, där du ersätter det serienummer som du noterade tidigare när du återkallade certifikatet med det markerade numret här:
- 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
Bemärk hur grep
-kommandot används för att kontrollera det unika serienumret som du noterade i återkallningssteget. Nu kan du kontrollera innehållet i din Certificate Revocation List på alla system som är beroende av den för att begränsa åtkomsten till användare och tjänster.
Slutsats
I den här handledningen skapade du en privat certifikatutfärdare med hjälp av Easy-RSA-paketet på en fristående Ubuntu 20.04-server. Du lärde dig hur förtroendemodellen fungerar mellan parter som förlitar sig på certifikatutfärdaren. Du skapade och signerade också en Certificate Signing Request (CSR) för en övningsserver och lärde dig sedan hur man återkallar ett certifikat. Slutligen lärde du dig hur du genererar och distribuerar en Certificate Revocation List (CRL) för alla system som är beroende av din certifikatutfärdare för att se till att användare eller servrar som inte bör få tillgång till tjänster hindras från att göra det.
Nu kan du utfärda certifikat för användare och använda dem med tjänster som OpenVPN. Du kan också använda din certifikatutfärdare för att konfigurera utvecklings- och stagingwebservrar med certifikat för att säkra dina icke-produktionsmiljöer. Om du använder en certifikatutfärdare med TLS-certifikat under utveckling kan du se till att din kod och dina miljöer stämmer överens med produktionsmiljön så nära som möjligt.
Om du vill lära dig mer om hur du använder OpenSSL kan du läsa vår OpenSSL Essentials: Arbeta med SSL-certifikat, privata nycklar och CSRs innehåller mycket ytterligare information som hjälper dig att bli mer bekant med OpenSSL:s grunder.