Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AlbericoAnobile/Prove0"
Differenze tra le versioni 33 e 34
Versione 33 del 26/09/2007 11.38.29
Dimensione: 10059
Commento:
Versione 34 del 26/09/2007 16.21.42
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]

BR

Introduzione

Testo

Certificati

Testo

Ulteriori risorse


CategoryHomepage