La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Apache + SSL Rendiamo sicure le nostre connessioni ● Principi (molto) base di crittografia ● Certificati digitali ● Formato dei certificati X509 ● Certificate.

Presentazioni simili


Presentazione sul tema: "Apache + SSL Rendiamo sicure le nostre connessioni ● Principi (molto) base di crittografia ● Certificati digitali ● Formato dei certificati X509 ● Certificate."— Transcript della presentazione:

1 Apache + SSL Rendiamo sicure le nostre connessioni ● Principi (molto) base di crittografia ● Certificati digitali ● Formato dei certificati X509 ● Certificate Revocation List (CRL) ● Autenticazione lato Server ● Autenticazione lato Client

2 Principi di crittografia La crittografia è una scienza che si preoccupa di sviluppare metodi (algoritmi) finalizzati a nascondere il contenuto di un messaggio tramite l'uso di una “chiave” crittografica

3 Principi di crittografia Nella crittografia a chiave segreta (o condivisa) i due componenti principali sono le funzioni di cifratura che trasformano i testi in chiaro in testi cifrati e la chiave condivisa, conosciuta esclusivamente dal mittente e dal destinatario

4 Principi di crittografia

5 Il problema della distribuzione delle chiavi è stato risolto tramite l'introduzione di un nuovo tipo di crittografia, la crittografia a chiave pubblica. Ogni attore ha a disposizione due chiavi: ● Una chiave pubblica (K + ) da distribuire a tutti coloro con cui vuole comunicare ● Una chiave privata (K - ) da tenere segreta e non comunicare a nessuno Ovviamente le due chiave devono essere legate tra loro da vincoli matematici

6 Principi di crittografia Un messaggio può essere cifrato da chiunque conosca la chiave pubblica del destinatario, ma può essere decifrato solo da chi conosce la chiave privata (il destinatario stesso)

7 Principi di crittografia

8 Problema 1 La crittografia a chiave pubblica è molto dispendiosa da un punto di vista computazionale. La cifratura di messaggi (o dati) di grandi dimensioni può richiedere molto tempo

9 Principi di crittografia Soluzione Sistema della busta digitale: ➔ Viene generata una chiave segreta utilizzabile una sola volta (chiave di sessione) ➔ Si cifra l'intero messaggio con la chiave di sessione ➔ Si cifra la chiave di sessione con la chiave pubblica del destinatario ➔ Si invia la “busta” al destinatario

10 Principi di crittografia Problema 2 Come faccio ad essere sicuro che la chiave pubblica che sto usando appartiene al legittimo destinatario e che non è stata manomessa?

11 Principi di crittografia Soluzioni 1 – Sistema della rete di fiducia (GPG) 2 – Sistema “gerarchico” basato su Certification Authority (OpenSSL)

12 Certificati Digitali La soluzione al problema della distribuzione delle chiavi adottata dallo standard OpenSSL è quella del certificato digitale

13 Certificati Digitali La chiave pubblica viene registrata da un'autorità che gode della fiducia di entrambe le parti, la Certification Authority La CA “certifica” che la chiave pubblica appartiene al proprietario

14 Certificati Digitali Le chiavi pubbliche vengono rilasciate dalla CA sotto forma di certificati digitali. Il certificato viene quindi presentato all'interlocutore il quale, fidandosi della CA, identifica il proprietario della chiave pubblica

15 Formato dei certificati X509 ● Version: Le varie versioni del certificato (v1, v2 o v3) ● Serial Number: Un valore intero univoco assegnato al certificato ● Signature Algorithm identifier: Algoritmo usato per firmare il certificato ● Issuer Name: Il nome della CA ● Period of validity: data di inizio e fine validità ● Subject Name: L'utente a cui fa riferimento il certificato

16 Formato dei certificati X509 ● Subject's public key info: Algoritmo usato e chiave pubblica del soggetto ● Issuer Unique Identifier: Identificatore unico della CA ● Subject Unique Identifier: Identificativo unico del soggetto ● Extensions: Estensioni ● Signature: Firma della CA

