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:

  1. 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.
  2. 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!
  3. 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.
  4. 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.
  5. 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>
    
  6. 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:

  1. SHA1-Zertifikate sind aus gutem Grund out, also einfach nie mehr welche erzeugen.
  2. 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.

Noch keine Kommentare

Die Kommentarfunktion wurde vom Besitzer dieses Blogs in diesem Eintrag deaktiviert.