Site Overlay

Come creare certificati SSL autofirmati attendibili e domini locali per il test

Utilizzo di certificati SSL deboli e autofirmati

Come creare certificati SSL autofirmati attendibili e domini locali per testare | di Albin Issac | Migliore programmazione

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

Icona del certificato SSL con il testo "Come creare certificati SSL attendibili e autofirmati e domini locali per il test"

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.

Screenshot di un browser che visualizza l'avviso "Avviso: potenziale rischio per la sicurezza successivo".

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:WindowsSystem32driversetchosts127.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.

Un prompt che indica che il certificato radice è stato aggiunto come parte di Autorità di certificazione radice attendibili.

È possibile verificare il certificato tramite Gestione certificati o . Certmgr.msc

1*qPKX6ScawwZGZ4aDqhv ow

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

Impostazioni del browser Chrome che mostrano un elenco di autorità di certificazione root attendibili.

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.

Visualizza Gestione certificati in Firefox.

È 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".

Una finestra di dialogo con la casella di controllo "Considera attendibile questa CA per identificare i siti Web" per scaricare un certificato in Firefox.

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.comsub.myexample.commyexample1.comlocalhost

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.comsub.myexample.commyexample1.comlocalhost

Uno screenshot di un browser che mostra un pop-up di certificato che la connessione è sicura.
Visualizzazione delle impostazioni delle informazioni sui certificati per localhost.
Con la scheda Dettagli nella finestra Certificato, fai clic su "Oggetto Alternativo... " Evidenziato. La casella sottostante mostra i nostri nomi DNS di esempio.

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.