17 Certificate Revocation List Cosa succede se : ● Perdo la mia chiave privata ● Cambio i dati anagrafici ● La chiave privata viene compromessa

18 Certificate Revocation List È necessario revocare il certificato (Renderlo inutilizzabile)

19 Autenticazione lato server Per prima cosa è necessario creare un certificato Due strade: ● Affidarci ad una CA esistente (a pagamento) ● Creare un certificato self-signed e “impersonificare” una CA

20 Autenticazione lato server Scegliamo (ovviamente) la seconda Per prima cosa generiamo le chiavi pubblica e privata della “nostra” CA openssl genrsa -out CA_key.key 2048

21 Autenticazione lato server E ora il certificato Self-Signed della CA openssl req -outform PEM -out CA_crt.pem -text - new -key CA_key.key -x509 -days 3650

22 Autenticazione lato server Occorre ora creare il certificato del server vero e proprio Per prima cosa generiamo le chiavi e la richiesta di certificazione sempre tramite openSSL openssl genrsa -out server_key.key 1024 openssl req -new -out server_cert.csr -key server_key.key

23 Autenticazione lato server Vestiamo nuovamente i panni della CA e firmiamo la richiesta per creare il certificato vero e proprio openssl x509 -days 365 -CA CA/CA_cert.pem -CAkey CA/CA_key.key -CAcreateserial -CAserial CA/ca.srl -req -in server_cert.csr -outform PEM -text -out server_cert.pem

24 Autenticazione lato server Per fare in modo che il browser riconosca la nostra CA è necessario inserire il certificato self-signed nella lista delle autorità di certificazione (dipende da browser a browser)

25 Autenticazione lato server È ora necessario copiare il certificato e la chiave del server in una directory “sicura” ovvero non accessibile al webserver ad esempio /etc/apache2/ssl/

26 Autenticazione lato server Passiamo ora alla configurazione di apache Per prima cosa è necessario abilitare le estensioni ssl inserendo dei link simbolici nella cartella /etc/apache2/mods-enabled cd /etc/apache2/mods-enabled/ ln -s /etc/apache2/mods-available/ssl.conf ssl.conf ln -s /etc/apache2/mods-available/ssl.load ssl.load

27 Autenticazione lato server E ora aggiungiamo un VirtualHost in /etc/apache2/apache2.conf e diciamo al server di ascoltare anche sulla porta 443 (https) (nota: su distribuzioni diverse da Debian/Ubuntu... il file di configurazione è /etc/apache2/httpd.conf)

28 Autenticazione lato server All'interno del nostro Virtual Host inseriamo queste opzioni SSLEngine ON SSLCertificateFile percorso_certificato SSLCertificateKeyFile percorso_chiave_privata

29 Autenticazione lato client Per prima cosa creiamo (e firmiamo) un certificato per i client che desideriamo autenticare openssl genrsa -out client_key.key 1024 openssl req -new -out client_cert.csr -key client_key.key openssl x509 -days 365 -CA CA/CA_cert.pem -CAkey CA/CA_key.key -CAserial CA/ca.srl -req -in client_cert.csr -outform PEM -text -out client_cert.pem

30 Autenticazione lato client Per poter inserire il certificato utente all'interno del browser è necessario convertirlo in formato PKCS#12 sempre tramite openSSL openssl pkcs12 -export -in client_cert.pem -inkey client_key.key -name "user1" -out client_cert.p12

31 Autenticazione lato client Ora dobbiamo inserire queste direttive nella sezione Virtual Hosts di Apache SSLVerifyClient require SSLCACertificateFile /etc/apache2/ssl/CA_cert.pem


Scaricare ppt "Apache + SSL Rendiamo sicure le nostre connessioni ● Principi (molto) base di crittografia ● Certificati digitali ● Formato dei certificati X509 ● Certificate."

Presentazioni simili


Annunci Google