Il modo corretto di implementare SSL su localhost


10

Qualcuno potrebbe suggerire un modo moderno di generare certificati autofirmati da implementare su localhost, che sarebbe accettato da Chrome e Mozilla?

Ho provato la generazione di openssl, tuttavia Mozilla lamenta che l'emittente non è attendibile.

Centos 7, nginx



2
È dominio locale, Let's encrypt funziona solo su registrati
Tarlan Mammadzada,

2
Passare al sito, fare clic su Avanzate e fare clic su Aggiungi eccezione.
Richard Smith,

1
Vuoi che appaia sicuro, avrai bisogno di una CA autofirmata e usala per firmare il certificato del tuo server, quindi puoi aggiungere la CA all'archivio sicuro del browser.
Richard Smith,

1
Sembra che Firefox abbia smesso di accettare certificati autofirmati. Come dice @RichardSmith, è necessario utilizzare un'autorità di certificazione per generare i certificati. Prima di immergerti in quel campo minato, potresti dover studiare le implicazioni sulla sicurezza del funzionamento della tua Autorità.
garethTheRed,

Risposte:


9

Avvertenza: prima di immergerti nel campo minato di gestione della tua Autorità di certificazione, potresti dover studiare le implicazioni sulla sicurezza!

Ma se è necessario, continua a leggere per una CA rapida e sporca che ti darà https://localhost/senza un messaggio di avviso ...

Creare il seguente file di testo:

# OpenSSL configuration for Root CA

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name
x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = Test Root CA

[ x509_ext ]

basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign

Salva come root.cnfquindi genera la richiesta con:

$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf

Ciò creerà il certificato CA principale ( root.cer) e la chiave privata CA principale ( root.key) che è necessario mantenere privati. Richiederà una password per la chiave privata: assicurati di sceglierne una forte.

Ora crea un file di configurazione per il certificato del server:

# OpenSSL configuration for end-entity cert

[ req ]

prompt             = no
string_mask        = default

# The size of the keys in bits:
default_bits       = 2048
distinguished_name = req_distinguished_name

x509_extensions    = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Test
commonName = localhost

[ x509_ext ]

keyUsage=critical,digitalSignature,keyAgreement

subjectAltName = @alt_names

# Multiple Alternate Names are possible
[alt_names]
DNS.1 = localhost
# DNS.2 = altName.example.com

Salvalo come server.cnfe genera la richiesta con:

openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf

Quanto sopra genererà un'altra chiave privata ( server.key) che è necessario proteggere. In questo caso, la chiave non è protetta da password, ma è possibile aggiungere una password rimuovendo l' -nodesopzione.

Infine, firmare la richiesta con la nuova CA principale e le estensioni dal server.cnffile (per comodità):

$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext

Nota: selezionare un numero casuale per l' -set_serialopzione.

Chiederà la password inserita quando è stata generata la CA principale.

server.cerVerrà generato un certificato server ( ).

Ora, aggiungi il certificato CA radice ( root.cer) all'archivio di ancoraggio trust di Firefox ed esegui un test con:

$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www

Nota: è possibile che si verifichino errori se si dispone già di un server in esecuzione sulla porta 443. In tal caso, arrestare il server in esecuzione o modificare il numero di porta sopra in un'altra porta non utilizzata.

Quando navighi su https://localhost(o https://localhost:<port>se hai modificato il numero di porta sopra) con Firefox, ora non dovresti vedere alcun avviso e ti verrà presentato un elenco di cifre che la tua installazione di OpenSSL può offrire.

Quando sei soddisfatto dei risultati, aggiungi server.keye server.ceral tuo server web e configura di conseguenza.


1
C'è un errore di battitura; stinguished_namedovrebbe esseredistinguished_name
user281357
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.