Meerdere websites hosten met SSL op Raspberry pi


In een eerder artikel heb ik de basis installatie van de Apache webserver en hoe deze te configureren uitgelegd. Hiermee is het mogelijk een website op je Raspberry pi te hosten. Maar, het is mogelijk meerdere websites tegelijk op je Raspberry pi te hosten. Hiervoor is het wel noodzakelijk dat je hiervoor verschillende domeinnamen registreert. gelukkig zijn er meerdere manieren waar je dit gratis kunt doen. Zo is er bijvoorbeeld "Domain Registration No-IP", of de Nederlandse site van "ServerThuis - een domeinnaam gekoppeld aan het IP-adres van uw eigen server ". Op deze sites lees je hoe je hier je IP adres verbind aan verschillende domeinnamen. zelf heb ik gekozen voor domein registratie bij ServerThuis, met meerdere domein namen eindigend op ".nl-web.net". Maar, er zijn ook andere extensies mogelijk.


De inrichting van de Apache server

Om nu meerdere websites met je Apache webserver te hosten moet je een aantal aanpassingen in de Apache configuratie doen. Allereerst in de dir /etc/apache2/sites-available. Open hier met nano het bestand 000-default.conf. In dit bestand gaan we een paar aanpassingen doen.
nano /etc/apache2/sites-available/000-default.conf Pas de volgende regels aan met naam van jouw domein.
ServerName www.example.com
ServerAlias example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
In deze laatste regel zorg je ervoor dat deze naar de juiste root locatie van je webserver verwijst, bijvoorbeeld: /var/site1/.
Met Ctrl + o sla je het bestand op in de zelfde dir als waar je dit bestand opende. Geef het een nieuwe naam die voor jouw een duidelijke verwijzing naar bijbehorende website aangeeft. Bijvoorbeeld: site1.conf. Voor eventueel meerdere websites herhaal je bovenstaande stappen.
Het volgende bestand waarin we aanpassingen moeten doen is het bestand apache2.conf. Open het met nano:
nano /etc/apache2/apache2.conf
zoek nu naar de volgende regels:
Directory /var/www/
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
/Directory
kopieer deze regels en plak deze hieronder, dus twee x onder elkaar. Zet voor de bovenste serie, beginnend met"Directory /var/www/" en eindigend met "/Directory" een hekje(#).
> Verander de eerste regel hieronder "Directory /var/www/" met het juiste pad naar een van je website locaties, bijvoorbeeld Directory /var/site1/. Verander ook nog de regel " AllowOverride none" in " AllowOverride All".
Voor je andere websites plaats je de zelfde regels daaronder waarin je telkens in de eerste regel het juiste pad naar je site bestanden aangeeft.
!Let wel! De Eerste regel en laatste regel staan telkens tussen de <> spekhaken en moeten er wel bij! Sla het bestand op met Ctrl + x y


de Virtual Hosts

Wat is een VirtualHost? Een VirtualHost is een configuratie-bestand dat zich op Debian bevindt in de map /etc/apache2/sites-available. Een VirtualHost instrueert Apache waar hij de website-bestanden kan vinden die gekoppeld zijn aan een specifieke domeinnaam. In beginsel wordt er per domeinnaam één VirtualHost aangemaakt. Je dient er dus voor te zorgen dat de nameservers van de domeinnaam (of sub-domeinnaam) doorverwijzen naar de (virtuele) server waar Apache op draait. We hebben inmiddels voor alle sites die we willen hosten een bestand gemaakt in /etc/apache2/sites-available, site1.conf, site2.conf, site3.conf.
Voor deze uitleg ga ik uit van een domeinnaam registratie met de extensie .nl-web.net. om nu deze sites te koppelen aan de bijbehorende URL type je de volgende opdracht regel:
sudo a2ensite site1.nl-web.net
sudo a2ensite site2.nl-web.net
sudo a2ensite site3.nl-web.net
andersom, de koppeling ongedaan maken:
sudo a2dissite site1.nl-web.net
Na een herstart van de Apache server zijn de sites bereikbaar via bijbehorende URL. Herstart apache:
/etc/init.d/apache2 restart

Een Let's Encrypt SSL-certificaat installeren in Apache


In rasbian Stretsch moet je alvorens de installatie te kunnen uitvoeren de volgende opdrachtregel uitvoeren:
sudo sed -i "$ a\deb http://ftp.debian.org/debian stretch-backports main" /etc/apt/sources.list
Update het systeem, type:
Apt-get update
Voor de installatie type je:
sudo sed -i "$ a\deb http://ftp.debian.org/debian stretch-backports main" /etc/apt/sources.list
In Rasbian Buster is het pakket standart aanwezig en kan de installatie direct worden uitgevoerd.
Type dan voor de installatie de volgende opdracht:
sudo apt-get install certbot -y
Er zal nu gevraagd worden of je deze package (inclusief een hele hoop Python-dependenties) wilt installeren. Kies voor Y en druk op Enter.
Maak nu een SSL-certificaat aan met de volgende opdrachtregel(vervang voorbeeldsite.nl met jouw eigen domeinnaam):
letsencrypt --apache -d voorbeeldsite.nl
Wil je ook 'www. voorbeeldsite.nl' beveiligen, voeg dan ook-d www. voorbeeldsite.nltoe aan de opdracht regel hierboven. Zet tussen de verschillende domeinnamen een komma, dus: voorbeeldsite.nl, www. Voorbeeldsite.nl, enz.
Het is mogelijk dat je de volgende melding krijgt: 'We were unable to find a host with a Servername or Address of voorbeeldsite.nl', met “c” annuleer je het proces.. Zorg er juist voor dat je de ServerName goed! Start het proces opnieuw op en let extra op of de ingevoerde gegevens correct zijn.
Er verschijnt vervogens de keuzeof je van 'Easy' of 'Secure' https gebruik wilt maken.
• Easy: Hiermee is je site zowel met http als https te benaderen.
• Secure: Wanneer je site met http benaderd wordt, wordt deze automatisch doorgestuurd naar de https site.
Na je keuze met enter bevestigd te hebben, krijg je de melding dat het SSL-certificaat succesvol is geïnstalleerd! Wanneer je nu naar https:// voorbeeldsite.nl gaat zul je zien dat jouw website volledig via https beveiligd is!


Automatiesch verlengen met crontab



Een Let's Encrypt SSL-certificaat is standaard voor 3 maanden geldig en je zult deze dan ook elke 3 maanden moeten verlengen. Maar, er is een mogelijkheid dit via een cronjob automatisch te regelen.<
Open 'crontab' met de volgende opdracht:
sudo crontab -e
Voeg in de crontab de volgende regel toe:
0 0 1 * * /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log
Sluit crontab met Ctrl + x y
Hiermee zullen nu elke maand automatisch de Let's Encrypt-certificaten vernieuwd worden.

Vandaag is het: Wednesday, 28 October 2020 en de tijd is 07:02:31

Copyright 2016 Renzo van Buuren