Creare ed usare certificati SSL

Questo documento descrive come divenire una certification authority (CA) usando il pacchetto OpenSSL. Nelle vesti di CA è possibile firmare ed installare certificati da usare sui propri server per applicazioni come Apache e Stunnel.

Scopo

Questo documento è limitato ad un preciso scopo: prevenire che browser, mail client ed altri programmi si lamentino dei certificati installati sui propri server.

Non verrà presa in considerazione la modalità di trattare CA commerciali mentre ci si focalizzerà sul divenire una CA e firmare i propri certificati.

Le procedure che seguono sono state eseguite utilizzando OpenSSL 0.9.8e su una macchina Gentoo Linux.

Introduzione

Perché divenire una CA? Perché si possa trarre vantaggio dalla sicurezza offerta da SSL senza spendere soldi non necessari per avere un proprio certificato firmato da una CA commerciale.

Uno svantaggio è che i browser continueranno a protestare che il sito non è sicuro finché il vostro certificato principale non verrà importato. Comunque una volta importato, non ci sarà differenza dalle CA commerciali.

Ipotetici clienti e visitatori importeranno il nostro certificato principale solo se si fidano di noi. E' qui che entrano in gioco le CA commerciali, il cui scopo è di ricercare le persone e organizzazioni per firmare i loro certificati. Importando i loro certificati noi ci fidiamo del fatto che loro garantiscono che qualcuno è chi dice di essere. Si possono aggiungere altri certificati CA importando i loro certificati principali.

Se si possiede un esercizio commerciale accessibile via rete e si necessita di una connessione sicura, la sola scelta realistica è di ottenere un certificato firmato da una CA commerciale.

Prerequisiti

L'unico prerequisito richiesto è di avere installato il pacchetto OpenSSL sulla propria macchina. Se non fosse già installato basta dare il comando:

 # emerge openssl

Configurazione iniziale

Nota: a scopo didattico non si userà la directory creata in fase di installazione /etc/ssl e verrà utilizzato il comando openssl per la generazione dei certificati. Comunque in /etc/ssl/misc è presente uno script chiamato CA.pl che facilita la creazione dei certificati basandosi esclusivamente sul file di configurazione /etc/ssl/openssl.cnf. Per completezza, accanto ai comandi per la generazione dei certificati verrà posto anche il rispettivo comando CA.pl le qui richieste sono del tutto uguali al comando openssl. Sottolineo ancora che CA.pl si basa esclusivamente sul file di configurazione presente in /etc/ssl.

Si creino le seguenti directory nella propria home directory:

# mkdir CA
# cd CA
# mkdir newcerts private

La directory CA conterrà:

  • Il nostro certificato CA
  • Il database dei certificati che abbiamo firmato
  • Le chiavi, richieste e certificati che verranno generati

La directory CA/newcerts conterrà:

  • Una copia di ogni certificato firmato

La directory CA/private conterrà:

  • La chiave privata della nostra CA

Questa chiave è estremamente importante:

  • Non perdere questa chiave. Senza di essa non sarà possibile firmare o rinnovare nessun certificato.
  • Non svelare questa chiave a nessuno. Se venisse compromessa, altri potrebbero impersonare voi.

Il prossimo step è creare un database per i certificati che verranno firmati:

# echo '01' >serial
# touch index.txt

Piuttosto che usare il file di configurazione fornito dal pacchetto OpenSSL, se ne creerà uno nuovo con una configurazione minimale nella directory appena creata. Usare il proprio editor preferito (vi, pico, …) e creare un openssl.cnf di base:

#
# OpenSSL configuration file.
#
# Establish working directory.
dir			= .

Creare il certificato principale (Root Certificate)

Con OpenSSL, la maggior parte di cosa finisce in un certificato dipende dal contenuto del file di configurazione piuttosto che dalla linea di comando. Questo è molto comodo data la quantità di cose da specificare.

Il file di configurazione è diviso in sezioni che sono lette e processate selettivamente in accordo con gli argomenti della linea di comando di openssl. Le sezioni possono includere una o più sottosezioni che vi fanno riferimento, il che rende il file di configurazione molto modulare. Ogni sezione inizia con un nome tra parentesi quadre, p.e. [req].

Occorre ora aggiungere una sezione che controlli come verranno creati i certificati ed una che definisca il tipo di certificato da creare.

