Utilizzo di certificati SSL deboli e autofirmati
Come creare certificati SSL autofirmati attendibili e domini locali per est
Configurare i domini di test locali e abilitare un certificato attendibile e autofirmato per test locali rapidi
Il più delle volte, abbiamo domini diversi da localhost per testare le applicazioni localmente e abbiamo anche bisogno di certificati SSL autofirmati affidabili.
Certificato autofirmato
Un certificato autofirmato è un certificato firmato dalla persona che lo ha creato, anziché da un'autorità di certificazione attendibile. I server di sviluppo possono essere abilitati con certificati autofirmati per aiutarci a ridurre il costo dei certificati e anche i costi generali di gestione.
Per impostazione predefinita, il certificato autofirmato genera un errore di convalida del certificato quando si accede ai siti Web nei browser, ma ci consente di passare alle pagine reali accettando il rischio. In alcuni casi, i certificati autofirmati non ci aiutano a testare alcune funzionalità del browser che funzionano solo con SSL valido, come il test delle API di diversi browser, come la geolocalizzazione.
Ora vediamo come configurare rapidamente i domini locali e un certificato autofirmato attendibile per il test in Windows. lo stesso può essere utilizzato su altri sistemi con alcuni passaggi aggiuntivi.
Domini locali
A volte potrebbe essere necessario disporre di domini diversi per testare la nostra applicazione nell'ambiente di sviluppo. La configurazione DNS richiede più tempo e costi; i domini nativi ci aiutano a testare rapidamente le applicazioni negli ambienti di sviluppo.
Definirò i seguenti domini di test — , , e . sub.myexample.com myexample1.com myexample.com
Modificare il file di Windows, fare clic su . Aggiungere le voci seguenti per mappare i domini di test in modo che i domini definiti possano accedere all'applicazione in esecuzione su localhost all'interno dello stesso computer. hosts
C:WindowsSystem32driversetchosts
127.0.0.1
127.0.0.1 myexample.com
127.0.0.1 sub.myexample.com
127.0.0.1 myexample1.com
Ora creiamo un certificato autofirmato tramite OpenSSL.
Creazione di un certificato SSL radice
Creare una chiave RSA-2048 e salvarla nel file. rootCA
.key
openssl genrsa -des3 -out rootCA.key 2048
Quando ricevi "Inserisci password per rootCA.key", inserisci una password e memorizzala in modo sicuro.
Creare un certificato radice tramite la chiave generata.
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1460 -out rootCA.pem
Modificare i giorni di validità in base alle esigenze.
Quando ottieni "Inserisci passphrase per rootCA.key", inserisci la password utilizzata per creare la chiave root.
Inserisci qualsiasi altra informazione facoltativa:
- Nome paese (codice di 2 lettere) [AU]: USA
- Nome dello Stato o della Provincia (nome completo) [Alcuni Stati]: MN
- Nome del luogo (ad esempio, città) []: Eagan
- Nome dell'organizzazione (ad esempio, azienda) [Internet Widgits Pty Ltd]: Technology Forum
- Nome unità organizzativa (ad es. sezione) []: Marketing
- Nome comune (ad esempio, nome di dominio completo del server o nome YOUR) []: certificato locale
- Indirizzo e-mail []:
[email protected]
Considera attendibile il certificato SSL radice:
Ora il certificato radice è pronto. Fidiamoci del certificato SSL root sul sistema locale.
Eseguire il comando seguente da un prompt dei comandi (eseguire con accesso con privilegi elevati):
certutil -addstore -f "ROOT" rootCA.pem
Il certificato radice viene ora aggiunto come parte delle Autorità di certificazione radice attendibili.
È possibile verificare il certificato tramite Gestione certificati o . Certmgr.msc
Anche il certificato root può essere gestito tramite browser: in Chrome, vai su Privacy e Sicurezza → Impostazioni → Sicurezza → Gestisci certificati → Autorità di certificazione root attendibili.
È possibile importare/esportare e rimuovere il certificato (i certificati non possono essere rimossi se importati come segue):Certmgr.msc
Se si utilizza Firefox per i test locali, i certificati radice verranno ignorati nell'archivio certificati di Windows (Chrome e Edge fanno riferimento ai certificati radice nell'archivio certificati di Windows). Il certificato root autofirmato deve essere importato in Firefox separatamente.
Opzioni→ Vai a Privacy e sicurezza → Sicurezza → Certificati → visualizzare i certificati.
È possibile importare/esportare e rimuovere certificati. Importare il certificato CA radice creato nei passaggi precedenti. Seleziona "Considera attendibile questa CA per definire i siti Web".
Creare un certificato SAN SSL con un certificato radice
Il certificato radice è ora attendibile. Ti diamo un certificato SSL per supportare i nostri domini locali – , e per i test. myexample.com
sub.myexample.com
myexample1.com
localhost
Creare un nuovo file di configurazione OpenSSL in modo che i dettagli di configurazione siano disponibili al momento della creazione del certificato. server.csr.cnf
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C=US
ST=MN
L=Eagan
O=Tech Forum
OU=Marketing
[email protected]
CN = localhost
Creare un file con un elenco di domini SAN locali:v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names[alt_names]
DNS.1 = myexample.com
DNS.2=sub.myexample.com DNS.3=myexample1.com
DNS.4=localhost
Creare una chiave privata e una richiesta di firma del certificato (CSR) per il certificato localhost.
openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config server.csr.cnf
Questa chiave privata è memorizzata in . server.key
Emettiamo un certificato tramite il certificato SSL root e la CSR creata in precedenza.
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext
Quando dice "Inserisci passphrase per rootCA.key", inserisci la passphrase utilizzata durante la generazione della chiave root.
Il certificato di output viene memorizzato in un file denominato . server.crt
Abilitare il certificato SSL per il server locale
Abilitiamo ora il certificato per il server locale. Ho intenzione di configurare il certificato con l'applicazione Express.js per abilitare la comunicazione SSL attendibile.
app.js
var express = require('express')const path = require('path')
const https = require('https');
const fs = require('fs');var app = express ()app.get('/index.html', function (req, res) {res.sendFile('index.html', { root: path.join(__dirname, '.') })})https.createServer({ key: fs.readFileSync('ssl\server.key'), cert: fs.readFileSync('ssl\server.crt')}, app).listen(443, function()
{
console.log('Example app listening on port 443!
Vai a https://localhost/')})
Ora il certificato è attendibile dal browser per i domini di test , , , e . myexample.com
sub.myexample.com
myexample1.com
localhost
Il certificato attendibile e autofirmato può essere utilizzato per lo sviluppo e il test iniziale con domini locali. Questo ci aiuterà a consentire rapidamente ai domini locali trusted di testare alcuni scenari che richiedono un certificato SSL attendibile.