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.