La prima cosa da specificare è il Distinguished Name che identifica il proprietario del certificato quando questo verrà esaminato. Non è direttamente referenziato nel file di configurazione, ma viene incluso nella sezione presa in considerazione durante la creazione di una richiesta di certificato. Il comando è openssl req <args>, per questo la sezione viene chiamata [ req ].

Aggiungere le seguenti righe a openssl.cnf:

[ req ]
default_bits		= 1024			# Size of keys
default_keyfile       = key.pem		# name of generated keys
default_md		= md5			# message digest algorithm
string_mask		= nombstr		# permitted characters
distinguished_name	= req_distinguished_name
 
[ req_distinguished_name ]
# Variable name		  Prompt string
#----------------------	  ----------------------------------
0.organizationName	= Organization Name
organizationalUnitName	= Organizational Unit Name (department, division)
emailAddress		= Email Address
emailAddress_max	= 40
localityName		= Locality Name (city, district)
stateOrProvinceName	= State or Province Name (full name)
countryName		= Country Name (2 letter code)
countryName_min	= 2
countryName_max	= 2
commonName		= Common Name (hostname, IP, or your name)
commonName_max	= 64
# Default values for the above, for consistency and less typing.
# Variable name			  Value
#------------------------------	  ------------------------------
0.organizationName_default	= Gentoo.IT
localityName_default		= Firenze
stateOrProvinceName_default	= Italia
countryName_default		= IT
 
[ v3_ca ]
basicConstraints	= CA:TRUE
subjectKeyIdentifier	= hash
authorityKeyIdentifier	= keyid:always,issuer:always

