Sådan konfigureres og konfigureres en certifikatudstedende myndighed (CA) på Ubuntu 20.04

Indledning

En certifikatudstedende myndighed (CA) er en enhed, der er ansvarlig for at udstede digitale certifikater for at verificere identiteter på internettet. Selvom offentlige CA’er er et populært valg til at verificere identiteten af websteder og andre tjenester, der stilles til rådighed for den brede offentlighed, bruges private CA’er typisk til lukkede grupper og private tjenester.

Med opbygningen af en privat certifikatudstedende myndighed kan du konfigurere, teste og køre programmer, der kræver krypterede forbindelser mellem en klient og en server. Med en privat CA kan du udstede certifikater til brugere, servere eller individuelle programmer og tjenester i din infrastruktur.

Som eksempler på programmer på Linux, der bruger deres egen private CA, kan nævnes OpenVPN og Puppet . Du kan også konfigurere din webserver til at bruge certifikater udstedt af en privat CA for at få udviklings- og stagingmiljøer til at matche produktionsservere, der bruger TLS til at kryptere forbindelser.

I denne vejledning lærer vi, hvordan du opretter en privat certifikatudstedende myndighed på en Ubuntu 20.04-server, og hvordan du genererer og signerer et testcertifikat ved hjælp af din nye CA. Du lærer også, hvordan du importerer CA-serverens offentlige certifikat til dit operativsystems certifikatlager, så du kan verificere tillidskæden mellem CA’en og fjernservere eller fjernbrugere. Endelig lærer du, hvordan du tilbagekalder certifikater og distribuerer en Certificate Revocation List for at sikre, at kun autoriserede brugere og systemer kan bruge tjenester, der er afhængige af din CA.

Forudsætninger

For at gennemføre denne vejledning skal du have adgang til en Ubuntu 20.04-server til at huse din CA-server. Du skal konfigurere en ikke-root-bruger med sudo-privilegier, før du starter denne vejledning. Du kan følge vores vejledning om Ubuntu 20.04 indledende serveropsætning for at konfigurere en bruger med de rette tilladelser. Den linkede vejledning vil også opsætte en firewall, som antages at være på plads i hele denne vejledning.

Denne server vil blive omtalt som CA-serveren i denne vejledning.

Sørg for, at CA-serveren er et standalone-system. Den vil kun blive brugt til at importere, underskrive og tilbagekalde certifikatanmodninger. Den bør ikke køre andre tjenester, og ideelt set skal den være offline eller helt lukket ned, når du ikke arbejder aktivt med din CA.

Bemærk: Det sidste afsnit i denne vejledning er valgfrit, hvis du gerne vil lære om signering og tilbagekaldelse af certifikater. Hvis du vælger at gennemføre disse øvelsestrin, skal du bruge en anden Ubuntu 20.04-server, eller du kan også bruge din egen lokale Linux-computer, der kører Ubuntu eller Debian, eller distributioner afledt af en af disse.

Stræk 1 – Installation af Easy-RSA

Den første opgave i denne vejledning er at installere easy-rsa-sættet af scripts på din CA-server. easy-rsa er et værktøj til administration af en certificeringsmyndighed, som du skal bruge til at generere en privat nøgle og et offentligt rodcertifikat, som du derefter skal bruge til at signere anmodninger fra klienter og servere, der er afhængige af din CA.

Log ind på din CA-server som den ikke-root sudo bruger, som du oprettede under de første opsætningstrin, og kør følgende:

  • sudo apt update
  • sudo apt install easy-rsa

Du vil blive bedt om at downloade pakken og installere den. Tryk på y for at bekræfte, at du vil installere pakken.

På dette tidspunkt har du alt, hvad du har brug for, konfigureret og er klar til at bruge Easy-RSA. I det næste trin vil du oprette en Public Key Infrastructure og derefter begynde at opbygge din Certificate Authority.

Stræk 2 – Forberedelse af en Public Key Infrastructure-katalog

Nu, hvor du har installeret easy-rsa, er det tid til at oprette en skelet Public Key Infrastructure (PKI) på CA-serveren. Sørg for, at du stadig er logget ind som din ikke-root-bruger, og opret en easy-rsa-mappe. Sørg for, at du ikke bruger sudo til at køre nogen af følgende kommandoer, da din normale bruger skal administrere og interagere med CA’en uden forhøjede rettigheder.

  • mkdir ~/easy-rsa

