Varmenteiden myöntäjän (CA) määrittäminen ja konfigurointi Ubuntu 20.04:ssä

Esittely

Varmenteiden myöntäjä (CA) on yksikkö, joka vastaa digitaalisten varmenteiden myöntämisestä henkilöllisyyksien todentamiseksi internetissä. Vaikka julkiset varmenteiden myöntäjät ovat suosittu valinta verkkosivustojen ja muiden suurelle yleisölle tarjottavien palveluiden henkilöllisyyden varmentamiseen, yksityisiä varmenteiden myöntäjiä käytetään tyypillisesti suljetuissa ryhmissä ja yksityisissä palveluissa.

Perustamalla yksityisen varmenteiden myöntäjän voit konfiguroida, testata ja suorittaa ohjelmia, jotka vaativat salattuja yhteyksiä asiakkaan ja palvelimen välillä. Yksityisen varmentajan avulla voit myöntää varmenteita käyttäjille, palvelimille tai yksittäisille ohjelmille ja palveluille infrastruktuurissasi.

Esimerkkejä Linuxin ohjelmista, jotka käyttävät omaa yksityistä varmentajaa, ovat OpenVPN ja Puppet . Voit myös määrittää verkkopalvelimesi käyttämään yksityisen varmenteiden myöntäjän myöntämiä varmenteita, jotta kehitys- ja staging-ympäristöt vastaisivat tuotantopalvelimia, jotka käyttävät TLS:ää yhteyksien salaamiseen.

Tässä oppaassa opimme, miten yksityinen varmenteiden myöntäjä perustetaan Ubuntu 20.04 -palvelimelle ja miten luodaan ja allekirjoitetaan testivarmenne uuden varmenteiden myöntäjän avulla. Opit myös, miten CA-palvelimen julkinen varmenne tuodaan käyttöjärjestelmäsi varmennevarastoon, jotta voit tarkistaa CA:n ja etäpalvelimien tai -käyttäjien välisen luottamusketjun. Lopuksi opit peruuttamaan varmenteita ja jakamaan varmenteiden peruutusluettelon, jotta voit varmistaa, että vain valtuutetut käyttäjät ja järjestelmät voivat käyttää varmentajaasi tukeutuvia palveluita.

Edellytykset

Tämän ohjeen suorittamiseksi tarvitset Ubuntu 20.04 -palvelimen, jolla voit isännöidä varmentajapalvelinta. Sinun on määritettävä ei-root-käyttäjä, jolla on sudo-oikeudet, ennen kuin aloitat tämän oppaan. Voit seurata Ubuntu 20.04 -palvelimen alkuasennusoppaita määrittääksesi käyttäjän, jolla on asianmukaiset oikeudet. Linkitetty ohje määrittää myös palomuurin, jonka oletetaan olevan käytössä koko tämän oppaan ajan.

Tästä palvelimesta käytetään tässä ohjeessa nimitystä CA-palvelin.

Varmista, että CA-palvelin on itsenäinen järjestelmä. Sitä käytetään vain varmennepyyntöjen tuomiseen, allekirjoittamiseen ja peruuttamiseen. Sen ei pitäisi ajaa mitään muita palveluita, ja mieluiten se on offline-tilassa tai kokonaan sammutettuna, kun et työskentele aktiivisesti varmenteiden myöntäjän kanssa.

Huomautus: Tämän ohjeen viimeinen osa on valinnainen, jos haluat oppia varmenteiden allekirjoittamisesta ja peruuttamisesta. Jos päätät suorittaa nämä harjoitusvaiheet, tarvitset toisen Ubuntu 20.04 -palvelimen tai voit myös käyttää omaa paikallista Linux-tietokonettasi, jossa on Ubuntu tai Debian tai jommastakummasta niistä johdettu jakelu.

Vaihe 1 – Easy-RSA:n asentaminen

