September 20, 2019
  • 6:30 pm Office 365 – Yksittäisten tai useiden käyttäjätilien luominen | Office 365 Admin Center & PowerShell
  • 10:09 pm Office 365 – Yhdistäminen tenanttiin PowerShellillä
  • 2:15 pm NameCheap – Kaupallisen SSL-sertifikaatin uusiminen
  • 9:48 pm Ubuntu Server 18.04.3 – Tietoturvapäivitysten automatisointi
  • 1:54 am Tuotantopalvelimen päivitys – Ubuntu Server 16.04 -> 18.04

Johdanto

SSL-sertifikaatit uusitaan aina kokonaan uudelleen, sillä voimassaolon päättymispäivä on sisällytetty itse sertifikaattiin. Sertifikaatin voi ostaa pidemmäksi aikaa, mutta itse olen tyytynyt maksamaan kerrallaan vain vuodesta.

Oman palvelimeni SSL-sertifikaatti on ostettu NameCheapistä, joten kuvaan tässä sertifikaatin uusimiseen kuuluvat vaiheet. Palvelimeni on DigitalOceanista vuokrattu Ubuntu 18.04.3 LTS virtuaalipalvelin. WWW-palvelinohjelmistona toimii Apache/2.4.29.


Uuden sertifikaatin ostaminen ja aktivointi

Sertifikaatin uusiminen tarkoittaa käytännössä uuden sertifikaatin ostamista. Kirjauduin NameCheapin hallintapaneeliin, josta näin vanhentuvat tuotteeni. SSL-sertifikaattini vieressä oli ostoskorinkuvake, jota painamalla sertifikaatin sai ostettua uudelleen.

Seuraavassa vaiheessa kysyttiin, moneksiko vuodeksi sertifikaatti halutaan. Itse valitsin yhdeksi vuodeksi.

Sitten hyväksyin ostokseni ja täyttelin tilaustietoni. Lopulta sain varmennuksen ostostani.

Navigoin verkkotunnukseni “markuspyharanta.com” hallintaan ja sieltä “Products“-välilehdelle. Uusi SSL-sertifikaatti näkyi nyt verkkotunnukseni alaisuudessa. Sen tilana oli “ALERT“, sillä sitä ei oltu aktivoitu.

Ennen aktivointi piti luoda palvelinpäässä CSR (certificate signing request) eli allekirjoituspyyntö. Kyseessä on viesti, joka lähetetään SSL-varmenteita myöntävälle taholle taholle tarkistusta varten. CSR pitää myös sisällään julkisen avaimeni. Kirjauduin palvelimelleni SSH-yhteydellä ja loin CSR:n uuteen kansioon nimeltä csr kotihakemistossani.

mkdir csr
cd csr

Sitten ajoin kyseisessä kansiossa seuraavan komennon:

openssl req -new -newkey rsa:2048 -nodes -keyout markuspyharanta.key -out markuspyharanta.csr

Komento loi 2048 bittisen henkilökohtaisen avaimen ja aloitti allekirjoituspyynnön generoinnin.

Seuraavaksi minun piti vastailla muutamiin kysymyksiin sijannistani, yhteystiedoista jne. Yhteydessä luotiin myös haastesalasana, joka tulee olla korkeintaan 20 merkkiä pitkä.

Lopulta csr-kansioon luotiin kaksi tiedostoa: markuspyharanta.csr ja markuspyharanta.key.

Palasin takaisin NameCheapin hallintapaneeliin ja aktivoin sertifikaattini painamalla “ACTIVATE“-nappia sen vieressä.

Minun tuli syöttää CSR-koodini, jonka generoin palvelimella. Olen tummentanut syöttämäni koodin kuvassa. “Primary domain”-arvo otetaan automaattisesti CSR-koodista. Sitä ei voi itse muuttaa enää tässä vaiheessa luomatta uuttaa CSR-koodia.

Seuraavassa vaiheessa kysyttiin palvelinkonfiguraatiosta. Valitsin “Any other server“, koska käytän Apachea.

Sitten piti valita DCV-metodi, eli tapa, jolla sertifikaatteja myöntävä auktoriteetti varmistaa, että olet varmasti kyseisen verkkotunnuksen omistaja. Vaihtoehtoja on sähköpostivahvistus, DNS-pohjainen vahvistus ja HTTP-pohjainen vahvistus. Itse käytin DNS-pohjaista vahvistusta, mikä edellyttää sinulle annetun CNAME-tietueen lisäämisen nimitietueisiin.

Seuraavassa vaiheessa annoin sähköpostiosoitteen, johon halusin sertifikaattini lähetettävän:

Lopuksi sain vielä kokonaisnäkymän valinnoistani:

Sitten navigoin sertifikaattini tietoihin. Sieltä näin, että sen statuksena oli nyt “IN PROGRESS“. Painoin “SEE DETAILS“.

Aukesi sivu, jolta näin sertifikaatin tiedot. Painoin “EDIT METHODS“-napin viereistä nuolta, ja sitten “Get Record“.

Aukesi ikkuna, josta sain tarvittavat tiedot CNAME-tietueen lisäämistä varten. Otin tiedot talteen muistioon.