Dette vil oprette en ny mappe kaldet easy-rsa i din hjemmemappe. Vi vil bruge denne mappe til at oprette symbolske links, der peger på easy-rsa-pakkefilerne, som vi har installeret i det foregående trin. Disse filer findes i mappen /usr/share/easy-rsa på CA-serveren.

Opret symlinksene med kommandoen ln:

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

Bemærk: Mens andre vejledninger måske instruerer dig i at kopiere easy-rsa-pakkefilerne ind i din PKI-mappe, anvender denne vejledning en tilgang med symlinks. Som følge heraf vil alle opdateringer til easy-rsa-pakken automatisk blive afspejlet i din PKI’s scripts.

For at begrænse adgangen til din nye PKI-mappe skal du sikre, at kun ejeren kan få adgang til den ved hjælp af kommandoen chmod:

  • chmod 700 /home/sammy/easy-rsa

Slutteligt skal du initialisere PKI’en inde i easy-rsa-mappen:

  • 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

Når du har afsluttet dette afsnit, har du en mappe, der indeholder alle de filer, der er nødvendige for at oprette en certifikatudstedende myndighed. I det næste afsnit opretter du den private nøgle og det offentlige certifikat til din CA.

Stræk 3 – Oprettelse af en Certificate Authority

Hvor du kan oprette din CA’s private nøgle og certifikat, skal du oprette og udfylde en fil kaldet vars med nogle standardværdier. Først skal du cd ind i mappen easy-rsa, derefter skal du oprette og redigere filen vars med nano eller din foretrukne teksteditor:

  • cd ~/easy-rsa
  • nano vars

Når filen er åbnet, skal du indsætte følgende linjer og redigere hver fremhævede værdi, så den afspejler dine egne organisationsoplysninger. Den vigtige del her er at sikre, at du ikke efterlader nogen af værdierne tomme:

~/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"

Når du er færdig, skal du gemme og lukke filen. Hvis du bruger nano, kan du gøre det ved at trykke på CTRL+X, derefter Y og ENTER for at bekræfte. Du er nu klar til at oprette din CA.

For at oprette rodens offentlige og private nøglepar til din certifikatudstedende myndighed skal du køre kommandoen ./easy-rsa igen, denne gang med indstillingen build-ca:

  • ./easyrsa build-ca

I outputtet vil du se nogle linjer om OpenSSL-versionen, og du vil blive bedt om at indtaste en passphrase til dit nøglepar. Sørg for at vælge en stærk passphrase, og noter den ned et sikkert sted. Du skal indtaste passphrasen, hver gang du skal interagere med din CA, f.eks. for at underskrive eller tilbagekalde et certifikat.

Du vil også blive bedt om at bekræfte Common Name (CN) for din CA. CN er det navn, der bruges til at henvise til denne maskine i forbindelse med certifikatudstederen. Du kan indtaste en hvilken som helst tegnstreng til CA’s Common Name, men for enkelhedens skyld skal du trykke på ENTER for at acceptere standardnavnet.

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

Bemærk: Hvis du ikke ønsker at blive bedt om en adgangskode, hver gang du interagerer med din CA, kan du køre kommandoen build-ca med indstillingen nopass som følger:

  • ./easyrsa build-ca nopass

Du har nu to vigtige filer – ~/easy-rsa/pki/ca.crt og ~/easy-rsa/pki/private/ca.key – som udgør de offentlige og private komponenter i en Certificate Authority.

  • ca.crt er CA’s offentlige certifikatfil. Brugere, servere og klienter vil bruge dette certifikat til at bekræfte, at de er en del af det samme tillidsnet. Alle brugere og servere, der bruger din CA, skal have en kopi af denne fil. Alle parter vil stole på det offentlige certifikat for at sikre, at nogen ikke udgiver sig for at være et system og udfører et Man-in-the-middle-angreb.

  • ca.key er den private nøgle, som CA’en bruger til at underskrive certifikater for servere og klienter. Hvis en angriber får adgang til din CA og dermed også til din ca.key-fil, skal du ødelægge din CA. Det er derfor, at din ca.key-fil kun bør være på din CA-maskine, og at din CA-maskine ideelt set bør holdes offline, når den ikke signerer certifikatanmodninger, som en ekstra sikkerhedsforanstaltning.

Derved er din CA på plads, og den er klar til at blive brugt til at signere certifikatanmodninger og til at tilbagekalde certifikater.