Tässä opetusohjelmassa ensimmäisenä tehtävänä on asentaa easy-rsa-skriptipaketti varmentajapalvelimeesi. easy-rsa on varmentajan hallintatyökalu, jota käytät yksityisen avaimen ja julkisen juurivarmenteen luomiseen, joita sitten käytät varmentajaasi tukeutuvien asiakkaiden ja palvelimien pyyntöjen allekirjoittamiseen.

Kirjaudu varmentajapalvelimellesi ei-root sudo-käyttäjänä, jonka olet luonut alkuasennusvaiheiden aikana, ja suorita seuraavat:

  • sudo apt update
  • sudo apt install easy-rsa

Sinua pyydetään lataamaan paketti ja asentamaan se. Paina y vahvistaaksesi, että haluat asentaa paketin.

Tässä vaiheessa sinulla on kaikki tarvittava asennettuna ja valmiina Easy-RSA:n käyttöön. Seuraavassa vaiheessa luot julkisen avaimen infrastruktuurin (Public Key Infrastructure) ja aloitat sen jälkeen varmenteiden myöntäjän (Certificate Authority) rakentamisen.

Vaihe 2 – Julkisen avaimen infrastruktuurihakemiston valmistelu

Nyt kun olet asentanut easy-rsa, on aika luoda CA-palvelimelle julkisen avaimen infrastruktuurin (Public Key Infrastructure, PKI) runko. Varmista, että olet edelleen kirjautuneena sisään ei-root-käyttäjänäsi ja luo easy-rsa-hakemisto. Varmista, ettet käytä sudo-komentoa suorittaaksesi mitään seuraavista komennoista, koska tavallisen käyttäjän pitäisi hallita ja olla vuorovaikutuksessa CA:n kanssa ilman korotettuja oikeuksia.

  • mkdir ~/easy-rsa

Tämä luo uuden hakemiston nimeltä easy-rsa kotikansiossasi. Käytämme tätä hakemistoa luodaksemme symbolisia linkkejä, jotka osoittavat edellisessä vaiheessa asentamiimme easy-rsa-pakettitiedostoihin. Nämä tiedostot sijaitsevat CA-palvelimen /usr/share/easy-rsa-kansiossa.

Luo symbolilinkit komennolla ln:

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

Huomautus: Vaikka muissa oppaissa saatetaan kehottaa kopioimaan easy-rsa-pakettitiedostot PKI-hakemistoon, tässä oppaassa käytetään symbolilinkkejä. Tämän seurauksena kaikki easy-rsa-paketin päivitykset heijastuvat automaattisesti PKI:n skripteihin.

Käyttäytymisen rajoittamiseksi uuteen PKI-hakemistoosi varmista, että vain omistaja pääsee siihen käsiksi komennolla chmod:

  • chmod 700 /home/sammy/easy-rsa

Lopulta alustat PKI:n easy-rsa-hakemiston sisälle:

  • 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

Tämän osion suorittamisen jälkeen sinulla on hakemisto, joka sisältää kaikki ne tiedostot, joita tarvitaan varmennepalvelun luomiseen. Seuraavassa osiossa luot CA:n yksityisen avaimen ja julkisen varmenteen.

Vaihe 3 – Varmenteiden myöntäjän luominen

Ennen kuin voit luoda CA:n yksityisen avaimen ja varmenteen, sinun on luotava ja täytettävä tiedosto nimeltä vars joillakin oletusarvoilla. Ensin cd hakemistoon easy-rsa, sitten luot ja muokkaat vars-tiedoston nano:lla tai haluamallasi tekstieditorilla:

  • cd ~/easy-rsa
  • nano vars

Kun tiedosto on avattu, liitä seuraavat rivit ja muokkaa jokaista korostettua arvoa vastaamaan oman organisaatiosi tietoja. Tärkeää tässä on varmistaa, ettet jätä yhtään arvoa tyhjäksi:

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

Kun olet valmis, tallenna ja sulje tiedosto. Jos käytät nano, voit tehdä sen painamalla CTRL+X, sitten Y ja ENTER vahvistaaksesi. Olet nyt valmis rakentamaan varmenteiden myöntäjän.

