maanantai 11. lokakuuta 2021

AWS EC2 osa 4: Let's Encrypt

Tämä teksti jatkaa Amazon EC2-virtuaalipalvelimen asennusta. Lue sarjan edellinen osa tästä blogista!

7. Let's Encrypt

Let's Encrypt antaa palvelimelle ilmaisen ja turvallisen SSL-sertifikaatin. Asenna Let's Encrypt Amazon EC2-virtuaalipalvelimeen alla olevilla ohjeilla.

7.1 Ota käyttöön Extra Packages for Enterprise Linux (EPEL) -pakettikokoelma komennolla:

sudo amazon-linux-extras install epel

7.2 Asenna Let's Encrypt EPEL-kokoelmasta komennolla:

sudo yum install certbot certbot-apache

7.3 Lisää sivusto Apacheen komennolla:

sudo vim /etc/httpd/vhosts.d/korpelankauppa.conf

missä korpelankauppa on sivuston lyhyt nimi. Muokkaa tiedostoa siten, että siinä lukee:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName korpelankauppa.fi
    ServerAlias www.korpelankauppa.fi
</VirtualHost>

Tarkista tiedoston muoto ja käynnistä Apache uudelleen komennoilla:

sudo apachectl configtest sudo systemctl restart httpd

7.4 Hanki SSL-sertifikaatti sivustolle komennolla:

sudo certbot --apache --no-self-upgrade certonly

Älä anna certbotin muokata entistä tai luoda uutta asetustiedostoa sivustolle! Jos certbot kaikesta huolimatta luo uuden tiedoston hakemistoon /etc/httpd/vhosts.d, niin poista se.

7.5 Lisää HTTPS-asetukset saitille komennolla:

sudo vim /etc/httpd/vhosts.d/korpelankauppa.conf

Muokkaa tiedostoa siten, että siinä lukee:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName korpelankauppa.fi
    ServerAlias www.korpelankauppa.fi

    # Redirect to https
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =korpelankauppa.fi [OR]
    RewriteCond %{SERVER_NAME} =www.korpelankauppa.fi
    RewriteRule ^ https://korpelankauppa.fi%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<Directory "/home/ec2-user/korpelankauppa">
    Options SymLinksIfOwnerMatch IncludesNoExec
    AllowOverride all
    Require all granted
</Directory>

<VirtualHost *:443>
    DocumentRoot /home/ec2-user/korpelankauppa
    ServerName korpelankauppa.fi
    ServerAlias www.korpelankauppa.fi
    SSLEngine on

    # Redirect to non-www domain
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.korpelankauppa.fi
    RewriteRule ^ https://korpelankauppa.fi%{REQUEST_URI} [END,NE,R=permanent]

    # Enable forward secrecy
    SSLProtocol all -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
    SSLCertificateFile /etc/letsencrypt/live/korpelankauppa.fi/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/korpelankauppa.fi/privkey.pem
</VirtualHost>

missä korpelankauppa.fi on sivustosi verkkotunnus ja /home/ec2-user/korpelankauppa on hakemisto, jossa sivusto tulee sijaitsemaan.

7.6 Luo www-hakemisto komennolla:

cd mkdir korpelankauppa

ja lisää juureen index.html tiedosto komennolla:

cd korpelankauppa echo OK > index.html

7.7 Tarkista, että asetustiedosto on muodoltaan virheetön komennolla:

sudo apachectl configtest

7.8 Käynnistä Apache uudelleen komennolla:

sudo systemctl restart httpd

Avaa nettiselain ja mene osoitteeseen http://korpelankauppa.fi (tms). Jos kaikki meni oikein, niin selain ohjaa sinut osoitteeseen https://korpelankauppa.fi ja ruudulle tulee näkyviin teksti "OK".

7.9 Avaa root-käyttäjän crontab komennolla:

sudo crontab -e

ja lisää tiedostoon rivi:

M H * * D /usr/bin/certbot renew --no-self-upgrade -q

missä M on satunnainen minuutti 0-59, H on satunnainen tunti 0-23 ja D on satunnainen viikonpäivä 0-6 (0 sunnuntai, 1 maanantai jne). Certbot käynnistyy annettuna aikana ja päivittää sertifikaatit tarvittaessa uusiin.

7.10 Asenna nettikauppa hakemistoon /home/ec2-user/korpelankauppa (tms) ja jatka sivuston kehitystä!

Jos PHP-koodin tarvitsee kirjoittaa johonkin hakemistoon, niin anna kirjoitusoikeudet komennoilla:

chgrp -R www-data logs chmod -R g+rw logs find logs -type d -exec chmod g+sx {} \; find logs -type d -exec setfacl -dm g::rwx {} \;

missä logs on avattava hakemisto.