• 2015 - Atlantische oceaan
    2015 - Atlantische oceaan
  • 2015 - Kanoën in France
    2015 - Kanoën in France
  • 2017 - Op de MTB bij holterberg
    2017 - Op de MTB bij holterberg
  • 2016 - Ondergaande zon op de Nijl
    2016 - Ondergaande zon op de Nijl
  • 2013 - Ultralight vliegtuig
    2013 - Ultralight vliegtuig

Vanaf vandaag zijn mijn website's met https te bereiken.  Om dit mogelijk te maken moest ik even wat dingen uitvogelen:

Stap 1: Meerdere SSL website's op 1 ip adres laten draaien (Ik had mijn webacces al op https, dus de andere moesten erbij geprutst worden.)  keyword: SNI.

Stap 2: De websites van verschillende hosts (mailserver draait op andere host dan de www server) op dezelfde poort naar buiten. keyword: reverse proxy.

Stap 3: redirect voor http naar https instellen.

Stap 1: SSL Virtualhosts maken:

Om de website's op 1 IP adres te laten draaien moet je virtual hosts configureren; waarbij je iedere site een eigen naam geeft.  Dit staat hier al ergens uitgelegd, maar voor SSL/HTTP site's komt hier nog SNI bij (Server Name Indiciation)  Om dit goed te laten werken op apache 2.4 moet om een of andere vage reden de config van de verschillende ssl virtual-hosts in 1 bestand zitten. Heb het met meerdere geprobeerd: no go.  Dus hier is mijn (vereenvoudigde) ssl.config:

<VirtualHost *:443>
        ServerName gerrit.doornenbal.org
        DocumentRoot /var/www/gerrit
        <Directory "/var/www/gerrit">
                Options FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        SSLEngine on
        SSLCertificateFile /etc/dehydrated/certs/gerrit.doornenbal.org/cert.pem
        SSLCertificateKeyFile /etc/dehydrated/certs/gerrit.doornenbal.org/privkey.pem
        SSLCertificateChainFile /etc/dehydrated/certs/gerrit.doornenbal.org/chain.pem
        SSLProtocol ALL -SSLv2 -SSLv3
        SSLCipherSuite HIGH:!aNULL:!eNULL:!kECDH:!aDH:!RC4:!3DES:!CAMELLIA:!MD5:!PSK:!SRP:!KRB5:@STRENGTH
</VirtualHost>
<VirtualHost *:443>
        ServerName www.doornenbal.org
        DocumentRoot /var/www/www
        <Directory "/var/www/www">
                Options FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        SSLEngine on
        SSLCertificateFile /etc/dehydrated/certs/www.doornenbal.org/cert.pem
        SSLCertificateKeyFile /etc/dehydrated/certs/www.doornenbal.org/privkey.pem
        SSLCertificateChainFile /etc/dehydrated/certs/www.doornenbal.org/chain.pem
        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"
</VirtualHost>

Met deze configuratie kon ik beide websites onafhankelijk van elkaar via https benaderen!

Stap 2: SSL Reverse proxy configuratie:

Volgende stap was om de SSL pagina vanaf een andere interne server erbij te plakken.  Dit kun je standaard met apache doen met de mod-proxy module:

sudo apt-get install libapache2-mod-proxy-html libxml2-dev
sudo a2enmod proxy_http

Vervolgens de Virtualhost voor de reverse proxy bij de ssl.config geplakt:

<VirtualHost *:443>
        ServerName mijnemail.doornenbal.org
        SSLProxyEngine On
        ProxyPreserveHost On
        SSLEngine on
        SSLCertificateFile /etc/dehydrated/certs/server.doornenbal.org/cert.pem
        SSLCertificateKeyFile /etc/dehydrated/certs/server.doornenbal.org/privkey.pem
        SSLCertificateChainFile /etc/dehydrated/certs/server.doornenbal.org/chain.pem
        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"
        ProxyPass / https://192.168.1.13/
        ProxyPassReverse / https://192.168.1.13/
</VirtualHost>

Hier even wat uitleg:  De interne server heeft in de geval ip adres 192.168.1.13, en wordt over https benaderd. Om hier geen problemen te krijgen (MITM attacks) moet je het certificaat ook op de proxy-server installeren en configureren.

Stap 3: Redirect voor http naar https instellen.

Als alle bovenstaande goed werkt, is de volgende stap om http uit te schakelen. Nu is dat dus niet altijd even netjes, dus je kunt beter een vaste redirect instellen.  Dit is heel simpel.  Vervang de (oude) http Virtualhost configuratie met de volgende configuratie:

<VirtualHost *:80>
        ServerName gerrit.doornenbal.org
        Redirect permanent / https://gerrit.doornenbal.org/
</VirtualHost>

SSL Security.

Het is je vast wel opgevallen: ik heb naast de SSL Certificate files ook nog een paar andere settings toevoegd.  Deze zijn nodig om een veilig SSL protocol gebruik af te dwingen, zodat je de SSL verbinding die je gaat opzetten ook daadwerkelijk veilig is!  SSLv2 en SSLv3 zijn bijvoorbeeld gekraakt, dus niet veilig meer. Daarnaast zijn een groot aantal algorithmen die voor SSL verkeer (werden) gebruikt ook niet veilig meer, dus deze heb ik ook uitgeschakeld.  

Een goede website om dit te checken is https://www.ssllabs.com/ssltest/. Met bovenstaande settings kom ik nu (april 2017) op een A rating. niet slecht. :-).

You have no rights to post comments