Luoaksesi varmenteiden myöntäjän julkisen ja yksityisen pääavainparin, suorita komento ./easy-rsa uudelleen, tällä kertaa build-ca-vaihtoehdolla:

  • ./easyrsa build-ca

Tulosteessa näet muutamia rivejä OpenSSL-versiosta ja sinua pyydetään syöttämään avainparin salasana. Muista valita vahva salasana ja merkitse se muistiin jonnekin turvalliseen paikkaan. Sinun on syötettävä tunnuslause aina, kun sinun on oltava vuorovaikutuksessa varmentajasi kanssa, esimerkiksi allekirjoittaaksesi tai peruuttaaksesi varmenteen.

Sinua pyydetään myös vahvistamaan varmentajasi yleinen nimi (CN). CN on nimi, jolla tähän koneeseen viitataan varmentajan yhteydessä. Voit syöttää CA:n Common Name -nimeksi minkä tahansa merkkijonon, mutta yksinkertaisuuden vuoksi hyväksy oletusnimi painamalla ENTER.

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

Huomautus: Jos et halua, että sinulta kysytään salasanaa aina, kun olet vuorovaikutuksessa CA:n kanssa, voit suorittaa build-ca-komennon nopass-vaihtoehdolla seuraavasti:

  • ./easyrsa build-ca nopass

Sinulla on nyt kaksi tärkeää tiedostoa – ~/easy-rsa/pki/ca.crt ja ~/easy-rsa/pki/private/ca.key – jotka muodostavat Certificate Authorityn julkisen ja yksityisen osan.

  • ca.crt on varmentajan julkinen varmentamistiedosto. Käyttäjät, palvelimet ja asiakkaat käyttävät tätä varmennetta todentaakseen, että ne ovat osa samaa luottamusverkostoa. Jokaisella käyttäjällä ja palvelimella, joka käyttää varmentajaasi, on oltava kopio tästä tiedostosta. Kaikki osapuolet luottavat julkiseen varmenteeseen varmistaakseen, että joku ei esiinny järjestelmänä ja suorita Man-in-the-middle-hyökkäystä.

  • ca.key on yksityinen avain, jota varmentaja käyttää palvelimien ja asiakkaiden varmenteiden allekirjoittamiseen. Jos hyökkääjä pääsee käsiksi CA:si ja sitä kautta ca.key-tiedostoon, sinun on tuhottava CA:si. Tämän vuoksi ca.key-tiedoston tulisi olla vain CA-koneellasi, ja ihanteellisessa tapauksessa CA-koneesi tulisi pitää offline-tilassa silloin, kun se ei allekirjoita varmennepyyntöjä, ylimääräisenä turvatoimena.

Sen jälkeen CA:si on käytössä ja sitä voidaan käyttää varmennepyyntöjen allekirjoittamiseen ja varmenteiden peruuttamiseen.

Vaihe 4 – Varmenteiden myöntäjän julkisen varmenteen jakelu

Varmenteiden myöntäjäsi on nyt määritetty ja valmis toimimaan luottamuksen juurena kaikille järjestelmille, jotka haluat määrittää käyttämään sitä. Voit lisätä varmentajan varmenteen OpenVPN-palvelimiin, verkkopalvelimiin, sähköpostipalvelimiin ja niin edelleen. Jokaisen käyttäjän tai palvelimen, jonka on tarkistettava verkon toisen käyttäjän tai palvelimen henkilöllisyys, on tuotava kopio ca.crt-tiedostosta käyttöjärjestelmänsä varmennevarastoon.

Jos haluat tuoda varmentajan julkisen varmenteen toiseen Linux-järjestelmään, kuten toiseen palvelimeen tai paikalliseen tietokoneeseen, hanki ensin kopio ca.crt-tiedostosta varmentajan palvelimelta. Voit käyttää cat-komentoa sen tulostamiseen päätelaitteeseen ja kopioida ja liittää sen sitten varmenteen tuovan toisen tietokoneen tiedostoon. Voit myös käyttää työkaluja kuten scp, rsync tiedoston siirtämiseen järjestelmien välillä. Käytämme tässä vaiheessa kuitenkin kopiointia ja liittämistä nano:n avulla, koska se toimii kaikissa järjestelmissä.