Stræk 4 – Distribuering af din certificeringsmyndigheds offentlige certifikat

Nu er din CA konfigureret og klar til at fungere som en tillidsrod for alle systemer, som du ønsker at konfigurere til at bruge den. Du kan tilføje CA’s certifikat til dine OpenVPN-servere, webservere, mailservere osv. Alle brugere eller servere, der skal verificere identiteten af en anden bruger eller server i dit netværk, skal have importeret en kopi af ca.crt-filen til deres operativsystemers certifikatlager.

For at importere CA’s offentlige certifikat til et andet Linux-system, f.eks. en anden server eller en lokal computer, skal du først få en kopi af ca.crt-filen fra din CA-server. Du kan bruge kommandoen cat til at udskrive den i en terminal og derefter kopiere den og indsætte den i en fil på den anden computer, der importerer certifikatet. Du kan også bruge værktøjer som scp, rsync til at overføre filen mellem systemer. Vi bruger dog copy and paste med nano i dette trin, da det vil fungere på alle systemer.

Som din ikke-root-bruger på CA-serveren skal du køre følgende kommando:

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

Der vil være output i din terminal, der ligner følgende:

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

Kopier alt, herunder -----BEGIN CERTIFICATE----- og -----END CERTIFICATE------linjerne og stregerne.

På dit andet Linux-system skal du bruge nano eller din foretrukne teksteditor til at åbne en fil med navnet /tmp/ca.crt:

  • nano /tmp/ca.crt

Indsæt det indhold, du lige har kopieret fra CA-serveren, i editoren. Når du er færdig, skal du gemme og lukke filen. Hvis du bruger nano, kan du gøre det ved at trykke på CTRL+X og derefter Y og ENTER for at bekræfte.

Nu, hvor du har en kopi af ca.crt-filen på dit andet Linux-system, er det tid til at importere certifikatet til dets operativsystemets certifikatlager.

På Ubuntu- og Debian-baserede systemer skal du køre følgende kommandoer som din ikke-root-bruger for at importere certifikatet:

Ubuntu- og Debian-afledte distributioner
  • sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  • sudo update-ca-certificates

For at importere CA-serverens certifikat på CentOS-, Fedora- eller RedHat-baserede systemer skal du kopiere og indsætte filens indhold på systemet ligesom i det foregående eksempel i en fil kaldet /tmp/ca.crt. Derefter kopierer du certifikatet til /etc/pki/ca-trust/source/anchors/, og derefter kører du kommandoen update-ca-trust.

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

Nu vil dit andet Linux-system stole på ethvert certifikat, der er blevet underskrevet af CA-serveren.

Bemærk: Hvis du bruger din CA med webservere og bruger Firefox som browser, skal du importere det offentlige ca.crt-certifikat direkte til Firefox. Firefox bruger ikke det lokale operativsystemets certifikatlager. Du kan finde flere oplysninger om, hvordan du tilføjer dit CA-certifikat til Firefox, i denne supportartikel fra Mozilla om konfiguration af certifikatudstedere (CA’er) i Firefox.

Hvis du bruger dit CA til at integrere med et Windows-miljø eller stationære computere, skal du se dokumentationen om, hvordan du bruger certutil.exe til at installere et CA-certifikat.

Hvis du bruger denne vejledning som en forudsætning for en anden vejledning, eller hvis du er bekendt med, hvordan du signerer og tilbagekalder certifikater, kan du stoppe her. Hvis du gerne vil lære mere om, hvordan man signerer og tilbagekalder certifikater, forklarer det følgende valgfrie afsnit hver proces i detaljer.

(Valgfrit) – Oprettelse af Certificate Signing Requests og tilbagekaldelse af certifikater

De følgende afsnit i denne vejledning er valgfrie. Hvis du har gennemført alle de foregående trin, har du en fuldt konfigureret og fungerende certifikatmyndighed, som du kan bruge som en forudsætning for andre tutorials. Du kan importere din CA’s ca.crt fil og verificere certifikater i dit netværk, som er blevet signeret af din CA.

Hvis du gerne vil øve dig og lære mere om, hvordan du signerer certifikatanmodninger, og hvordan du tilbagekalder certifikater, så vil disse valgfrie afsnit forklare, hvordan begge processer fungerer.

(Valgfrit) – Oprettelse og signering af en øvelsescertifikatanmodning

Nu, hvor du har en CA klar til brug, kan du øve dig i at generere en privat nøgle og en certifikatanmodning for at blive fortrolig med signerings- og distributionsprocessen.

