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.cnf
quindi 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.cnf
e 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' -nodes
opzione.
Infine, firmare la richiesta con la nuova CA principale e le estensioni dal server.cnf
file (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_serial
opzione.
Chiederà la password inserita quando è stata generata la CA principale.
server.cer
Verrà 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.key
e server.cer
al tuo server web e configura di conseguenza.