Il sito dedicato all'informatica ideato da Iasparra Francesco

Guida generale a openssl

  • Descrizione dei comandi principali del comando openssl

  • Data: 03/07/2012 Autore: Iasparra Francesco 


openssl req 	Gestione delle richieste di certificazione.
openssl ca 	Gestione relativa all'autorità di certificazione.
openssl crl 	Gestione del certificato delle revoche.
openssl genrsa 	Generazione di parametri RSA.
openssl rsa 	Conversione del formato di una chiave privata o di un certificato.
openssl x509 	Gestione dei dati dei certificati X.509. 

Ottenere le rispettive guide dei comandi:

openssl req -h > guida.txt
openssl crl -h >> guida.txt
openssl ca -h >> guida.txt
openssl genrsa -h >> guida.txt
openssl x509 -h >> guida.txt

Alcune opzioni frequenti nei comandi:

-in file 		Definisce un file in ingresso adatto al contesto.
-out file 		Definisce un file in uscita adatto al contesto.
-noout 			Non emette il risultato.
-text 			Emette le informazioni in forma di testo leggibile.
-hash 			Emette il codice di controllo relativo al contesto.
-inform formato 	Specifica il formato dei dati in ingresso.
-outform formato 	Specifica il formato dei dati in uscita.

Verificare un certificato:

openssl verify cert.pem

Verificare la corrispondenza tra certificato / chiave privata / CSR:

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5

Il file openssl.cnf, che si trova nella directory /etc/ssl/ contiene la configurazione di openssl.

E' importante osservare che le sezioni sono organizzate in modo gerarchico, a partire dai nomi dei comandi di OpenSSL. In pratica, per il comando openssl req si prende in considerazione la sezione [ req ], che poi può a sua volta richiamare altre sottosezioni.

Per la configurazione della CA e' contenuta nella sezione [ ca ] che contiene una sola direttiva, default_ca, con la quale si specifica la sottosezione da prendere in considerazione. In questo caso, la sottosezione è denominata [ CA_default ].

Esempio:
[ ca ]
default_ca      = CA_default            # The default ca section

[ CA_default ]
dir             = ./demoCA              # Where everything is kept
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
new_certs_dir   = $dir/newcerts         # default place for new certs.

certificate     = $dir/cacert.pem       # The CA certificate
serial          = $dir/serial           # The current serial number
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# The private key
RANDFILE        = $dir/private/.rand    # private random number file

E' bene osservare che con la direttiva dir viene definita una variabile, che poi viene presa in considerazione di nuovo, espandendola con l'aggiunta del prefisso $ ($dir), nei valori da assegnare ad altre variabili.

Creazione

La creazione di un'autorità di certificazione autonoma, ovvero di un'autorità principale (root), che non abbia ottenuto a sua volta un certificato da un'autorità di livello superiore, deve realizzare la sua chiave privata e il suo certificato auto-firmato. Diversamente, se dipendesse dalla certificazione di un'altra autorità, dovrebbe predisporre la propria richiesta, sottoporla all'autorità superiore da cui dovrebbe ottenere il certificato.

openssl genrsa -des3 -out ./demoCA/private/cakey.pem 
openssl req -new -x509 -days 730 -key ./demoCA/private/cakey.pem -out ./demoCA/cacert.pem

Il certificato appena creato, in quanto tale, va conservato anche nella directory destinata a contenere la copia di quelli rilasciati in futuro in qualità di autorità di certificazione.

Dal pezzo di configurazione mostrato in precedenza, la directory in questione è ./demoCA/certs/. Questi file devono avere un nome che inizia con il loro numero di serie; dal momento che il numero del certificato dell'autorità stessa è il numero zero, il file deve chiamarsi obbligatoriamente ./demoCA/certs/00.pem:

cp ./demoCA/cacert.pem ./demoCA/certs/00.pem

Inoltre, i file in quella directory devono essere abbinati, ognuno, a un collegamento simbolico che esprime il codice di controllo del file stesso, più l'estensione .0:

cd ./demoCA/certs[Invio]
ln -s 00.pem `openssl x509 -hash -noout -in 00.pem`.0

  • Java

  • Php

  • Mysql

  • Apache ant

  • Eclipse

  • Spring

  • Hibernate

  • Netbeans

  • Debian

  • Linux

  • Maven