En Certificate Signing Request (CSR) består af tre dele: en offentlig nøgle, identifikationsoplysninger om det anmodende system og en signatur af selve anmodningen, som oprettes ved hjælp af den anmodende parts private nøgle. Den private nøgle holdes hemmelig og bruges til at kryptere oplysninger, som enhver med det signerede offentlige certifikat derefter kan dekryptere.

De følgende trin køres på dit andet Ubuntu- eller Debian-system, eller en distribution, der er afledt af en af disse. Det kan være en anden fjernserver eller en lokal Linux-maskine som f.eks. en bærbar computer eller en stationær computer. Da easy-rsa ikke er tilgængelig som standard på alle systemer, bruger vi openssl-værktøjet til at oprette en privat nøgle og et certifikat til praksis.

openssl er normalt installeret som standard på de fleste Linux-distributioner, men for at være sikker, skal du køre følgende på dit system:

  • sudo apt update
  • sudo apt install openssl

Når du bliver bedt om at installere openssl, skal du indtaste y for at fortsætte med installationstrinene. Nu er du klar til at oprette en praksis-CSR med openssl.

Det første trin, som du skal gennemføre for at oprette en CSR, er at generere en privat nøgle. Hvis du vil oprette en privat nøgle ved hjælp af openssl, skal du oprette en practice-csr-mappe og derefter generere en nøgle i den. Vi vil foretage denne anmodning for en fiktiv server kaldet sammy-server, i modsætning til at oprette et certifikat, der bruges til at identificere en bruger eller en anden CA.

  • 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, hvor du har en privat nøgle, kan du oprette en tilsvarende CSR, igen ved hjælp af hjælpeprogrammet openssl. Du vil blive bedt om at udfylde en række felter som f.eks. land, stat og by. Du kan indtaste et ., hvis du ønsker at lade et felt være tomt, men vær opmærksom på, at hvis dette var en rigtig CSR, er det bedst at bruge de korrekte værdier for din placering og 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 :

Hvis du ønsker at tilføje disse værdier automatisk som en del af openssl-opkaldet i stedet for via den interaktive prompt, kan du sende -subj-argumentet til OpenSSL. Sørg for at redigere de fremhævede værdier, så de passer til din praksis placering, organisation og servernavn:

  • 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

For at verificere indholdet af en CSR kan du læse en anmodningsfil med openssl og undersøge felterne i den:

  • 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

Når du er tilfreds med emnet for din praksiscertifikatanmodning, skal du kopiere sammy-server.req-filen til din CA-server ved hjælp af scp:

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

I dette trin genererede du en Certificate Signing Request for en fiktiv server ved navn sammy-server. I et virkeligt scenarie kunne anmodningen være fra noget som en staging- eller udviklingswebserver, der har brug for et TLS-certifikat til testning, eller den kunne komme fra en OpenVPN-server, der anmoder om et certifikat, så brugerne kan oprette forbindelse til en VPN. I det næste trin fortsætter vi med at underskrive certifikatunderskrivningsanmodningen ved hjælp af CA-serverens private nøgle.

(Valgfrit) – Signering af en CSR

I det foregående trin oprettede du en anmodning om et praksiscertifikat og en nøgle for en fiktiv server. Du kopierede den til mappen /tmp på din CA-server, hvilket emulerer den proces, du ville bruge, hvis du havde rigtige klienter eller servere, der sendte dig CSR-anmodninger, der skal signeres.

Fortsat med det fiktive scenarie skal CA-serveren nu importere øvelsescertifikatet og signere det. Når en certifikatanmodning er valideret af CA og videresendt tilbage til en server, vil klienter, der stoler på certifikatudstederen, også kunne stole på det nyligt udstedte certifikat.

Da vi vil operere inden for CA’s PKI, hvor hjælpeprogrammet easy-rsa er tilgængeligt, vil signeringstrinene bruge hjælpeprogrammet easy-rsa for at gøre tingene lettere, i modsætning til at bruge openssl direkte, som vi gjorde i det foregående eksempel.

Det første trin for at signere den fiktive CSR er at importere certifikatanmodningen ved hjælp af easy-rsa-scriptet:

  • 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 signere anmodningen ved at køre easyrsa-scriptet med sign-req-indstillingen, efterfulgt af anmodningstypen og det fælles navn, der er inkluderet i CSR’en. Anmodningstypen kan enten være en af client, server eller ca. Da vi øver os med et certifikat til en fiktiv server, skal du sørge for at bruge anmodningstypen server:

  • ./easyrsa sign-req server sammy-server

