Dimensione: 10060
Commento:
|
Dimensione: 9787
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 8: | Linea 8: |
La raccomandazione '''ITU-T X.509''', appartenente alla serie di raccomandazioni '''X.500''', definisce una infrastruttura a chiave pubblica ('''PKI''') che ha lo scopo di fornire servizi di autenticazione. E' uno standard di fondamentale importanza, in quanto la struttura di certificati, che da esso deriva, e gli algoritmi di autenticazione sono utilizzati in moltissimi contesti. '''X.509''' si basa sulla [http://it.wikipedia.org/wiki/Crittografia_asimmetrica crittografia a chiave pubblica] e sul concetto di [http://it.wikipedia.org/wiki/Firma_digitale firma digitale]. = Certificati = Il cuore del meccanismo '''X.509''' sono i certificati a chiave pubblica. Essi vengono rilasciati da una [http://it.wikipedia.org/wiki/Certificate_authority Certification Authority] ed hanno lo scopo di certificare l'appartenenza di una chiave pubblica ad un particolare ''Nome Distintivo'' (''Distinguished Name'') oppure ad un ''Nome Alternativo'' (''Alternative Name'') come potrebbe essere un indirizzo ''e-mail'' o un record ''DNS''. Una infrastruttura '''PKI''' è strutturata gerarchicamente da più '''CA''' al cui vertice si trova una '''CA root''' che certifica le '''sub-CA'''. Il certificato appartenente alla [http://it.wikipedia.org/wiki/Certificate_authority Certification Authority] viene definito ''root certificate''. Esso viene firmato dalla stessa authority (certificato ''self-signed''). Una violazione del ''root certificate'' comprometterebbe l'intero sistema. Esistono diverse [http://it.wikipedia.org/wiki/Certificate_authority Certification Authority] universalmente riconosciute, ma ogni azienda può crearne una propria da utilizzare privatamente al suo interno. == Struttura dei certificati == |
'''X.509''' è uno standard ITU-T per [http://it.wikipedia.org/wiki/Public_key_infrastructure infrastrutture a chiave pubblica]. Il cuore del meccanismo '''X.509''' sono i certificati. Essi vengono rilasciati da una [http://it.wikipedia.org/wiki/Certificate_authority autorità per la certificazione] ed hanno lo scopo di certificare l'appartenenza di una chiave pubblica ad un particolare «Nome Distintivo» oppure ad un «Nome Alternativo» come potrebbe essere un indirizzo e-mail o un record DNS. Una infrastruttura '''PKI''' è strutturata gerarchicamente da più '''CA''' al cui vertice si trova una '''CA root''' che certifica le '''sub-CA'''. Il certificato appartenente alla autorità viene definito '''certificato root'''. Una violazione di tale certificato, ''autofirmato'' dalla stessa autorità, comprometterebbe l'intero sistema. Esistono diverse autorità per la certificazione universalmente riconosciute, ma ogni azienda può crearne una propria da utilizzare privatamente al suo interno. = Struttura dei certificati = |
Linea 118: | Linea 114: |
= Creare una Certification Authority con Openssl = '''Openssl''' è un ''toolkit'' di sviluppo per [http://it.wikipedia.org/wiki/Secure_Sockets_Layer SSL/TLS].E' presente nei [:Repository:repository] ufficiali e può essere utilizzato per creare una propria ''Certification Authority''. Creare una directory (es: `rootCA`) con le seguenti sottodirectory: `certs crl newcerts private`. {{{ |
[[Anchor(installazionessl)]] = Installazione di OpenSSL = Per installare '''OpenSSL''' è sufficiente installare il pacchetto ''openssl'' presente nei [:Repository:repository] ufficiali. = Creare una autorità per certificati con OpenSSL = Prima di cominciare è necessario creare una cartella che conterrà tutte le informazioni relative all'autorità che si desidera creare. Aprire una finestra di terminale e digitare i seguenti comandi: {{{ cd |
Linea 128: | Linea 127: |
}}} Crare i file `index.txt` e `serial` (quest'ultimo da inizializzare con il valore "00") {{{ |
cd rootCA |
Linea 137: | Linea 132: |
Copiare il file di configurazione `/etc/ssl/openssl.cnf` nella directory corrente: |
Copiare il file di configurazione `/etc/ssl/openssl.cnf` nella cartella corrente con il seguente comando: |
Linea 143: | Linea 137: |
aprire il file appena copiato con un [:EditorDiTesto:editor di testo] e modificare le direttive come nel seguente esempio: |
Aprire il file appena copiato con un [:Ufficio/EditorDiTesto:editor di testo] e modificarlo come nel seguente esempio: |
Linea 170: | Linea 163: |
personalizzando opportunamente le direttive: `countryName_default stateOrProvinceName_default 0.organizationName_default organizationalUnitName_defaul` Generare la richiesta di certificato ''self-signed'' della '''CA''' (file: `rootCAcert.pem`) con la rispettiva chiave privata (file `private/rootCAkey.pem`). Tale richiesta sarà firmata dalla stessa '''CA''' e produrrà il certificato. Sarà necessario scegliere una ''passphrase'' per proteggere la chiave privata e un ''Common Name'' significativo (es. `Ubuntu Italian Community Root CA`) |
||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''Le stringhe «countryName_default», «stateOrProvinceName_default» «0.organizationName_default» e «organizationalUnitName_defaul» possono essere personalizzare con dei valori più appropriati''. || Per generare la richiesta di certificato con la chiave privata residente in `private/rootCAkey.pem` è sufficiente digitare il seguente comando: |
Linea 180: | Linea 170: |
E' possibile verificare rispettivamente il contenuto del certificato e della chiave privata appena generati con |
È possibile verificare il contenuto del certificato e della chiave privata appena generati con i seguenti comandi: |
Linea 187: | Linea 176: |
Linea 190: | Linea 178: |
= Creare certificati utenti = Creare una directory per contenere i certificati degli utenti |
= Creazione dei certificati degli utenti = Creare una cartella per contenere i certificati degli utenti con il seguente comando in una finestra di terminale: |
Linea 199: | Linea 186: |
Generare la richiesta di certificato per l'utente (da associare al ''Common Name''). |
Generare la richiesta di certificato per ogni singolo utente con il seguente comando: |
Linea 205: | Linea 191: |
Firmare la richiesta con la chiave privata dell'authority: | Infine, non resta che firmare la richiesta con la chiave privata dell'authority. Digitare il seguente comando: |
Linea 212: | Linea 197: |
||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''I comandi sopra citati vanno adattati alle proprie esigenze''. || |
|
Linea 214: | Linea 201: |
* [http://www.itu.int/rec/T-REC-X.509/en ITU-X Recommendation X.509 : Information technology - Open Systems Interconnection - The Directory: Public-key and attribute certificate frameworks] * [http://telematics.poliba.it/boggia/security/laboratorio.zip Laboratorio di Metodi e sistemi per la sicurezza delle reti - Politecnico di Bari] * [http://www.cacert.org/ CACert] * [https://www.thawte.com/ Thawte] * [https://www.verisign.com/ Verisign] |
* [http://www.itu.int/rec/T-REC-X.509/en Public-key and attribute certificate frameworks] * [http://telematics.poliba.it/boggia/security/laboratorio.zip Laboratorio di Metodi e sistemi per la sicurezza delle reti] * [http://www.cacert.org/ Sito ufficiale di CACert] * [https://www.thawte.com/ Sito ufficiale di Thawte] * [https://www.verisign.com/ Sito ufficiale di Verisign] * [http://it.wikipedia.org/wiki/Firma_digitale Voce enciclopedica di firma digitale] * [http://it.wikipedia.org/wiki/Crittografia_asimmetrica Voce enciclopedica di crittografia asimmetrica] |
IndiceBR TableOfContents(1) |
Introduzione
X.509 è uno standard ITU-T per [http://it.wikipedia.org/wiki/Public_key_infrastructure infrastrutture a chiave pubblica].
Il cuore del meccanismo X.509 sono i certificati. Essi vengono rilasciati da una [http://it.wikipedia.org/wiki/Certificate_authority autorità per la certificazione] ed hanno lo scopo di certificare l'appartenenza di una chiave pubblica ad un particolare «Nome Distintivo» oppure ad un «Nome Alternativo» come potrebbe essere un indirizzo e-mail o un record DNS. Una infrastruttura PKI è strutturata gerarchicamente da più CA al cui vertice si trova una CA root che certifica le sub-CA.
Il certificato appartenente alla autorità viene definito certificato root. Una violazione di tale certificato, autofirmato dalla stessa autorità, comprometterebbe l'intero sistema.
Esistono diverse autorità per la certificazione universalmente riconosciute, ma ogni azienda può crearne una propria da utilizzare privatamente al suo interno.
Struttura dei certificati
La struttura di un certificato digitale X.509 v3 è la seguente:
- Certificato
- Versione
- Numero seriale
- ID dell'algoritmo
- Ente emettitore
- Validità
- Non prima
- Non dopo
- Soggetto
- Informazioni sulla chiave pubblica del soggetto
- Algoritmo per l'utilizzo della chiave pubblica
- Chiave pubblica
- Codice identificativo univoco dell'emittente (facoltativo)
- Codice identificativo univoco del soggetto (facoltativo)
- Estensioni (facoltativo)
- ...
- Algoritmo di firma del certificato
- Firma del certificato
Il seguente è un esempio di certificato:
Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: md5WithRSAEncryption Issuer: C=DE, ST=NRW, L=Steinfurt, O=Spenneberg.com, CN=RootCA 2003/Email=ralf@spenneberg.net Validity Not Before: Apr 30 06:08:56 2003 GMT Not After : Apr 29 06:08:56 2004 GMT Subject: C=DE, ST=NRW, L=Steinfurt, O=Spenneberg.com, CN=VPN-Gateway/Email=ralf@spenneberg.net Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:c5:3b:9c:36:3a:19:6c:a9:f2:ba:e9:d2:ed:84: 33:36:48:07:b2:a3:2d:59:92:b0:86:4c:81:2c:ea: 5c:ed:f3:ba:eb:17:4e:b3:3a:cc:b7:5b:5d:ca:b3: 04:ed:fb:59:3c:c5:25:3e:f3:ff:b0:22:10:fb:de: 72:0a:ee:42:4b:9a:d3:27:d3:b6:fb:e9:88:10:c8: 47:b7:26:4f:71:40:e4:75:c4:c0:ee:6b:87:b8:6f: c9:5e:66:cf:bb:e7:ad:72:68:b8:6d:fd:8f:4c:1f: 3a:a2:0d:43:25:06:b9:92:e7:20:6c:86:15:a0:eb: 7f:f7:0b:9a:99:5d:14:88:9b Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: CB:5C:19:9B:E6:8A:8A:FE:0E:C4:FD:5E:DF:F7:BF:3D:A8: 18:7C:08 X509v3 Authority Key Identifier: keyid:01:BB:C6:33:BE:F5:9A:5E:B0:0C:5D:BD:41:E9:78: 6C:54:AD:66:8E DirName:/C=DE/ST=NRW/L=Steinfurt/O=Spenneberg.com/ CN=RootCA 2003/Email=ralf@spenneberg.net serial:00 Signature Algorithm: md5WithRSAEncryption 6f:89:2b:95:af:f1:8d:4d:b7:df:e8:6d:f7:92:fb:48:8c:c4: 1a:43:68:65:97:01:87:a6:84:b5:a1:38:bd:62:74:70:db:9e: 78:19:d9:0c:af:18:ad:13:77:56:7d:3f:19:61:da:ba:74:30: 8e:c5:50:0e:e3:eb:ff:95:cd:8d:d6:7e:c3:0e:ab:5b:34:94: bc:16:0f:ef:dc:de:40:bb:7d:ba:a2:b8:5d:f9:74:e7:28:58: 75:a0:66:d2:8d:85:ba:38:82:08:10:33:ef:be:29:c9:31:9d: 63:a9:f7:e0:99:ea:a7:ed:b6:b5:33:1b:1c:4a:a4:05:40:6e: 40:7b -----BEGIN CERTIFICATE----- MIIDjDCCAvWgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBgjELMAkGA1UEBhMCREUx DDAKBgNVBAgTA05SVzESMBAGA1UEBxMJU3RlaW5mdXJ0MRcwFQYDVQQKEw5TcGVu bmViZXJnLmNvbTEUMBIGA1UEAxMLUm9vdENBIDIwMDMxIjAgBgkqhkiG9w0BCQEW E3JhbGZAc3Blbm5lYmVyZy5uZXQwHhcNMDMwNDMwMDYwODU2WhcNMDQwNDI5MDYw ODU2WjCBgjELMAkGA1UEBhMCREUxDDAKBgNVBAgTA05SVzESMBAGA1UEBxMJU3Rl aW5mdXJ0MRcwFQYDVQQKEw5TcGVubmViZXJnLmNvbTEUMBIGA1UEAxMLVlBOLUdh dGV3YXkxIjAgBgkqhkiG9w0BCQEWE3JhbGZAc3Blbm5lYmVyZy5uZXQwgZ8wDQYJ KoZIhvcNAQEBBQADgY0AMIGJAoGBAMU7nDY6GWyp8rrp0u2EMzZIB7KjLVmSsIZM gSzqXO3zuusXTrM6zLdbXcqzBO37WTzFJT7z/7AiEPvecgruQkua0yfTtvvpiBDI R7cmT3FA5HXEwO5rh7hvyV5mz7vnrXJouG39j0wfOqINQyUGuZLnIGyGFaDrf/cL mpldFIibAgMBAAGjggEOMIIBCjAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1P cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUy1wZm+aKiv4O xP1e3/e/PagYfAgwga8GA1UdIwSBpzCBpIAUAbvGM771ml6wDF29Qel4bFStZo6h gYikgYUwgYIxCzAJBgNVBAYTAkRFMQwwCgYDVQQIEwNOUlcxEjAQBgNVBAcTCVN0 ZWluZnVydDEXMBUGA1UEChMOU3Blbm5lYmVyZy5jb20xFDASBgNVBAMTC1Jvb3RD QSAyMDAzMSIwIAYJKoZIhvcNAQkBFhNyYWxmQHNwZW5uZWJlcmcubmV0ggEAMA0G CSqGSIb3DQEBBAUAA4GBAG+JK5Wv8Y1Nt9/obfeS+0iMxBpDaGWXAYemhLWhOL1i dHDbnngZ2QyvGK0Td1Z9Pxlh2rp0MI7FUA7j6/+VzY3WfsMOq1s0lLwWD+/c3kC7 fbqiuF35dOcoWHWgZtKNhbo4gggQM+++KckxnWOp9+CZ6qfttrUzGxxKpAVAbkB7 -----END CERTIFICATE-----
Installazione di OpenSSL
Per installare OpenSSL è sufficiente installare il pacchetto openssl presente nei [:Repository:repository] ufficiali.
Creare una autorità per certificati con OpenSSL
Prima di cominciare è necessario creare una cartella che conterrà tutte le informazioni relative all'autorità che si desidera creare. Aprire una finestra di terminale e digitare i seguenti comandi:
cd mkdir rootCA cd rootCA mkdir certs crl newcerts private cd rootCA touch index.txt echo "00" > serial
Copiare il file di configurazione /etc/ssl/openssl.cnf nella cartella corrente con il seguente comando:
cp /etc/ssl/openssl.cnf .
Aprire il file appena copiato con un [:Ufficio/EditorDiTesto:editor di testo] e modificarlo come nel seguente esempio:
[ CA_default ] dir = . ... [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = IT countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Milano localityName = Locality Name (eg, city) localityName_default = Milano 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Ubuntu Italian Community organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Consiglio
Le stringhe «countryName_default», «stateOrProvinceName_default» «0.organizationName_default» e «organizationalUnitName_defaul» possono essere personalizzare con dei valori più appropriati. |
Per generare la richiesta di certificato con la chiave privata residente in private/rootCAkey.pem è sufficiente digitare il seguente comando:
openssl req -config openssl.cnf -new -x509 -keyout private/rootCAkey.pem -out rootCAcert.pem -days 365
È possibile verificare il contenuto del certificato e della chiave privata appena generati con i seguenti comandi:
openssl x509 -in rootCAcert.pem -text openssl rsa -in private/rootCAkey.pem -text
Una violazione del certificato o della chiave privata appena generati comprometterebbe la sicurezza dell'intera infrastruttura |
Creazione dei certificati degli utenti
Creare una cartella per contenere i certificati degli utenti con il seguente comando in una finestra di terminale:
mkdir utenti cd utenti
Generare la richiesta di certificato per ogni singolo utente con il seguente comando:
openssl req -config ../openssl.cnf -new -keyout utentekey.pem -out utentereq.pem
Infine, non resta che firmare la richiesta con la chiave privata dell'authority. Digitare il seguente comando:
cd .. openssl ca -config openssl.cnf -policy policy_anything -cert rootCAcert.pem -keyfile private/rootCAkey.pem -out utenti/utentecert.pem -infiles utenti/utentereq.pem
I comandi sopra citati vanno adattati alle proprie esigenze. |
Ulteriori risorse
[http://www.itu.int/rec/T-REC-X.509/en Public-key and attribute certificate frameworks]
[http://telematics.poliba.it/boggia/security/laboratorio.zip Laboratorio di Metodi e sistemi per la sicurezza delle reti]
[http://www.cacert.org/ Sito ufficiale di CACert]
[https://www.thawte.com/ Sito ufficiale di Thawte]
[https://www.verisign.com/ Sito ufficiale di Verisign]
[http://it.wikipedia.org/wiki/Firma_digitale Voce enciclopedica di firma digitale]
[http://it.wikipedia.org/wiki/Crittografia_asimmetrica Voce enciclopedica di crittografia asimmetrica]