Ecco come creare il tuo cetificato SSL per i tuoi server locali in modo da poter eseguire i siti HTTPS in locale senza problemi
Perché HTTPS localmente?
Perché non utilizzare solo il normale HTTP localmente? Perché se il tuo sito di produzione è solo HTTPS e stai sviluppando localmente su HTTP normale, i tuoi ambienti di sviluppo e produzione non sono così simili come potrebbero essere. Ad esempio, il mio ambiente di sviluppo per questo sito funziona come un server Ubuntu in una macchina virtuale VMware su Mac. Il sito di produzione è un server Ubuntu in esecuzione su Linode con una configurazione quasi identica.
Sicuramente vuoi che il tuo ambiente di sviluppo rispecchi la produzione il più fedelmente possibile.
L’esecuzione di HTTP quando il tuo sito di produzione è solo HTTPS è sicuramente un rischio non necessario.
Tuttavia, provare a ottenere un certificato SSL funzionante con il tuo server locale fa schifo se non stai utilizzando uno strumento che lo gestisce per te come Valet .
Se hai mai provato a eseguire un sito HTTPS in locale, probabilmente hai visto qualcosa di simile a quanto segue in Chrome:
La soluzione alternativa era creare un certificato autofirmato e utilizzarlo. MAMP Pro lo fa per te ed è stato il mio go-to per anni. Purtroppo non è più possibile. L’approccio moderno è diventare la tua autorità di certificazione (CA)!
Come funziona
Per richiedere un certificato SSL da una CA come Verisign o GoDaddy, invii loro una richiesta di firma del certificato (CSR) e loro ti danno un certificato in cambio che hanno firmato utilizzando il loro certificato di origine e la chiave privata. Tutti i browser dispongono di una copia (o accedono a una copia dal sistema operativo) del certificato radice di Verisign, in modo che il browser possa verificare che il certificato sia stato firmato da una CA attendibile.
Ecco perché quando generi un certificato autofirmato il browser non si fida di esso. È autofirmato. Non è stato firmato da una CA. Ma possiamo generare il nostro certificato radice e la nostra chiave privata. Quindi aggiungiamo il certificato radice a tutti i dispositivi che possediamo solo una volta, quindi tutti i certificati che generiamo e firmiamo saranno intrinsecamente affidabili.
Diventare una autorità di certificazione
È un po ‘ridicolo quanto sia facile generare i file necessari per diventare un’autorità di certificazione. Occorrono solo due comandi. Innanzitutto, generiamo la nostra chiave privata:
openssl genrsa -des3 -out myCA.key 2048
Ti verrà richiesta una passphrase, che consiglio di non saltare e di tenere al sicuro. La passphrase impedirà a chiunque ottenga la tua chiave privata di generare un proprio certificato radice. L’output dovrebbe essere simile a questo:
Generating RSA private key, 2048 bit long modulus
.................................................................+++
.....................................+++
e is 65537 (0x10001)
Enter pass phrase for myCA.key:
Verifying - Enter pass phrase for myCA.key:
Quindi generiamo un certificato radice:
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
Ti verrà richiesta la passphrase della tua chiave privata (che hai appena scelto) e un sacco di domande. Le risposte a queste domande non sono così importanti. Vengono visualizzati quando guardi il certificato, cosa che non farai quasi mai. Suggerisco di rendere il nome comune qualcosa che riconoscerai come certificato radice in un elenco di altri certificati. Questa è davvero l’unica cosa che conta.
Enter pass phrase for myCA.key:
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]:CA
State or Province Name (full name) [Some-State]:Nova Scotia
Locality Name (eg, city) []:Truro
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Delicious Brains Inc
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:Delicious Brains
Email Address []:noreply@deliciousbrains.com
Ora dovresti avere due file: myCA.key (la tua chiave privata) e myCA.pem (il tuo certificato radice).
Congratulazioni, ora sei un CA.
Per diventare una vera CA, devi ottenere il tuo certificato radice su tutti i dispositivi nel mondo. Cominciamo con quelli che possiedi.
Installazione del certificato radice
Dobbiamo aggiungere il certificato radice a qualsiasi laptop, desktop, tablet e telefono che accederà ai tuoi siti HTTPS. Questo può essere un po ‘fastidioso, ma la buona notizia è che dobbiamo farlo solo una volta. Una volta che il nostro certificato radice è su ogni dispositivo, sarà valido fino alla scadenza.
Aggiunta del certificato radice al portachiavi macOS
Tramite la CLI
sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" myCA.pem
Via the UI
- Apri l’app portachiavi macOS
- Vai a File> Importa elementi …
- Seleziona il file della tua chiave privata (es. MyCA.pem)
- Cerca qualunque cosa tu abbia risposto come nome comune sopra
- Fare doppio clic sul certificato radice nell’elenco
- Espandi la sezione Attendibilità
- Modificare la casella Quando si utilizza questo certificato: selezionare “Considera sempre attendibile”
- Chiudi la finestra del certificato
- Ti chiederà di inserire la password (o di scansionare il dito), fallo
Aggiunta del certificato radice a iOS
Se desideri aggiungere il certificato radice ai tuoi dispositivi iOS, puoi farlo abbastanza facilmente seguendo questi passaggi:
- Invia a te stesso il certificato radice per e-mail in modo da poterlo accedere sul tuo dispositivo iOS
- Fare clic sull’allegato nell’e-mail sul proprio dispositivo iOS
- Vai all’app delle impostazioni e fai clic su “Profilo scaricato” in alto
- Fare clic su installa in alto a destra
- Una volta installato, premi chiudi e torna alla pagina Impostazioni principale
- Vai a “Generale”> “Informazioni”
- Scorri fino in fondo e fai clic su “Impostazioni attendibilità certificato”
- Abilita il tuo certificato radice in “ABILITA FIDUCIA COMPLETA PER CERTIFICATI DI ROOT”