Let’s Encrypt!

Moikka moi!

Tänään blogissa kerromme hyödyllistä asiaa tietoturva-asioihin liittyen. Kerromme nimittäin hieman palvelusta nimeltä Let’s Encrypt sekä lopuksi opastamme sen käyttöä. Enjoy!

Tietoturvan merkitys on korostunut vuosi vuodelta yhä enemmän ja meidän alallamme on erityisen tärkeää huolehtia verkkosivujen suojauksista. Yhä useammin kotisivuilla käytetään tietoa, joka vaatii salauksen verkkosivuja selaavan käyttäjän ja palvelimen välissä olevalle yhteydelle. Myös useat selainvalmistajat ovat alkaneet suosimaan salattuja yhteyksiä kotisivupalvelimille ja salauksen käyttö näkyy nykyään myös hakukonetuloksissakin. Tähän asti salauksen toteuttamiseen tarvittavien sertifikaattien hankinta on ollut kallista, byrokraattista sekä aikaa vievää, mutta hiljattain julkaistu Let’s Encrypt niminen palvelu tuo tähän kuitenkin suuren muutoksen.

Kyseinen Let’s Encrypt-palvelu on ensinnäkin täysin ilmainen ja automatisoitu alusta loppuun asti. Palvelun kautta hankittavat sertifikaatit eivät vaadi erillistä sähköpostitse tapahtuvaa validointia, vaan validointi tapahtuu automaattisesti erillisen palvelimelle asennettavan ohjelmiston kautta. Ohjelmisto huolehtii myös sertifikaattien uusimisesta. Uuden sertifikaattitoimijan tulo markkinoille ei kuitenkaan ole aivan yksinkertaista. Vaikka palvelua onkin valmisteltu jo useamman vuoden ajan ja siinä on mukana isoja toimijoita kuten EFF, Cisco ja Mozilla säätiö, niin siitä huolimatta se ei vielä kuitenkaan toimi ihan jokaisessa käyttötarkoituksessa. On kuitenkin mielenkiintoista seurata miten palvelu kehittyy tämän vuoden aikana ja toivottavasti se saadaan myös laajemmalti käyttöön.

Ohje Let’s Encryptin käyttöön:

Ohje on keskittynyt siihen, kuinka Let’s Encryptillä suojataan Apache CentOS 7 käyttöjärjestelmällä.
Ohje alkaa siitä, kun /var/www/omadomain.com/ hakemiston alle on luotu sivut ja domainille on luotu virtual host.
Jotta Let’s Encrypt client voidaan asentaa ja generoida SSL-sertifikaatti, on tehtävä parit asennukset sitä ennen. Kaikki vaiheet on suoritettava root-oikeuksilla varustetulla käyttäjällä.

Asennetaan EPEL (Extra Packages for Enterprise Linux) repository sekä Git josta ladataan Let’s Encrypt client:

yum install epel-release

yum install git

Asennetaan client:

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Asennetaan SSL-sertifikaatti:

cd /opt/letsencrypt

./letsencrypt-auto --apache -d esimerkkidomain.com -d www.esimerkkidomain.com

Asennus sisältää muutamia vaiheita, jotka voidaan kuitata nopeasti. Kun asennus on suoritettu, tulee suurin piirtein seuraavanlainen ilmoitus:

IMPORTANT NOTES:
– If you lose your account credentials, you can recover through e-mails sent to kayttaja@esimerkkidomain.com. – Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/esimerkkidomain.com/fullchain.pem. Your cert will expire on 2016-07-21. To obtain a new version of the certificate in the future, simply run Let’s Encrypt again. – Your account credentials have been saved in your Let’s Encrypt configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Let’s Encrypt so making regular backups of this folder is ideal. – If you like Let’s Encrypt, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt:  https://letsencrypt.org/donate Donating to EFF:  https://eff.org/donate-le

Sertifikaattitiedostot löytyvät hakemistosta

/etc/letsencrypt/live

Nyt kun sertifikaatti on asennettu, Virtual Host vaatii uudelleenjärjestelyä:

mv /etc/httpd/sites-enabled/esimerkkidomain.com-le-ssl.conf /etc/httpd/sites-available/ esimerkkidomain-le-ssl.conf

ln -s /etc/httpd/sites-available/esimerkkidomain-le-ssl.conf /etc/httpd/sites-enabled/esimerkkidomain.com-le-ssl.conf

Sites-enabled hakemiston pitäisi näyttää seuraavalta:

lrwxrwxrwx. 1 root root 50 May 18 09:04 esimerkkidomain.com.conf -> /etc/httpd/sites-available/ esimerkkidomain.com.conf

lrwxrwxrwx 1 root root 57 May 18 11:16 esimerkkidomain.com-le-ssl.conf -> /etc/httpd/sites-available/esimerkkidomain.com-le-ssl.conf

Disabloi selinux, disabloi SSL 3.0 Poodle-haavoittuvuuden takia ja käynnistä Apache uudelleen:

nano /etc/selinux/config

Kirjoita tiedostoon: SELINUX=disabled

Lisää tiedostoon ”-SSLv3”-teksti seuraavasti:

nano /etc/httpd/conf.d/ssl.conf

SSLProtocol all -SSLv3 -SSLv2

Käynnistä Apache uudelleen:

service httpd restart

Nyt sertifikaatin pitäisi olla kunnossa ja voimassa. Voit tarkistaa sertifikaatin tilan:
https://www.ssllabs.com/ssltest/analyze.html?d=esimerkkidomain.com&latest

Let’s Encrypt-sertifikaatit ovat voimassa 90 päivää, mutta ne kannattaa uusia 60 päivän välein mahdollisten ongelmatilanteiden välttämiseksi.

./letsencrypt-auto renew komento tarkistaa, että onko sertifikaatti uusittavissa ja uusii sen, jos voimassaolopäivään on alle 30 vuorokautta. Tarkistamisen ja uusinnan voi suorittaa automaattisesti kerran viikossa seuraavasti:

crontab -e

00 12 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

Nyt tuo tarkistus ja uusinta tapahtuu jokaisena maanantaina klo 12:00. Tarkistukset tallentuvat log-tiedostoon /var/log/le-renew.log

Let’s Encrypt clientin voi päivittää seuraavasti:

cd /opt/letsencrypt

git pull