Suorita CA-palvelimen ei-root-käyttäjänä seuraava komento:

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

Terminaaliin tulee seuraavan kaltainen tuloste:

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

Kopioi kaikki tiedot, mukaan lukien -----BEGIN CERTIFICATE-----– ja -----END CERTIFICATE------viivat ja viivat.

Toisessa Linux-järjestelmässäsi avaa nano– tai haluamallasi tekstieditorilla tiedosto nimeltä /tmp/ca.crt:

  • nano /tmp/ca.crt

Taivuta CA-palvelimelta juuri kopioimasi sisältö editoriin. Kun olet valmis, tallenna ja sulje tiedosto. Jos käytät nano, voit tehdä sen painamalla CTRL+X, sitten Y ja ENTER vahvistaaksesi.

Nyt kun sinulla on kopio ca.crt-tiedostosta toisessa Linux-järjestelmässäsi, on aika tuoda varmenne sen käyttöjärjestelmän varmennepalveluun.

Ubuntu- ja Debian-pohjaisissa järjestelmissä suorita seuraavat komennot ei-root-käyttäjänäsi varmenteen tuomiseksi:

Ubuntu- ja Debian-peräiset jakelut
  • sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  • sudo update-ca-certificates

Tuoaksesi CA-palvelimen varmenteen CentOS-, Fedora- tai RedHat-pohjaiseen järjestelmään kopioi ja liitä tiedoston sisältö järjestelmään edellisen esimerkin tapaan tiedostoon /tmp/ca.crt. Seuraavaksi kopioit varmenteen tiedostoon /etc/pki/ca-trust/source/anchors/ ja suoritat sitten komennon update-ca-trust.

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

Nyt toinen Linux-järjestelmäsi luottaa mihin tahansa varmenteeseen, jonka CA-palvelin on allekirjoittanut.

Huomautus: Jos käytät CA-järjestelmääsi web-palvelimilla ja käytät Firefoxia selaimena, sinun on tuotava julkinen ca.crt-varmenne suoraan Firefoxiin. Firefox ei käytä paikallisen käyttöjärjestelmän varmennevarastoa. Lisätietoja CA:n varmenteen lisäämisestä Firefoxiin on tässä Mozillan tukiartikkelissa Certificate Authorities (CAs) Setting Up in Firefox.

Jos käytät CA:tasi Windows-ympäristön tai pöytätietokoneiden kanssa, katso dokumentaatiota siitä, miten asennat CA-varmenteen certutil.exe:n avulla.

Jos käytät tätä opetusohjelmaa jonkin toisen opetusohjelman ennakkoedellytyksenä tai jos tunnet varmenteiden allekirjoittamisen ja peruuttamisen, voit keskeyttää tämän. Jos haluat oppia lisää varmenteiden allekirjoittamisesta ja peruuttamisesta, seuraavassa valinnaisessa osiossa selitetään kukin prosessi yksityiskohtaisesti.

(Valinnainen) – Varmenteen allekirjoituspyyntöjen luominen ja varmenteiden peruuttaminen

Oppikirjan seuraavat osiot ovat valinnaisia. Jos olet suorittanut kaikki edelliset vaiheet, sinulla on täysin konfiguroitu ja toimiva varmennepalvelu, jota voit käyttää edellytyksenä muille opetusohjelmille. Voit tuoda varmentajasi ca.crt-tiedoston ja tarkastaa verkossa olevat varmentajasi allekirjoittamat varmenteet.

Jos haluat harjoitella ja oppia lisää varmennepyyntöjen allekirjoittamisesta ja varmenteiden peruuttamisesta, näissä valinnaisissa osioissa selitetään, miten molemmat prosessit toimivat.

(Valinnainen) – Harjoitusvarmennepyynnön luominen ja allekirjoittaminen