I outputtet vil du blive bedt om at bekræfte, at anmodningen kommer fra en pålidelig kilde. Skriv yes og tryk derefter på ENTER for at bekræfte dette:

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

Hvis du har krypteret din CA-nøgle, bliver du bedt om at angive din adgangskode på dette tidspunkt.

Med disse trin er du færdig med at underskrive sammy-server.req CSR ved hjælp af CA-serverens private nøgle i /home/sammy/easy-rsa/pki/private/ca.key. Den resulterende sammy-server.crt-fil indeholder øvelsesserverens offentlige krypteringsnøgle samt en ny signatur fra CA-serveren. Formålet med signaturen er at fortælle alle, der stoler på CA’en, at de også kan stole på sammy-server-certifikatet.

Hvis denne anmodning var til en rigtig server som f.eks. en webserver eller VPN-server, ville det sidste trin på CA-serveren være at distribuere de nye sammy-server.crt– og ca.crt-filer fra CA-serveren til den fjernserver, der fremsatte CSR-anmodningen:

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

På dette tidspunkt ville du være i stand til at bruge det udstedte certifikat med noget som en webserver, en VPN, et konfigurationsstyringsværktøj, et databasesystem eller til klientgodkendelsesformål.

(Valgfrit) – Tilbagekaldelse af et certifikat

Formelt kan det være nødvendigt at tilbagekalde et certifikat for at forhindre en bruger eller en server i at bruge det. Måske er en persons bærbare computer blevet stjålet, en webserver er blevet kompromitteret, eller en medarbejder eller entreprenør har forladt din organisation.

For at tilbagekalde et certifikat følger den generelle proces disse trin:

  1. Revoke certifikatet med kommandoen ./easyrsa revoke client_name.
  2. Genererér en ny CRL med kommandoen ./easyrsa gen-crl.
  3. Overfør den opdaterede crl.pem-fil til den eller de servere, der er afhængige af din CA, og kopier den på disse systemer til den eller de nødvendige mapper for programmer, der henviser til den.
  4. Genstart alle tjenester, der bruger din CA og CRL-filen.

Du kan til enhver tid bruge denne proces til at tilbagekalde certifikater, som du tidligere har udstedt. Vi gennemgår hvert trin i detaljer i de følgende afsnit, idet vi starter med kommandoen revoke.

Revokation af et certifikat

For at tilbagekalde et certifikat skal du navigere til mappen easy-rsa på din CA-server:

  • cd ~/easy-rsa

Kør derefter scriptet easyrsa med indstillingen revoke efterfulgt af det klientnavn, du ønsker at tilbagekalde. I henhold til praksiseksemplet ovenfor er certifikatets fællesnavn sammy-server:

  • ./easyrsa revoke sammy-server

Dette vil bede dig om at bekræfte tilbagekaldelsen ved at indtaste 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. . .

Bemærk den fremhævede værdi på Revoking Certificate-linjen. Denne værdi er det unikke løbenummer for det certifikat, der tilbagekaldes. Hvis du vil undersøge tilbagekaldelseslisten i det sidste trin i dette afsnit for at kontrollere, at certifikatet er på den, skal du bruge denne værdi.

Når du bekræfter handlingen, tilbagekalder CA certifikatet. Fjernsystemer, der er afhængige af CA’en, har dog ingen mulighed for at kontrollere, om certifikater er blevet tilbagekaldt. Brugere og servere vil stadig kunne bruge certifikatet, indtil CA’s Certificate Revocation List (CRL) er distribueret til alle systemer, der er afhængige af CA’en.

I det næste trin genererer du en CRL eller opdaterer en eksisterende crl.pem-fil.

Generering af en Certificate Revocation List

Nu, hvor du har tilbagekaldt et certifikat, er det vigtigt at opdatere listen over tilbagekaldte certifikater på din CA-server. Når du har en opdateret revokeringsliste, kan du se, hvilke brugere og systemer der har gyldige certifikater i din CA.

For at generere en CRL skal du køre kommandoen easy-rsa med indstillingen gen-crl, mens du stadig befinder dig i mappen ~/easy-rsa:

  • ./easyrsa gen-crl

