WP Migrate DB Pro
Het lokaal opzetten van HTTPS kan een lastige zaak zijn. Zelfs als het je lukt om zelfondertekende certificaten te worstelen tot inzending, krijg je nog steeds privacyfouten in de browser. In dit artikel bespreken we hoe u uw eigen certificeringsinstantie voor uw lokale servers kunt maken, zodat u HTTPS-sites probleemloos lokaal kunt uitvoeren.
Waarom HTTPS lokaal?
Waarom niet alleen lokaal gewone HTTP gebruiken? Omdat als uw productiesite alleen HTTPS is en u zich lokaal ontwikkelt op normale HTTP, uw ontwikkel- en productieomgevingen niet zo veel op elkaar lijken als ze zouden kunnen zijn. Mijn dev-omgeving voor deze site (deliciousbrains.com) draait bijvoorbeeld als een Ubuntu-server in een virtuele VMware-machine (VM) op zijn Mac. De productiesite is een Ubuntu-server die op Linode draait met een bijna identieke configuratie.
Je wilt absoluut dat je ontwikkelomgeving de productie zo nauwkeurig mogelijk weerspiegelt.
Als dat niet het geval is, nodig je meer problemen uit verschijnen in productie die niet in dev. Het uitvoeren van HTTP wanneer uw productiesite alleen HTTPS is, is absoluut een onnodig risico.
Het is echter vervelend om een SSL-certificaat te krijgen dat werkt met uw lokale server als u geen tool gebruikt die dit afhandelt voor jou zoals Valet.
Als je ooit hebt geprobeerd lokaal een HTTPS-site te runnen, heb je waarschijnlijk zoiets als het volgende gezien in Chrome:
De tijdelijke oplossing was het maken van een zelfondertekend certificaat en het gebruiken daarvan. MAMP Pro doet dit voor jou en was jarenlang mijn go-to. Helaas is dat niet meer mogelijk. De moderne aanpak is om uw eigen certificeringsinstantie (CA) te worden!
Hoe het werkt
Om een SSL-certificaat aan te vragen bij een CA zoals Verisign of GoDaddy, stuurt u ze een Certificate Signing Request (CSR), en ze geven je een certificaat in ruil dat ze hebben ondertekend met hun rootcertificaat en privésleutel. Alle browsers hebben een kopie (of openen een kopie van het besturingssysteem) van het Verisign-rootcertificaat, zodat de browser kan verifiëren dat uw certificaat is ondertekend door een vertrouwde CA.
Daarom genereert u een zelf- ondertekend certificaat de browser vertrouwt het niet. Het is zelf ondertekend. Het is niet ondertekend door een CA. Maar we kunnen ons eigen rootcertificaat en privésleutel genereren. Vervolgens voegen we het rootcertificaat slechts één keer toe aan alle apparaten die we bezitten, waarna alle certificaten die we genereren en ondertekenen inherent vertrouwd zijn.
Een (kleine) certificeringsinstantie worden
Het is nogal belachelijk hoe gemakkelijk het is om de bestanden te genereren die nodig zijn om een certificeringsinstantie te worden. Er zijn maar twee opdrachten nodig. Eerst genereren we onze privésleutel:
U wordt gevraagd om een wachtwoordzin, die ik aanbeveel om deze niet over te slaan en veilig te bewaren. De wachtwoordzin zal voorkomen dat iemand die uw privésleutel krijgt, een eigen rootcertificaat genereert. De uitvoer zou er als volgt uit moeten zien:
Vervolgens genereren we een rootcertificaat:
U wordt gevraagd om de wachtwoordzin van uw privésleutel (die je net hebt gekozen) en een heleboel vragen. De antwoorden op die vragen zijn niet zo belangrijk. Ze verschijnen als je naar het certificaat kijkt, wat je bijna nooit zult doen. Ik stel voor om de Common Name iets te maken dat u herkent als uw rootcertificaat in een lijst met andere certificaten. Dat is echt het enige dat telt.
U zou nu twee bestanden moeten hebben: myCA.key (uw privésleutel) en myCA.pem (uw rootcertificaat ).
🎉 Gefeliciteerd, u bent nu een CA. Soort van.
Om een echte CA te worden, moet je je rootcertificaat op alle apparaten ter wereld hebben. Laten we beginnen met degene die u bezit.
Uw rootcertificaat installeren
We moeten het rootcertificaat toevoegen aan alle laptops, desktops, tablets en telefoons die toegang hebben tot uw HTTPS-sites . Dit kan een beetje vervelend zijn, maar het goede nieuws is dat we het maar één keer hoeven te doen. Zodra ons rootcertificaat op elk apparaat staat, blijft het geldig totdat het verloopt.
Het rootcertificaat toevoegen aan macOS-sleutelhanger
Via de CLI
Via de gebruikersinterface
- Open de macOS Keychain-app
- Ga naar Bestand > Items importeren …
- Selecteer je privésleutelbestand (bijv. MyCA.pem)
- Zoek naar wat je hebt beantwoord als de algemene naam hierboven
- Dubbelklik op uw rootcertificaat in de lijst
- Vouw de sectie Vertrouwen uit
- Verander het selectievakje Bij gebruik van dit certificaat: in “Altijd Vertrouwen ”
- Sluit het certificaatvenster
- U wordt gevraagd uw wachtwoord in te voeren (of uw vinger te scannen), doe dat
- 🎉 Vier!
Het rootcertificaat toevoegen aan iOS
Als u het rootcertificaat aan uw iOS-apparaten wilt toevoegen, kunt u dit vrij eenvoudig doen door deze stappen te volgen:
- E-mail het rootcertificaat naar uzelf zodat u het op uw iOS-apparaat kunt openen
- Klik op de bijlage in de e-mail op uw iOS-apparaat
- Ga naar de instellingen-app en klik bovenaan op ‘Profiel gedownload’.
- Klik rechtsboven op installeren
- Eenmaal geïnstalleerd, klik op sluiten en ga terug naar de hoofdpagina Instellingen
- Ga naar “Algemeen” > “Over”
- Scroll naar beneden en klik op “Certificaatvertrouwensinstellingen”.
- Schakel uw rootcertificaat in onder “VOLLEDIG VERTROUWEN VOOR WORTELCERTIFICATEN INSCHAKELEN”
CA-ondertekende certificaten voor uw Dev Sites
Nu we een CA zijn op al onze apparaten, kunnen we certificaten ondertekenen voor nieuwe dev-sites die HTTPS nodig hebben. Eerst maken we een privésleutel:
Vervolgens maken we een CSR aan:
Je krijgt allemaal dezelfde vragen als hierboven, en nogmaals, je antwoorden doen er niet toe. In feite doen ze er nog minder toe, omdat u dit certificaat niet in een lijst naast andere zult bekijken.
Vervolgens maken we het certificaat met behulp van onze CSR, de CA-privésleutel, het CA-certificaat en een configuratiebestand, maar eerst moeten we dat configuratiebestand maken.
Het configuratiebestand is nodig om de extensie Subject Alternative Name (SAN) te definiëren die is gedefinieerd in deze sectie (dwz extensie) van het certificaat:
Het configuratiebestand (dev.deliciousbrains.com. ext) bevatte het volgende:
We voeren het openssl x509
commando uit, want voor zover ik begrijp, het x509 commando is nodig om te ondertekenen met het root certificaat en de private key. Ik vond dit voorbeeldconfiguratiebestand op Stack Overflow en het lijkt te werken.
Nu voeren we de opdracht uit om het certificaat te maken:
Ik kan nu mijn webserver configureren met de privésleutel en het certificaat. Als u een Linux-server gebruikt, kunt u de instructies in onze Install WordPress on Ubuntu 20.04-serie gebruiken. Als u MAMP gebruikt, kunt u het certificaat en de sleutelbestanden selecteren met behulp van de gebruikersinterface:
Helaas maakt MAMP (getest met versie 5.7) geen SSL-certificaten met een CA, dus u zult voorlopig de handmatige methode moeten gebruiken.
Voor andere dev-sites kunnen we dit laatste deel van het maken van een certificaat gewoon herhalen, we hoeven niet voor elke site een nieuwe CA aan te maken.
Shell-script
Om dingen nog sneller te maken, is hier een handig shellscript dat je voor je eigen doeleinden kunt aanpassen:
Conclusie
Dus daar heb je het, hoe je je eigen lokale certificaat kunt worden autoriteit om uw lokale SSL-certificaten te ondertekenen en HTTPS te gebruiken op uw lokale sites. Hopelijk elimineert dit het gevreesde ‘Uw verbinding is niet privé’ -bericht voor u in Chrome.