Nyt kun sinulla on varmentaja valmiina, voit harjoitella yksityisen avaimen ja varmennepyynnön luomista tutustuaksesi allekirjoittamis- ja jakeluprosessiin.

Varmenteen allekirjoituspyyntö (CSR, Certificate Signing Request) koostuu kolmesta osasta: julkisesta avaimesta, pyynnön esittäneen järjestelmän yksilöintitiedoista ja itse pyynnön allekirjoituksesta, joka luodaan pyynnön esittäneen osapuolen yksityisen avaimen avulla. Yksityinen avain pidetään salassa, ja sitä käytetään salaamaan tietoja, jotka kuka tahansa, jolla on allekirjoitettu julkinen varmenne, voi sitten purkaa.

Seuraavat vaiheet suoritetaan toisessa Ubuntu- tai Debian-järjestelmässäsi tai jommastakummasta johdetussa jakelussa. Se voi olla toinen etäpalvelin tai paikallinen Linux-kone, kuten kannettava tietokone tai pöytätietokone. Koska easy-rsa ei ole oletusarvoisesti käytettävissä kaikissa järjestelmissä, käytämme openssl-työkalua käytännön yksityisen avaimen ja varmenteen luomiseen.

openssl on yleensä asennettu oletusarvoisesti useimpiin Linux-jakeluihin, mutta varmuuden vuoksi suorita järjestelmässäsi seuraava:

  • sudo apt update
  • sudo apt install openssl

Kun sinua pyydetään asentamaan openssl, kirjoita y jatkaaksesi asennuksen vaiheita. Nyt olet valmis luomaan käytännön CSR:n openssl:llä.

Ensimmäinen vaihe, joka sinun on suoritettava CSR:n luomiseksi, on yksityisen avaimen luominen. Jos haluat luoda yksityisen avaimen openssl:n avulla, luo practice-csr-hakemisto ja luo avain sen sisään. Teemme tämän pyynnön kuvitteelliselle palvelimelle nimeltä sammy-server, toisin kuin luomme varmenteen, jota käytetään käyttäjän tai toisen varmentajan tunnistamiseen.

  • 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)

Nyt kun sinulla on yksityinen avain, voit luoda vastaavan CSR:n, jälleen käyttäen openssl-apuohjelmaa. Sinua pyydetään täyttämään useita kenttiä, kuten maa, osavaltio ja kaupunki. Voit syöttää ., jos haluat jättää kentän tyhjäksi, mutta ota huomioon, että jos kyseessä olisi oikea CSR, on parasta käyttää paikkakuntaa ja organisaatiota koskevia oikeita arvoja:

  • 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 :

Jos haluat lisätä nämä arvot automaattisesti osana openssl-kutsua vuorovaikutteisen kehotteen sijaan, voit antaa OpenSSL:lle -subj-argumentin. Muista muokata korostetut arvot vastaamaan käytäntösi sijaintia, organisaatiota ja palvelimen nimeä:

  • 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

Varmistaaksesi CSR:n sisällön voit lukea pyyntötiedoston openssl:llä ja tutkia sen sisältämät kentät:

  • 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

Kun olet tyytyväinen käytäntösi varmennepyynnön aiheeseen, kopioi sammy-server.req-tiedosto CA-palvelimelle käyttäen scp:

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

Tässä vaiheessa luotit varmenteen allekirjoituspyynnön fiktiiviselle palvelimelle nimeltä sammy-server. Reaalimaailman skenaariossa pyyntö voisi olla peräisin esimerkiksi staging- tai kehitysverkkopalvelimelta, joka tarvitsee TLS-varmenteen testausta varten, tai se voisi tulla OpenVPN-palvelimelta, joka pyytää varmenteen, jotta käyttäjät voivat muodostaa yhteyden VPN:ään. Seuraavassa vaiheessa siirrytään varmenteen allekirjoituspyynnön allekirjoittamiseen CA-palvelimen yksityisen avaimen avulla.

(Valinnainen) – CSR:n allekirjoittaminen