Navigoin verkkotunnukseni hallintaan, jossa otin heti ensimmäisenä WhoisGuard-suojauksen pois päältä. Viimeeksi tein nimittäin sen virheen, että odottelin yli 8 tuntia ilman, että mitään tapahtui. Palvelu on ongelmallinen sertifikaattia myönnettäessä, sillä varmenteen myöntävä auktoriteetti ei pysty tarkistamaan verkkotunnuksen omistaman henkilön tietoja, joita se sitten vertaa siihen CSR allekirjoituspyyntöön, jonka täytin aiemmin palvelimellani. Muulloin se kannattaa olla päällä, sillä se peittää verkkotunnuksen omistajan henkilötiedot julkisuudesta.

Navigoin “Advanced DNS“-välilehdelle ja poistin heti ensimmäisenä vanhan CNAME-tietueen, jonka olin ilmeisesti unohtanut sinne edellisen sertifikaatin asennuksen yhteydessä.

Lisäsin uuden tietueen painamalla “ADD NEW RECORD“.

Tyypiksi valitsin “CNAME Record“, Hostiksi annoin sen arvon, jonka sain aiemmassa kohdassa. Siinä täytyi tosin muistaa jättää se verkkotunnus pois rimpsusta, eli ainoastaan merkkijono + piste merkitään tässä. Target-kentän kopion kokonaisuudessaan. TTL-arvoksi asetin yhden minuutin.

Tallensin muutokset ja odottelin noin tunnin, jonka jälkeen huomasin, että SSL-sertifikaatin status oli muuttunut tilaan “ACTIVE“.

Sähköpostiini oli myös saapunut sertifikaattitiedostot zip-paketissa:

Purin paketin työpöydälleni. Sitten kävin vielä NameCheapin hallintapaneelissa laittamassa WhoisGuard-suojauksen takaisin päälle:


Sertifikaatin asennus palvelimelle

Omat sertifikaattini sijaitsevat hakemistosijainnissa /etc/ssl/, joka on kokonaan root-käyttäjän omistuksessa. Normaalisti olen lukinnut kirjautumisen rootille kokonaan, mutta tässä tapauksessa käytän kyseistä käyttäjää sertifikaatin asennukseen. Toinen vaihtoehto olisi muuttaa hakemiston käyttöoikeuksia.

Avasin root-käyttäjän komennolla:

sudo usermod --unlock root

Sitten muokkasin tiedostoa /etc/ssh/sshd_config/, josta vaihdoin seuraavan rivin arvoksi “yes“.

PermitRootLogin yes

Kirjauduin root-käyttäjälle SSH-yhteydellä ja navigoin hakemistoon /etc/ssl/. Loin ensin kaksi uutta kansiota: old_certs ja old_private.

cd /etc/ssl/
mkdir old_certs
mkdir old_private

Kansioon old_certs siirsin vanhat tiedostot markuspyharanta_com.ca-bundle ja markuspyharanta_com.crt.

mv markuspyharanta_com.ca-bundle old_certs/
mv markuspyharanta_com.crt old_certs/

Sitten navigoin hakemistoon /etc/ssl/private/ ja siirsin tiedoston markuspyharanta.key kansioon old_private.

cd /etc/ssl/private/
mv markuspyharanta.key old_private/

Aiemmin luodessani CSR-koodin palvelimella, samalla luotiin sertifikaattini uusi yksityinen avain, joka piti nyt siirtää hakemistoon /etc/ssl/private/. Siirryin hakemistoon, josta avain löytyi ja siirsin sen.

cd /home/markus/csr/
mv markuspyharanta.key /etc/ssl/private/

Seuraavaksi siirsin NameCheapiltä saamani sertifikaatin hakemistoon /etc/ssl/. Sain sertifikaatin aiemmin sähköpostitse ja latasin sen Windows-koneeni työpöydälle. Siirsin tiedostot palvelimelle WinSCP-ohjelmalla.

Kätevää olisi ollut kirjautua suoraan sisään rootilla myös WinSCP:n SFTP-yhteyteen, mutta tein siten, että siirsin tiedostot omalla käyttäjälläni käyttäjäni kotihakemistoon. Minulla oli kuitenkin SSH-yhteys vielä rootilla auki, joten sain tiedostot napattua nopeasti sieltä oikeaan hakemistoon.

cd /home/markus/
mv markuspyharanta_com.ca-bundle /etc/ssl/
mv markuspyharanta_com.crt /etc/ssl/

Sertifikaatti oli nyt asennettu. Kävin vielä tarkistamassa, että Apachen konfiguraatio varmasti etsii sertifikaattitiedostoja oikeasta paikasta. Muokkasin konfiguraatiotiedostoani:

sudoedit /etc/apache2/sites-available/markus-ssl.conf

Rivit olivat konfiguraatiossa oikein, joten käynnistin Apachen uudelleen:

sudo service apache2 restart

Nyt, kun navigoin verkkosivuilleni ja tarkistin sertifikaatin tilan, se oli päivittynyt. Varmenteen päättymispäivä oli 19.8.2020. Ensi vuonna sitten uudelleen!

Lopuksi vielä vaihdoin takaisin omalle käyttäjälleni, ja suljin root-tunnuksilla kirjautumisen tietoturvasyistä.

sudo usermod --lock root

Sitten muokkasin /etc/ssh/sshd_config/ ja vaihdoin rivin arvoksi “no“.

PermitRootLogin no

Tallensin konfiguraation.


TÄTÄ DOKUMENTTIA SAA KOPIOIDA JA MUOKATA GNU GENERAL PUBLIC LICENSE (VERSIO 3 TAI UUDEMPI) MUKAISESTI. HTTP://WWW.GNU.ORG/LICENSES/GPL.HTML
MARKUS PYHÄRANTA
Markus Pyhäranta

RELATED ARTICLES
LEAVE A COMMENT