Man hat eine Dev-Umgebung (in einer VM oder wo auch immer), aber man hat das Projekt so konfiguriert, dass es nur über HTTPS funktioniert? Dann muss ein Zertifikat her, sonst heult Chrome rum, der nimmt nämlich keine dauerhaften Ausnahmen an. Da ich nun schon zum hundertsten Mal ein Zertifikat für ein neues Testprojekt erstelle, habe ich das mal niedergeschrieben, inkl. lustiger Stolpersteine, über die ich jedes Mal stolpere. Und damit ich das nicht jedes Mal wieder machen muss, direkt ein Wildcard-Zertifikat.
Die Kurzform als Erinnerung für mich:
openssl genrsa -out wildcard.dev.local.key 3072
Ein Key mit 3072 Bit Länge. 2048 Bit gehen natürlich auch und sparen Ressourcen, aber davon hat unser Devserver ja genug.openssl req -new -sha256 -key wildcard.dev.local.key -out wildcard.dev.local.csr
Standard ist oft noch SHA1, solche Zertifikate werden von den Browsern aber bemängelt, also SHA256, sowieso immer!- Alle möglichen Daten für das Zertifikat eingeben (letztlich egal, sieht ja keiner) und als Common-Name
*.dev.local
benutzen. Oder wie auch immer der Dev-Server heißt. sudo openssl x509 -req -days 3650 -sha256 -in wildcard.dev.local.csr -signkey wildcard.dev.local.key -out wildcard.dev.local.crt
Ein selbst signiertes Zertifikat, zehn Jahre gültig und mit SHA256 als Hashalgorithmus.Key und Crt dem Webserver beibringen. Bei Apache in der Kurzform etwa so:
<VirtualHost *:443> ServerName myproject.dev.local DocumentRoot "/path/to/myproject/web"<Directory "/path/to/myproject/web"> Require all granted AllowOverride All </Directory> SSLEngine On SSLCertificateFile /path/to/wildcard.dev.local.crt SSLCertificateKeyFile /path/to/wildcard.dev.local.key </VirtualHost>
Firefox kann Ausnahmen einfach akzeptieren, Chrome will es komplizierter: Zertifikat im Security-Tab der Dev-Tools ansehen, In eine
p7b
-Datei exportieren und im Zertifikatsmanager in die "Vertrauenswürdigen Stammzertifizierungsstellen" importieren. Chrome neu starten und voilà, das Schloss ist grün.
Jetzt können wir ganz viele Unterprojekte von dev.local
aufsetzen und für alle das gleiche Zertifikat einsetzen. Kein Gefummel mehr, einfach Config kopieren, Name und Pfade anpassen, ab geht die Post. Zum Beispiel die Symfony-Demo-Applikation, die sollte man sich sowieso mal ansehen.
Wichtige Stolpersteine:
SHA1
-Zertifikate sind aus gutem Grund out, also einfach nie mehr welche erzeugen.- Zumindest der aktuelle Chrome mag für Wildcard-Zertifikate mindestens zwei Dots. Also
*.local
funktioniert einfach nicht. Habe ich ausprobiert, bleibt ohne weiteren Kommentar einfach rot. Daher*.dev.local
oder irgendwas anderes mit mindestens zwei Dots benutzen.