Edellisessä vaiheessa loihdit fiktiiviselle palvelimelle harjoitusvarmennepyynnön ja -avaimen. Kopioit sen CA-palvelimen /tmp-hakemistoon jäljitellen prosessia, jota käyttäisit, jos sinulla olisi oikeita asiakkaita tai palvelimia, jotka lähettäisivät sinulle CSR-pyyntöjä, jotka on allekirjoitettava.

Jatkaessasi kuvitteellista skenaariota CA-palvelimen on nyt tuotava harjoitusvarmenne ja allekirjoitettava se. Kun varmennepyyntö on varmennettu varmentajassa ja välitetty takaisin palvelimelle, asiakkaat, jotka luottavat varmentajaan, voivat luottaa myös juuri myönnettyyn varmenteeseen.

Koska toimimme varmentajan PKI:n sisällä, jossa easy-rsa-apuohjelma on käytettävissä, allekirjoitusvaiheet käyttävät easy-rsa-apuohjelmaa helpottaaksemme asioita sen sijaan, että käyttäisimme suoraan openssl-apuohjelmaa, kuten teimme edellisessä esimerkissä.

Kuvitteellisen CSR:n allekirjoittamisen ensimmäinen vaihe on varmennepyynnön tuominen easy-rsa-skriptin avulla:

  • 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.

Nyt voit allekirjoittaa pyynnön suorittamalla easyrsa-skriptin, jossa on sign-req-vaihtoehto ja sen jälkeen pyynnön tyyppi ja CSR:ään sisältyvä Common Name. Pyynnön tyyppi voi olla joko client, server tai ca. Koska harjoittelemme kuvitteellisen palvelimen varmenteella, muista käyttää server-pyyntötyyppiä:

  • ./easyrsa sign-req server sammy-server

Tulosteessa sinua pyydetään tarkistamaan, että pyyntö tulee luotettavasta lähteestä. Kirjoita yes ja paina sitten ENTER vahvistaaksesi tämän:

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

Jos salasit CA-avaimesi, sinua pyydetään tässä vaiheessa antamaan salasanasi.

Näiden vaiheiden jälkeen olet allekirjoittanut sammy-server.req CSR:n käyttäen CA-palvelimen yksityistä avainta /home/sammy/easy-rsa/pki/private/ca.key. Tuloksena syntynyt sammy-server.crt-tiedosto sisältää harjoituspalvelimen julkisen salausavaimen sekä CA-palvelimen uuden allekirjoituksen. Allekirjoituksen tarkoitus on kertoa kaikille CA-palvelimeen luottaville, että he voivat luottaa myös sammy-server-varmenteeseen.

Jos tämä pyyntö koskisi todellista palvelinta, kuten verkkopalvelinta tai VPN-palvelinta, CA-palvelimen viimeinen vaihe olisi uusien sammy-server.crt– ja ca.crt-tiedostojen jakaminen CA-palvelimelta CSR-pyynnön tehneelle etäpalvelimelle:

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

Tässä vaiheessa myönnettyä varmentetta voitaisiin käyttää esimerkiksi verkkopalvelimella, VPN:llä, konfiguraationhallintatyökalulla, tietokantajärjestelmällä tai asiakkaan todennustarkoituksiin.

(Valinnainen) – Varmenteen peruuttaminen

Joskus saatat joutua peruuttamaan varmenteen, jotta käyttäjä tai palvelin ei voi käyttää sitä. Ehkä jonkun kannettava tietokone on varastettu, verkkopalvelin on vaarantunut tai työntekijä tai urakoitsija on lähtenyt organisaatiostasi.

Varmenteen peruuttaminen tapahtuu yleensä seuraavien vaiheiden mukaisesti:

  1. Varmenteen peruuttaminen komennolla ./easyrsa revoke client_name.
  2. Luo uusi CRL komennolla ./easyrsa gen-crl.
  3. Siirrä päivitetty crl.pem-tiedosto palvelimelle tai palvelimille, jotka tukeutuvat varmentajaasi, ja kopioi se näissä järjestelmissä tarvittavaan hakemistoon tai tarvittaviin hakemistoihin ohjelmille, jotka viittaavat siihen.
  4. Käynnistä uudelleen kaikki palvelut, jotka käyttävät varmentajaasi ja CRL-tiedostoa.

