HTTPS med Apache2.4 och Ubuntu 18.04

Jag håller på och utvecklar lokalt med Javascript och krypteringen som finns inbyggd i webbläsaren, men man får bara tillgång till de JS kommandona om man kör HTTPS på webbservern.
Artikeln visar hur du kan få HTTPS i din Apache2 utvecklingsmiljö på din befintliga installation som redan fungerar med HTTP.

Den här artikeln bygger nästan helt på en artikel från Vultr
Skillnaden är att allt testats på Ubuntu 18.04 och att jag tagit bort ett onödigt kommando och lagt till några rader i apache config för att ge access till användaren.

Du behöver ett certifikat för att köra HTTPS. Det går att skapa ett lokalt certifikat som du kan använda på din utvecklingsmaskin.
När du installerat certifikatet och ska testa att surfa till din webbsida, då kommer webbläsaren att klaga att den inte kan verifiera certifikatet. Du får då klicka på att göra ett undantag.

Starta upp en terminal så du kan skriva kommandon.

Vi behöver ett ställe att skapa certifikaten i:

mkdir ~/certificates
cd ~/certificates

Nu kan du generera de två certifikaten

openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes

Du kommer att få lite frågor

Country Name (2 letter code) [AU]: SV
State or Province Name (full name) [Some-State]: Some-State
Locality Name (eg, city) []: Stockholm
Organization Name (eg, company) [My Company]: My Company
Organizational Unit Name (eg, section) []:

På Common name skriver du ditt domännamn eller IP nummer till din webbserver.
Jag har satt upp ett domännamn lokalt och skriver in det.

Common Name (e.g. server FQDN or YOUR name) []: local.infohub.workbench
Email Address []:webmaster@example.com

Nu ska vi flytta certifikaten till Apache

mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.

Om du kör Ubuntus brandvägg påslagen så kan du behöva konfigurera den.

sudo ufw enable
sudo ufw allow 'Apache Full'

Du kan se om reglerna fastnade med:

sudo ufw status

Nu sätter vi upp regler för SSL

sudo nano /etc/apache2/sites-available/default-ssl.conf

Så här ser min fil ut:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin my@email.se
ServerName local.infohub.workbench

DocumentRoot /home/peter/sites/infohub

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

<FilesMatch ”\.(cgi|shtml|phtml|php)$”>
SSLOptions +StdEnvVars
</FilesMatch>

<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>

<Directory ”/home/peter/sites/infohub”>
MultiviewsMatch Any
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>

<FilesMatch \.php$>
# 2.4.10+ can proxy to unix socket
SetHandler ”proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/”

# Else we can just use a tcp socket:
#SetHandler ”proxy:fcgi://127.0.0.1:9000”
</FilesMatch>
</VirtualHost>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Aktivera SSL

sudo a2enmod ssl

Aktivera konfigurationen

sudo a2ensite default-ssl.conf

Starta om Apache

sudo service apache2 restart

Testa
Du ska nu kunna surfa till ditt domännamn, jag testar med:

https://local.infohub.workbench/

Den bråkade först om rättigheter. Rensade session cookies i webbläsaren. Sedan fungerade siten som vanligt.

Nu har du möjlighet att köra både HTTP och HTTPS. Det går att ställa in så HTTP skickas vidare till HTTPS automatiskt.
Jag har inte satt upp det. Du kan läsa mer om det här: https://www.vultr.com/docs/configure-apache-with-select-signed-tls-ssl-certificate-on-ubuntu-16-04

CharZam