Een SSL certificaat installeren in MAMP

Het kan handig zijn om een SSL certificaat op je lokale ontwikkelomgeving te installeren. Dit artikel laat alle benodigde stappen zien om een SSL certificaat in MAMP te installeren op localhost.

Dit artikel is gemaakt met de volgende software: macOS Sierra 10.12.5, met MAMP (apache) en Chrome 59 als browser.

Installeer MAMP

De eerste stap is om MAMP te installeren. Mamp is een oplossing voor ontwikkelaars waarmee je met een druk op de knop een lokale ontwikkelomgeving met Apache, NGINX en MySQL op kan zetten. Download en installeer MAMP voor je verder gaat.

Een certificaat genereren voor lokaal gebruik

Sinds Chrome 58 zijn certificaten voor gebruik op localhost een SAN, Subject Alternative Name nodig. Een certificaat met de juiste eigenschappen kan lastig te verkrijgen zijn maar gelukkig heeft Alexander Zeitler een handleiding geschreven hoe je dat het beste kan doen. Om het certificaat helemaal goed te krijgen zijn enige handelingen in de terminal vereist. Welke handelingen precies kan je hieronder lezen.

Het certificaat genereren

Open een terminal en typ het volgende:

mkdir ~/ssl/

dit maakt een map ssl in je root folder. Typ het volgende in de terminal om naar de map ssl te gaan:

cd ~/ssl

nu moeten we een bestand server.csr.cnf maken in een tekstverwerker naar keuze. Zelf gebruik ik vi:

vi server.csr.cnf

kopieer onderstaande (voor meer informatie over wat elk veld in [dn] doet kan je dit artikel van Oracle bekijken). Je kan de attributen aanpassen naar je eigen organisatie of het laten zoals het is:

[req]

default_bits = 2048

prompt = no

default_md = sha256

distinguished_name = dn

[dn]

C=US

ST=New York

L=Rochester

O=End Point

OU=Testing Domain

emailAddress=your-administrative-address@your-awesome-existing-domain.com

CN = localhost

sla het bestand als volgt op

:wq

en druk op enter. :wq staat voor write quit.

Maak nu een bestand v3.ext

vi v3.ext

en kopieer het volgende:

authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

subjectAltName = @alt_names

[alt_names]

DNS.1 = localhost

Sla dit op door weer :wq te typen, gevolgd door een enter.

:wq

Je kan verifiëren of de bestanden aanwezig zijn door ls -la te typen:

ls -la

Dit laat alle bestanden in de ~/ssl/ directory zien. Plak vervolgens de volgende regel in de terminal om een private RSA key te genereren:

openssl genrsa -des3 -out ~/ssl/rootCA.key 2048

Vervolgens genereren we een root certificaat met een geldigheid van 1024 dagen:

openssl req -x509 -new -nodes -key ~/ssl/rootCA.key -sha256 -days 1024 -out ~/ssl/rootCA.pem

Daarna genereren we een private key voor het certificaat (server.key):

openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )

En tot slot het certificaat zelf (server.crt):

openssl x509 -req -in server.csr -CA ~/ssl/rootCA.pem -CAkey ~/ssl/rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

Dat was het! Om te verifiëren of het goed is gegaan typen we:

openssl x509 -text -in server.crt -noout

Vervolgens krijgen we een heleboel informatie te zien. In deze informatie moet het volgende staan:

            X509v3 Subject Alternative Name:

            DNS:localhost

Het rootCA.pem toevoegen aan de lijst met vertrouwde CA’s.

Voordat het certificaat geaccepteert wordt door je browser moet het rootCA.pem bestand toegevoegd worden aan de lijst van vertrouwde rootcertificaatautoriteiten. Je kan dit doen door Sleutelhangertoegang te openen, klik onder Sleutelhangers op ‘Systeem’ en kies ‘Certificaten’ als categorie. Dit zal er ongeveer zo uitzien:

 

Om het rootCA.pem bestand toe te voegen klik je linksonderin beeld op het + icoontje. Voeg het rootCA.pem certificaat toe en je zult het certificaat zien met een rood kruisje, begeleid door de tekst ‘Dit rootcertificaat wordt niet vertrouwd’.

 

Om ervoor te zorgen dat het certificaat werkt moeten we het certificaat vertrouwen. Klik om dat te doen op het ‘localhost’ certificaat, klik op ‘Vertrouw’ en kies vervolgens voor ‘Vertouw altijd’.

Sluit het menu en het certificaat ziet er nu als volgt uit:

We zijn nu klaar om Apache te configureren!

Apache configureren voor SSL

De Apache bestanden die we nodig zijn om het certificaat te laten werken zijn httpd.conf, te vinden in /../MAMP/apache/conf/httpd.conf en httpd-ssl.conf, te vinden in /../MAMP/apache/conf/extra/httpd-ssl.conf

 

 

Maak eerst een backup van je huidige configuratie voor je verder gaat!

 

 

Het configureren van httpd.conf

Open het bestand httpd.conf en haal het hekje (#) weg voor de volgende regels:

LoadModule ssl_module modules/mod_ssl.so

Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

Het kan zijn dat het hekje al weg is, of dat deze regels überhaupt niet bestaan. Als het hekje al weg is, mooi! Als ze niet bestaan, voeg ze toe.

Stel vervolgens de servernaam in op poort 443 (zorg er voor dat Servername maar één keer voor komt)

Servername  localhost:443

Dit zijn alle veranderingen aan httpd.conf!

Het configureren httpd-ssl.conf

Doe het volgende in httpd-ssl.conf

Stel Listen in op poort 443

Listen 443

Zoek vervolgens naar de VirtualHost configuratie, die er als volgt uit ziet:

<VirtualHost _default_:443>

# General setup for the virtual host
DocumentRoot “/Applications/MAMP/Library/htdocs”
ServerName localhost:443
ServerAdmin you@example.com
ErrorLog “/Applications/MAMP/Library/logs/error_log”
TransferLog “/Applications/MAMP/Library/logs/access_log”

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine off

Hier moeten een aantal dingen aangepast worden. Allereerst moet VirtualHost ingesteld worden op *:443 in plaats van _default_:443. Let erop dat de DocumentRoot verwijst naar de plek waar je websites of applicaties staan. Tot slot moet de SSLEngine aangezet worden. Het resultaat komt er dan als volgt uit te zien:

<VirtualHost *:443>

# General setup for the virtual host
DocumentRoot “/Applications/MAMP/htdocs”
ServerName localhost
ServerAdmin you@example.com
ErrorLog “/Applications/MAMP/Library/logs/error_log”
TransferLog “/Applications/MAMP/Library/logs/access_log”

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on

We zijn bijna klaar! Nu kan de locatie van de sleutel en het certificaat gedefinieerd worden. Zoek naar de regels SSLCertificateFile and SSLCertificateKeyFile.

Voeg de locatie van het .crt bestand toe aan SSLCertificateFile.

Voeg de locatie van het .key bestand toe aan SSLCertificateKeyFile.

In mijn geval ziet dat er als volgt uit:

SSLCertificateFile “/ssl/server.crt”

SSLCertificateKeyFile “/ssl/server.key”

Je kan de server.crt en server.key bestanden ook op een andere plaats neerzetten. Let er dan wel op dat het goede path is gedefinieerd in httpd-ssl.conf.

Bezoek https;//localhost om te kijken of het werkt:

En voila! Je hebt een lokale ontwikkelomgeving met SSL!

Related Articles

    Laat een reactie achter