Hvis du har brugt en passphrase, da du oprettede din ca.key-fil, bliver du bedt om at indtaste den. Kommandoen gen-crl genererer en fil kaldet crl.pem, der indeholder den opdaterede liste over tilbagekaldte certifikater for den pågældende CA.

Dernæst skal du overføre den opdaterede crl.pem-fil til alle servere og klienter, der er afhængige af denne CA, hver gang du kører kommandoen gen-crl. Ellers vil klienter og systemer stadig kunne få adgang til tjenester og systemer, der bruger din CA, da disse tjenester skal have kendskab til certifikatets tilbagekaldte status.

Overførsel af en Certificate Revocation List

Nu, hvor du har genereret en CRL på din CA-server, skal du overføre den til fjernsystemer, der er afhængige af din CA. Hvis du vil overføre filen til dine servere, kan du bruge kommandoen scp.

Bemærk: I denne vejledning forklares det, hvordan du genererer og distribuerer en CRL manuelt. Der findes mere robuste og automatiserede metoder til at distribuere og kontrollere revokeringslister som OCSP-Stapling, men konfigurationen af disse metoder ligger uden for denne artikels rækkevidde.

Sørg for, at du er logget ind på din CA-server som din ikke-root-bruger, og kør følgende, idet du erstatter din egen server-IP eller dit eget DNS-navn i stedet for your_server_ip:

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

Nu, hvor filen er på fjernsystemet, er det sidste trin at opdatere eventuelle tjenester med den nye kopi af revokeringslisten.

Opdatering af tjenester, der understøtter en CRL

En liste over de trin, du skal bruge for at opdatere tjenester, der bruger crl.pem-filen, ligger uden for rammerne af denne vejledning. Generelt skal du kopiere crl.pem-filen til den placering, som tjenesten forventer, og derefter genstarte den ved hjælp af systemctl.

Når du har opdateret dine tjenester med den nye crl.pem-fil, vil dine tjenester være i stand til at afvise forbindelser fra klienter eller servere, der bruger et tilbagekaldt certifikat.

Undersøgning og verifikation af indholdet af en CRL

Hvis du ønsker at undersøge en CRL-fil, f.eks. for at bekræfte en liste over tilbagekaldte certifikater, skal du bruge følgende openssl-kommando fra din easy-rsa-mappe på din CA-server:

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

Du kan også køre denne kommando på enhver server eller ethvert system, hvor openssl-værktøjet er installeret med en kopi af crl.pem-filen. Hvis du f.eks. har overført crl.pem-filen til dit andet system og vil kontrollere, at sammy-server-certifikatet er tilbagekaldt, kan du bruge en openssl-kommando som følgende, hvor du erstatter det serienummer, som du noterede tidligere, da du tilbagekaldte certifikatet, med det fremhævede nummer her:

  • 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, hvordan grep-kommandoen bruges til at kontrollere det unikke serienummer, som du noterede i tilbagekaldelsestrinnet. Nu kan du kontrollere indholdet af din Certificate Revocation List på ethvert system, der er afhængig af den for at begrænse adgangen til brugere og tjenester.

Slutning

I denne vejledning oprettede du en privat certifikatmyndighed ved hjælp af Easy-RSA-pakken på en standalone Ubuntu 20.04-server. Du lærte, hvordan tillidsmodellen fungerer mellem parter, der er afhængige af CA’en. Du oprettede og signerede også en Certificate Signing Request (CSR) for en øvelsesserver og lærte derefter, hvordan man tilbagekalder et certifikat. Endelig lærte du, hvordan du genererer og distribuerer en CRL (Certificate Revocation List) for ethvert system, der er afhængig af din CA, for at sikre, at brugere eller servere, der ikke bør få adgang til tjenester, forhindres i at gøre det.

Nu kan du udstede certifikater til brugere og bruge dem med tjenester som OpenVPN. Du kan også bruge din CA til at konfigurere udviklings- og staging-webservere med certifikater for at sikre dine ikke-produktionsmiljøer. Ved at bruge en CA med TLS-certifikater under udvikling kan du sikre, at din kode og dine miljøer svarer så godt som muligt til dit produktionsmiljø.

Hvis du gerne vil vide mere om, hvordan du bruger OpenSSL, kan du læse vores OpenSSL Essentials: Arbejde med SSL-certifikater, private nøgler og CSR’er indeholder masser af yderligere oplysninger, der kan hjælpe dig med at blive mere fortrolig med OpenSSL’s grundlæggende principper.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.