Voit käyttää tätä prosessia peruuttaaksesi aiemmin myöntämäsi varmenteet milloin tahansa. Käymme jokaisen vaiheen yksityiskohtaisesti läpi seuraavissa kappaleissa aloittaen revoke-komennosta.

Varmenteen peruuttaminen

Varmenteen peruuttamiseksi siirry CA-palvelimesi easy-rsa-hakemistoon:

  • cd ~/easy-rsa

Suorita seuraavaksi easyrsa-skripti, jossa on revoke-vaihtoehto ja sen jälkeen sen asiakkaan nimi, jonka varmenteen haluat peruuttaa. Yllä olevan käytännön esimerkin mukaisesti varmenteen yleinen nimi on sammy-server:

  • ./easyrsa revoke sammy-server

Tällöin sinua pyydetään vahvistamaan peruuttaminen kirjoittamalla 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. . .

Huomaa korostettu arvo Revoking Certificate-rivillä. Tämä arvo on peruutettavan varmenteen yksilöllinen sarjanumero. Jos haluat tutkia peruutusluetteloa tämän osion viimeisessä vaiheessa tarkistaaksesi, että varmenne on siinä, tarvitset tätä arvoa.

Varmennuksen myöntäjä peruuttaa varmenteen, kun olet vahvistanut toimenpiteen. Etäjärjestelmillä, jotka luottavat varmentajaan, ei kuitenkaan ole mitään keinoa tarkistaa, onko jokin varmenne peruutettu. Käyttäjät ja palvelimet voivat edelleen käyttää varmenteen, kunnes varmentajan varmenteen peruutusluettelo (Certificate Revocation List, CRL) on jaettu kaikille varmentajaan tukeutuville järjestelmille.

Seuraavassa vaiheessa luot CRL-luettelon tai päivität olemassa olevan crl.pem-tiedoston.

Varmenteen peruutusluettelon luominen

Nyt kun olet peruuttanut varmenteen, varmentajan palvelimellasi on tärkeää päivittää peruttujen varmenteiden luettelo. Kun sinulla on päivitetty peruutusluettelo, voit kertoa, millä käyttäjillä ja järjestelmillä on voimassa olevia varmenteita CA:ssasi.

Luoaksesi CRL:n suorita komento easy-rsa optiolla gen-crl, kun olet vielä ~/easy-rsa-hakemistossa:

  • ./easyrsa gen-crl

Jos olet käyttänyt salasanaa luodessasi ca.key-tiedostoa, sinua pyydetään antamaan se. Komento gen-crl luo tiedoston nimeltä crl.pem, joka sisältää päivitetyn luettelon kyseisen varmentajan peruutetuista varmenteista.

Seuraavaksi sinun on siirrettävä päivitetty crl.pem-tiedosto kaikkiin palvelimiin ja asiakkaisiin, jotka tukeutuvat tähän varmentajaan, joka kerta, kun suoritat komennon gen-crl. Muuten asiakkaat ja järjestelmät voivat edelleen käyttää CA:ta käyttäviä palveluita ja järjestelmiä, koska näiden palveluiden on tiedettävä varmenteen peruutetusta tilasta.

Varmenteen peruutusluettelon siirtäminen

Nyt kun olet luonut CRL:n CA-palvelimellasi, sinun on siirrettävä se etäjärjestelmiin, jotka tukeutuvat CA:si. Voit siirtää tiedoston palvelimillesi komennolla scp.

Huomautus: Tässä ohjeessa kerrotaan, miten CRL-luettelo luodaan ja jaetaan manuaalisesti. Vaikka on olemassa vankempia ja automatisoituja menetelmiä peruutusluetteloiden jakeluun ja tarkistamiseen, kuten OCSP-Stapling, näiden menetelmien määrittäminen ei kuulu tämän artikkelin piiriin.

