Dimensione: 10059
Commento:
|
Dimensione: 427
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]. |
Testo |
Linea 14: | Linea 12: |
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 == 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----- }}} = 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`. {{{ mkdir rootCA cd rootCA mkdir certs crl newcerts private }}} Crare i file `index.txt` e `serial` (quest'ultimo da inizializzare con il valore "00") {{{ touch index.txt echo "00" > serial }}} Copiare il file di configurazione `/etc/ssl/openssl.cnf` nella directory corrente: {{{ cp /etc/ssl/openssl.cnf . }}} aprire il file appena copiato con un [:EditorDiTesto:editor di testo] e modificare le direttive 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 }}} 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`) {{{ openssl req -config openssl.cnf -new -x509 -keyout private/rootCAkey.pem -out rootCAcert.pem -days 365 }}} E' possibile verificare rispettivamente il contenuto del certificato e della chiave privata appena generati con {{{ openssl x509 -in rootCAcert.pem -text openssl rsa -in private/rootCAkey.pem -text }}} ||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/warning.png,,center)]] ||<style="padding:0.5em; border:none;">'''Una violazione del certificato o della chiave privata appena generati comprometterebbe la sicurezza dell'intera infrastruttura''' || = Creare certificati utenti = Creare una directory per contenere i certificati degli utenti {{{ mkdir utenti cd utenti }}} Generare la richiesta di certificato per l'utente (da associare al ''Common Name''). {{{ openssl req -config ../openssl.cnf -new -keyout utentekey.pem -out utentereq.pem }}} Firmare la richiesta con la chiave privata dell'authority: {{{ cd .. openssl ca -config openssl.cnf -policy policy_anything -cert rootCAcert.pem -keyfile private/rootCAkey.pem -out utenti/utentecert.pem -infiles utenti/utentereq.pem }}} |
Testo |
Linea 214: | Linea 16: |
* [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] |
IndiceBR TableOfContents(1) |
Introduzione
Testo
Certificati
Testo
Ulteriori risorse
[http://www.cacert.org/ CACert]
[https://www.thawte.com/ Thawte]
[https://www.verisign.com/ Verisign]