Nun habe ich in der Vergangenheit ja schon einige Beiträge über die lokale Entwicklungsumgebung geschrieben – insbesondere mit MAMP. Ein wichtiges Thema fehlt allerdings noch: SSL / HTTPS lokal nutzen.
Als erstes muss man dazu ein Key-File erstellen.
openssl genrsa -des3 -out server.key 1024
Wenn man nach einem Passwort gefragt wird, muss man dieses hier vergeben. Die Mindestlänge beträgt 4 Zeichen. In meinem Fall habe ich einfach einmal 1234 gewählt. Das kann man sich wenigstens gut merken – ist ja nur für die lokalen Verbindungen und somit unkritisch.
Bei der Erstellung des Zertifikates muss man dieses Passwort dann direkt wieder eingeben. Außerdem muss man ein paar Fragen beantworten.
openssl req -new -key server.key -out server.csr
Hier meine Beispielantworten:
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:NRW Locality Name (eg, city) []:Paderborn Organization Name (eg, company) [Internet Widgits Pty Ltd]:mkleine.de Organizational Unit Name (eg, section) []:dev Common Name (e.g. server FQDN or YOUR name) []:Matthias Kleine Email Address []:dev@mkleine.de Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:1234 An optional company name []:
Als nächstes erstellen wir das eigentliche Zertifikat:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Mit einem Trick entfernen wir das Passwort vom Server-Key:
cp server.key server.tmp openssl rsa -in server.tmp -out server.key
So weit, so gut. Nun etwas aufräumen, und die Dateien in das MAMP-Verzeichnis schieben (geht natürlich auch per Finder):
mkdir /Applications/MAMP/conf/ssl mv server.* /Applications/MAMP/conf/ssl/
Als nächstes müssen wir MAMP beibringen, dass wir dieses Zertifikat nutzen möchten.
Ich für meinen Teil, habe bereits eine vhosts.conf im apache-Verzeichnis angelegt. Diese enthält Domains für die lokale Entwicklung (local.dev, magento.localhost, …), da man unter localhost sonst keine Cookies ablegen kann.
Diese Datei enthielt bisher folgenden Inhalt:
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "/Volumes/DEV/sites" ServerName local.dev <Directory "/Volumes/DEV/sites"> Options All AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot "/Volumes/DEV/magento" ServerName localhost.magento <Directory "/Volumes/DEV/magento"> Options All AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Die Datei liegt im Verzeichnis /Applications/MAMP/conf/apache/ und wurde mit folgendem Befehl in der httpd.conf eingebunden:
Include /Applications/MAMP/conf/apache/vhosts.conf
Um das Ganze nun mit SSL auszustatten, fügen wir folgendes hinzu:
Listen 443 AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLPassPhraseDialog builtin SSLSessionCache "shmcb:/Applications/MAMP/Library/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 SSLMutex "file:/Applications/MAMP/Library/logs/ssl_mutex" NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:443> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /Applications/MAMP/conf/ssl/server.crt SSLCertificateKeyFile /Applications/MAMP/conf/ssl/server.key DocumentRoot "/Volumes/DEV/sites" ServerName local.dev </VirtualHost>
Den Apache neu starten und fertig ist alles. Nach einem Aufruf von https://local.dev/ sag mir mein Browser auch brav, dass das Zertifikat nicht sicher sei. Und ich bin der Aussteller. Alles läuft also super. Viel Erfolg!