Per proteggere noi stessi da un uso non autorizzato, il certificato CA viene protetto da una passphrase (una password che può essere anche un'intera frase, spazi compresi). Ogni volta che verrà usato il certificato CA per firmare le richieste, verrà chiesto l'inserimento di questa passphrase. E' quindi il momento buono per pensare ad una frase di difficile interpretazione per poi riporla in un luogo sicuro.

E' tutto pronto per creare il certificato principale auto firmato. Per questo verranno sovrascritti alcuni parametri predefiniti del file di configurazione attraverso la linea di comando.

Quello che verrà sovrascritto col comando openssl req è:

  • Creare un nuovo certificato auto firmato: -new -x509
  • Creare un certificato CA: -extensions v3_ca
  • Renderlo valido per più di 30 giorni: -days 3650
  • Usare il nostro file di configurazione: -config ./openssl.cnf

(Una nota sui termini della validità di un certificato principale: quando un certificato principale scade, tutti i certificati firmati con esso non sono più validi. Per correggere tale situazione, deve essere creato e distribuito un nuovo certificato principale. Anche tutti i certificati firmati precedentemente devono essere revocati e firmati col nuovo CA. Dato che questo può essere un grosso lavoro, si può rendere il certificato principale valido il più a lungo possibile secondo le proprie necessità. Nel nostro esempio lo si renderà valido dieci anni.)

Eseguire il seguente comando (in questo caso verrà richiesto l'inserimento della PEM pass phrase due volte per la sua creazione):

# openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf
(oppure /etc/ssl/misc/CA.pl -newca)
Using configuration from ./openssl.cnf
Generating a 1024 bit RSA private key
.......++++++
..........................++++++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:demo
Verifying password - Enter PEM pass phrase:demo
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Organization Name (company) [Gentoo.IT]:<enter>
Organizational Unit Name (department, division) []:<enter>
Email Address []:ca@gentoo.it
Locality Name (city, district) [Firenze]:<enter>
State or Province Name (full name) [Italia]:<enter>
Country Name (2 letter code) [IT]:<enter>
Common Name (hostname, IP, or your name) []:Enrico Morelli

Questo processo produce due file:

  1. Una chiave privata in private/cakey.pem
  2. Un certificato principale in cacert.pem

cacert.pem è il file da distribuire ai clienti.

La chiave privata (cakey.pem) si presenta come segue:

  
  
  -----BEGIN RSA PRIVATE KEY-----
  Proc-Type: 4,ENCRYPTED
  DEK-Info: DES-EDE3-CBC,0947F49BB28FE5F4
  
  jlQvt9WdR9Vpg3WQT5+C3HU17bUOwvhp/r0+viMcBUCRW85UqI2BJJKTi1IwQQ4c
  tyTrhYJYOP+A6JXt5BzDzZy/B7tjEMDBosPiwH2m4MaP+6wTbi1qR1pFDL3fXYDr
  ZsuN08dkbw9ML6LOX5Rl6bIBL3i5hnGiqm338Fl52gNstThv0C/OZhXT3B4qsJn8
  qZb3mC6U2nRaP/NpZPcEx4lv2vH7OzHTu1TZ7t0asSpgpuH58dfHPw775kZDep2F
  LXA3Oeavg0TLFHkaFBUx2xaeEG6Txpt9I74aAsw1T6UbTSjqgtsK0PHdjPNfPGlY
  5U3Do1pnU9hfoem/4RAOe0cCovP/xf6YPBraSFPs4XFfnWwgEtL09ReFqO9T0aSp
  5ajLyBOYOBKQ3PCSu1HQDw/OzphInhKxdYg81WBBEfELzSdMFQZgmfGrt5DyyWmq
  TADwWtGVvO3pEhO1STmCaNqZQSpSwEGPGo5RFkyFvyvyozWX2SZg4g1o1X40qSg9
  0FMHTEB5HQebEkKBoRQMCJN/uyKXTLjNB7ibtVbZmfjsi9oNd3NJNVQQH+o9I/rP
  wtFsjs+t7SKrsFB2cxZQdDlFzD6EBA+5ytebGEI1lJHcOUEa6P+LTphlwh/o1QuN
  IKX2YKHA4ePrBzdgZ+xZuSLn/Qtjg/eZv6i73VXoHk8EdxfOk5xkJ+DnsNmyx0vq
  W53+O05j5xsxzDJfWr1lqBlFF/OkIYCPcyK1iLs4GOwe/V0udDNwr2Uw90tefr3q
  X1OZ9Dix+U0u6xXTZTETJ5dF3hV6GF7hP3Tmj9/UQdBwBzr+D8YWzQ==
  -----END RSA PRIVATE KEY-----

Il certificato (cacert.pem) si presente come segue:

 
-----BEGIN CERTIFICATE-----
MIIDrTCCAxagAwIBAgIBADANBgkqhkiG9w0BAQQFADCBnDEbMBkGA1UEChMSVGhl
IFNhbXBsZSBDb21wYW55MRQwEgYDVQQLEwtDQSBEaXZpc2lvbjEcMBoGCSqGSIb3
DQEJARYNY2FAc2FtcGxlLmNvbTETMBEGA1UEBxMKTWV0cm9wb2xpczERMA8GA1UE
CBMITmV3IFlvcmsxCzAJBgNVBAYTAlVTMRQwEgYDVQQDEwtUU0MgUm9vdCBDQTAe
Fw0wMTEyMDgwNDI3MDVaFw0wMjEyMDgwNDI3MDVaMIGcMRswGQYDVQQKExJUaGUg
U2FtcGxlIENvbXBhbnkxFDASBgNVBAsTC0NBIERpdmlzaW9uMRwwGgYJKoZIhvcN
AQkBFg1jYUBzYW1wbGUuY29tMRMwEQYDVQQHEwpNZXRyb3BvbGlzMREwDwYDVQQI
EwhOZXcgWW9yazELMAkGA1UEBhMCVVMxFDASBgNVBAMTC1RTQyBSb290IENBMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaiAwfKB6ZBtnTRTIo6ddomt0S9ec0
NcuvtJogt0s9dXpHowh98FCDjnLtCi8du6LDTZluhlOtTFARPlV/LVnpsbyMCXMs
G2qpdjJop+XIBdvoCz2HpGXjUmym8WLqt+coWwJqUSwiEba74JG93v7TU+Xcvc00
5MWnxmKZzD/R3QIDAQABo4H8MIH5MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFG/v
yytrBtEquMX2dreysix/MlPMMIHJBgNVHSMEgcEwgb6AFG/vyytrBtEquMX2drey
six/MlPMoYGipIGfMIGcMRswGQYDVQQKExJUaGUgU2FtcGxlIENvbXBhbnkxFDAS
BgNVBAsTC0NBIERpdmlzaW9uMRwwGgYJKoZIhvcNAQkBFg1jYUBzYW1wbGUuY29t
MRMwEQYDVQQHEwpNZXRyb3BvbGlzMREwDwYDVQQIEwhOZXcgWW9yazELMAkGA1UE
BhMCVVMxFDASBgNVBAMTC1RTQyBSb290IENBggEAMA0GCSqGSIb3DQEBBAUAA4GB
ABclymJfsPOUazNQO8aIaxwVbXWS+8AFEkMMRx6O68ICAMubQBvs8Buz3ALXhqYe
FS5G13pW2ZnAlSdTkSTKkE5wGZ1RYSfyiEKXb+uOKhDN9LnajDzaMPkNDU2NDXDz
SqHk9ZiE1boQaMzjNLu+KabTLpmL9uXvFA/i+gdenFHv
-----END CERTIFICATE-----

Si possono richiedere diverse informazioni legate al contenuto di questo certificato usando openssl, da chi proviene, quanto è valido, ecc:

# openssl x509 -in cacert.pem -noout -text
# openssl x509 -in cacert.pem -noout -dates
# openssl x509 -in cacert.pem -noout -purpose

Creare un certificato per richiesta di firma (Certificate Signing Request - CSR)

Una volta creato il certificato principale, si può create qualsiasi numero di certificato per installarli nelle applicazione SSL come https, spop o simap. La procedura coinvolge la creazione di una chiave privata e di un certificato per la richiesta e quindi la firma della richiesta per generare il certificato vero e proprio.

Il file di configurazione necessita di alcune definizioni in più per create certificati non CA. Aggiungere quanto segue alla fine del file:

[ v3_req ]
basicConstraints	= CA:FALSE
subjectKeyIdentifier	= hash

Per evitare di dover ripetutamente inserire questo da linea di comando, aggiungere le seguenti righe alla sezione [ req ] dopo la riga distinguished_name:

distinguished_name	= req_distinguished_name
req_extensions	= v3_req

Ora siamo pronti a creare il nostro primo certificato per la richiesta della firma. In questo esempio si creerà un certificato per un server POP sicuro con indirizzo mail.gentoo.it. La procedura è molto simile alla creazione di un certificato CA, ma tre richieste necessitano di differenti risposte.

  • Organizational Unit: un rimando all'uso del certificato
  • Email Address: il postmaster
  • Common Name: l'hostname del server

il Common Name deve essere il nome del server completo di dominio che i clienti useranno per contattare l'host. Se questo non corrisponde, ogni volta che i clienti si connetteranno verrà loro richiesto se vogliono usare questo server. In effetti il software mostrerà il seguente messaggio di avvertimento del tipo “Attenzione! Si è richiesto la visualizzazione di mail.gentoo.it; il certificato di risposta della macchina è per smtp.gentoo.it. Sei sicuro di voler continuare?”

# openssl req -new -nodes -out req.pem -config ./openssl.cnf
(oopure /etc/ssl/misc/CA.pl -newreq)
...
Organizational Unit Name (department, division) []:Mail Server
Email Address []:postmaster@gentoo.it
Common Name (hostname, IP, or your name) []:mail.gentoo.it
...

Questo processo produce due file:

  1. Una chiave privata in key.pem
  2. Un certificato con richiesta di firma in req.pem

Questi file dovrebbero venire mantenuti in quanto quando il certificato scade, la richiesta può venire nuovamente utilizzata per creare un nuovo certificato con una nuova data di scadenza. La chiave privata è necessaria alla codifica SSL. Quando si salvano questi file può aiutare il chiamarli in un modo più significativo, per esempio mailserver.key.poem e mailserver.req.pem.

Il certificato con richiesta di firma si presenta come segue:

 
 ----BEGIN CERTIFICATE REQUEST-----
 MIICJDCCAY0CAQAwgagxGzAZBgNVBAoTElRoZSBTYW1wbGUgQ29tcGFueTEUMBIG
 A1UECxMLTWFpbCBTZXJ2ZXIxJDAiBgkqhkiG9w0BCQEWFXBvc3RtYXN0ZXJAc2Ft
 cGxlLmNvbTETMBEGA1UEBxMKTWV0cm9wb2xpczERMA8GA1UECBMITmV3IFlvcmsx
 CzAJBgNVBAYTAlVTMRgwFgYDVQQDEw9tYWlsLnNhbXBsZS5jb20wgZ8wDQYJKoZI
 hvcNAQEBBQADgY0AMIGJAoGBAPJhc++WxcBaoDbJpzFbDg42NcOz/ELVFMU4FlPa
 yUzUO+xXkdFRMPKo54d4Pf1w575Jhlu9lE+kJ8QN2st6JFySbc9QjPwVwl9D2+I3
 SSf2kVTu+2Ur5izCPbVAfU0rPZxxK8ELoOkA1uwwjFz6EFuVvnHwlguonWKDtmYW
 u7KTAgMBAAGgOzA5BgkqhkiG9w0BCQ4xLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYE
 FLWaQsUVIQzWr58HtDinH1JfeCheMA0GCSqGSIb3DQEBBAUAA4GBAAbe0jrGEQ3i
 tyVfy5Lg4/f69rKvDGs+uhZJ9ZRx7Dl92Qq2osE7XrLB1bANmcoEv/ORLZOjWZEY
 NjMvuz60O7R8GKBrvb/YhAwWhIIt2LJqPkpAEWS0kY0AkoQcfZ7h6oC35+eJ7okg
 Uu3WuE57RgcNt7/ftr0sG1jUyRwMLvhv
 -----END CERTIFICATE REQUEST-----

Per vedere se il contenuto della richiesta è corretto eseguire:

 # openssl req -in req.pem -text -verify -noout

Firmare il certificato

Si deve ora aggiungere al file di configurazone una sezione che si occupi della CA. Questa sezione identificherà i percorsi dei vari pezzi come il database, il certificato CA e la chiave privata. Fornisce inoltre alcuni valori predefiniti di base. Inserire ciò che segue in openssl.cnf dopo la sezione [ req ]:

 [ ca ]
 default_ca		= CA_default 
 
 [ CA_default ]
 serial		= $dir/serial
 database		= $dir/index.txt
 new_certs_dir	= $dir/newcerts
 certificate		= $dir/cacert.pem
 private_key		= $dir/private/cakey.pem
 default_days		= 365
 default_md		= md5
 preserve		= no
 email_in_dn		= no
 nameopt		= default_ca
 certopt		= default_ca
 policy		= policy_match
 
[ policy_match ]
countryName		= match
stateOrProvinceName	= match
organizationName	= match
organizationalUnitName	= optional
commonName		= supplied
emailAddress		= optional

Per firmare la richiesta eseguire il seguente comando e rispondere alle richieste. Notare che alla richiesta della PEM passphrase occorre inserire quella precedentemente creata:

# openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem
(oppure /etc/ssl/misc/CA.pl -signreq)
Using configuration from ./openssl.cnf
Enter PEM pass phrase:demo
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
organizationName      :PRINTABLE:'Gentoo.IT'
organizationalUnitName:PRINTABLE:'Mail Server'
emailAddress          :IA5STRING:'postmaster@gentoo.it'
localityName          :PRINTABLE:'Firenze'
stateOrProvinceName   :PRINTABLE:'Italia'
countryName           :PRINTABLE:'IT'
commonName            :PRINTABLE:'mail.gentoo.it'
Certificate is to be certified until Dec  8 04:37:38 2002 GMT (365 days)
Sign the certificate? [y/n]:y
 
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Questo processo aggiorna il il database della CA e produce due file:

  1. Un certificato in cert.pem
  2. Una copia del certificato in newcerts/<serial>.pem

Si può esaminare il certificato:

# openssl x509 -in cert.pem -noout -text -purpose | more

Il certificato ha sia la versione codificata che quella leggibile nello stesso file. Si può elminare la porzione leggibile come segue:

# mv cert.pem tmp.pem
# openssl x509 -in tmp.pem -out cert.pem

Installare il certificato e la chiave

Questo dipende dall'applicazione, alcune vogliono la chiave ed il certificato nello stesso file, altre in file separati. Combinarle assieme è facile:

# cat key.pem cert.pem >key-cert.pem

Dopo questo passo, si hanno tre componenti installabili tra cui scegliere:

  1. Una chiave privata in key.pem
  2. Un certificato in cert.pem
  3. Una combinazione di chiave privata e certificato in key-cert.pem

Copiare il file opportuno nella locazione specificata dalle istruzioni dell'applicazione.

Apache

Apache possiede direttive di configurazione separate per la chiave ed il certificato, per cui si devono mantenere ognuna nel proprio file. Questi file dovrebbero essere tenuti fuori dalla DocumentRoot e relative sottodirectory, per questo un struttura ragionevole potrebbe essere:

File	                        Commento
/home/httpd/html	        Apache DocumentRoot
/home/httpd/ssl               File SSL correlati
/home/httpd/ssl/cert.pem	Certificato del sito
/home/httpd/ssl/key.pem	Chiave privata del sito

All'interno della direttiva <VirtualHost> per il sito (che dovrebbe naturalmente rispondere sulla porta 443), includere le direttive che puntatno a questi file:

<VirtualHost 192.168.1.1:443>
   ServerName mail.gentoo.it
   DocumentRoot /home/httpd/html
   ... altre direttive per questo sito ...
   SSLEngine on
   SSLLog /var/log/ssl_engine_log
   SSLCertificateFile /home/httpd/ssl/cert.pem
   SSLCertificateKeyFile /home/httpd/ssl/key.pem
</VirtualHost>

Stunnel

stunnel viene usato come un wrapper SSL per servizi normalmente non sicuri come IMAP e POP. Accetta come argomenti (insieme ad altre cose) il servizio da eseguire e la locazione del certificato e della chiave privata.

La chiave ed il certificato sono nello stesso file. Questi possono essereposti ovunque, ma la locazione migliore potrebbe essere /etc/ssl/certs. Specificare questo nella linea di comando di stunnel:

 stunnel -p /etc/ssl/certs/key-cert.pem <altri argomenti...>

Distribuire il certificato CA

Finalmente è giunto il momento di fermare le lamentele dei clienti per i certificati non sicuri. Inviare cacert.pem a chiunque voglia usare i vostri server sicuri cosicché possano installarli nei propri browser, mail client, ecc, come un certificato principale.

Rinnovo dei certificati

La catena dei certificati può rompersi a causa della scadenza del certificato in due modi:

  1. I certificati firmati con il certificato principale sono scaduti
  2. Il certificato principale stesso è scaduto

Il secondo caso presuppone molto lavoro da fare. Deve essere creato e distribuito un nuovo certificato CA e i certificati firmati col vecchio CA devono venire ricreati o rinnovati.

Nel primo caso ci sono due opzioni. Si può sia rigenerare un nuovo certificato con richiesta di firma e firmarlo come descritto in precedenza o (se lo si è tenuto) rifirmare la richiesta originale. In entrambi i casi i vecchi certificati devono essere revocati ed i nuovi devono essere installati al posto dei vecchi.

Non si possono creare due certificati con lo stesso Common Name ecco il perché il certificato scaduto deve anche essere revocato. IL certificato è nella directory newcerts e si può determinare il suo filename sfogliando index.txt e cercandovi il Common Name (CN). il filename è l'indice più l'estensione ”.pem”, per esempio “02.pem”. Per revocare il certificato:

# openssl ca -revoke newcerts/02.pem -config ./openssl.cnf
Using configuration from ./openssl.cnf
Enter PEM pass phrase: demo
Revoking Certificate 02.
Data Base Updated

Ora che il certificato è stato revocato si può firmare la richiesta originale o crearne e firmarne uno nuovo.

Ottenere un certificato firmato da una CA commerciale

Il processo è basilarmente lo stesso che si è visto sino a qui eccetto per il fatto che la CA fa molto del lavoro. Noi dobbiamo solo generare il certificato con richiesta di firma come mostrato in precedenza e sottometterlo per la firma. Si riceverà in seguito il certificato firmato per l'installazione.

Questi certificati verranno automaticamente considerati fidati dai browser dato che quest'ultimo ha il certificato della CA commerciale già nella propria lista. Non c'è niente da distribuire.

La configurazione descritta qui può non essere adeguata per questo scopo e ci possono essere più cose da aggiungere nella richiesta. Differenti autorità certificanti è possono richiedere caratteristiche differenti nel certificato da firmare. Ma tutto ciò esula da questa guida.

Pubblicare il nostro certificato CA

Si può mettere il certificato sul proprio sito web per il download. In questo caso si dovrebbe mettere anche la Certificate Revocation List (CRL) ed il mezzo per mostrare un certificato fornendo il suo numero seriale. Anche questo esula da questa guida.

Apache serve l certificato in una forma comprensibile ai browser se si specifica il suo tipo MIME. Per esempio si può usare come estensione del file “.crt” per certificati scaricabili e mettere ciò che segue nella sezione generale della configurazione di Apache:

AddType application/x-x509-ca-cert .crt

Si può quindi creare il link per scaricare il proprio certificato come **<a href=“www.gentoo.it/rootcert.crt”>Il nostro certificato</a>. Quando un visitatore selezionerà il link, il browser chiederà se si vuole installare il certificato.

Una CRL si può generare come segue:

# openssl ca -gencrl -crldays 31 -config ./openssl.cnf -out rootca.crl
 
creare_ed_usare_certificati_ssl.txt · Ultima modifica: 2008/09/17 16:23 da morelli
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki