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