Varmista, että olet kirjautuneena CA-palvelimellesi ei-root-käyttäjänäsi, ja suorita seuraavat komennot korvaamalla your_server_ip omalla palvelimesi IP-osoitteella tai DNS-nimellä:

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

Nyt, kun tiedosto on etäkäyttäjälläsi, viimeisenä askeleena päivität kaikki palvelut uudella kopiolla peruutusluettelosta.

CRL:ää tukevien palveluiden päivittäminen

Luettelo vaiheista, joita on käytettävä crl.pem-tiedostoa käyttävien palveluiden päivittämiseksi, ei kuulu tämän ohjeen piiriin. Yleisesti ottaen sinun on kopioitava crl.pem-tiedosto paikkaan, jota palvelu odottaa, ja käynnistettävä se sitten uudelleen käyttämällä systemctl.

Kun olet päivittänyt palvelusi uudella crl.pem-tiedostolla, palvelusi pystyvät hylkäämään yhteydet asiakkailta tai palvelimilta, jotka käyttävät peruutettua varmentetta.

CRL-tiedoston sisällön tutkiminen ja tarkistaminen

Jos haluat tutkia CRL-tiedostoa esimerkiksi vahvistaaksesi luettelon peruutetuista varmenteista, käytä seuraavaa openssl-komentoa CA-palvelimesi easy-rsa-hakemistosta:

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

Voit suorittaa tämän komennon myös millä tahansa palvelimella tai missä tahansa järjestelmässä, johon on asennettu openssl-työkalu, jossa on kopio crl.pem-tiedostosta. Jos esimerkiksi siirrät crl.pem-tiedoston toiseen järjestelmään ja haluat tarkistaa, että sammy-server-varmenne on peruutettu, voit käyttää seuraavan kaltaista openssl-komentoa korvaamalla tässä korostetun sarjanumeron sillä sarjanumerolla, jonka huomasit aiemmin varmenteen peruuttamisen yhteydessä:

  • 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

Huomaa, miten komennolla grep tarkistetaan peruuttamisvaiheessa huomattu uniikki sarjanumero. Nyt voit tarkistaa Certificate Revocation List -luettelon sisällön missä tahansa järjestelmässä, joka luottaa siihen rajoittaessaan käyttäjien ja palveluiden käyttöä.

Conclusion

Tässä opetusohjelmassa loit yksityisen varmenteiden myöntäjän Easy-RSA-paketin avulla itsenäiselle Ubuntu 20.04 -palvelimelle. Opit, miten luottamusmalli toimii varmentajaan luottavien osapuolten välillä. Loit ja allekirjoitit myös varmenteen allekirjoituspyynnön (CSR) harjoituspalvelimelle ja opit sitten, miten varmenne peruutetaan. Lopuksi opit, miten luot ja jaat CRL-luettelon (Certificate Revocation List) mille tahansa varmentajaasi tukeutuvalle järjestelmälle varmistaaksesi, että käyttäjät tai palvelimet, joiden ei pitäisi päästä palveluihin, eivät pääse niihin käsiksi.

Nyt voit myöntää varmenteita käyttäjille ja käyttää niitä OpenVPN:n kaltaisten palvelujen kanssa. Voit myös määrittää CA:n avulla kehitys- ja varastointiverkkopalvelimille varmenteita, joilla voit suojata muut kuin tuotantoympäristöt. CA:n käyttäminen TLS-varmenteiden kanssa kehityksen aikana voi auttaa varmistamaan, että koodisi ja ympäristösi vastaavat mahdollisimman hyvin tuotantoympäristöäsi.

Jos haluat lisätietoja OpenSSL:n käytöstä, OpenSSL Essentials: Työskentely SSL-varmenteiden, yksityisten avainten ja CSR:ien kanssa -oppaassa on paljon lisätietoa, joka auttaa sinua tutustumaan OpenSSL:n perusteisiin.

Vastaa

Sähköpostiosoitettasi ei julkaista.