TP – Apache / SSL

1 – Étude théorique de SSL

SSL/TLS (Secure/Transport Socket
Layer) :

Protocole d’encapsulation des trames TCP permettant de sécuriser les échanges. SSL garanti l’authenticité, l’intégrité et la confidentialité des données. Le principe repose sur des clés de chiffrement hybride. On utilise des clés asymètriques pour échanger une clé de session (symétrique) pour la suite des échanges.

SSL utilise les algorithmes RSA et MD5 par exemple

HTTPS (HyperText Transfer Protocol Secure ) :

C’est une encapsulation SSL des échanges HTTP entre un client est un serveur. Ce protocole est en écoute sur le port 443 par défaut.

2 – Installation et configuration classique de Apache

Pour installer :

apt-get update
apt-get install apache2 apache2.2-common

ServerRoot correspond au répertoire de configuration d’apache2 (ici /etc/apache2)

DocumentRoot correspond au répertoire où se trouvent les sites web par défaut (ici /var/www,
configuré dans /etc/apache2/sites-available/<site_conf_file>).


Par exemple le site par défaut contient la ligne :

DocumentRoot /var/www

Les ports se configurent dans le fichier /etc/apache2/ports.conf et pour chacun des sites créé. On a donc pour chaque site (en fait pour chaque VirtualHost, un port d’écoute :



Pour configurer le nom du serveur il faut ajouter la ligne suivante au fichier /etc/apache2/httpd.conf :

ServerName www.test.com

Ensuite on redémarre le service apache2 pour prendre en compte les modifications :

/etc/init.d/apache2 restart

Sur le client, l’adresse http://192,168,108,51 pointe sur le fichier par défaut de DocumentRoot c’est à dire le fichier /var/www/index.html



On créer le fichier /var/www/test.html dans lequel on met le contenu HTML donné.

Le client, en tapant 192.168.108,51/test.html dans son navigateur, obtient bien la page HTML.

Le fichier C:\WINDOWS\system32\drivers/etc/hosts est l’équivalent du fichier /etc/hosts sous linux. Il permet de faire correspondre des noms à des @IP.

On ajoute donc :

192,168,108,51 www.test.com

On obtient toujours page web en tapant cette fois http://www.test.com/test.html :

3 – Test de la sécurité HTTP

En sniffant le réseau on voit clairement les trames HTTP et leur contenu échangées entre le serveur et le client. On voit donc bien que HTTP n’est pas sécurisé et cela peux poser problème notamment pour les formulaire HTLM, où les données d’authentification sont renseignées. Par HTTP, ces données transitent en clair sur le réseau et il suffit de sniffer avec un logiciel tel que Wireshark pour retrouver login et mot de passe saisies dans le formulaire.

4 – Création des certificats

Création du certificat Serveur

Pour générer la clé RSA 1024 bit du serveur il faut taper :

openssl genrsa -out serveur.key 1024

Voici le contenu de ce fichier :

CSR (Certificate Signed Request)

Pour créer le formulaire de demande de signature du certificat il faut taper la commande :

openssl req -new -key serveur.key -out serveur.csr



On obtient alors le fichier CSR suivant :

Création du certificat de l’autorité de certification

Pour créer la clé privée du CA il faut taper la commande :

openssl genrsa -des3 -out ca.key 1024

 

On nous demande alors une pass phrase.

Pour générer (par exemple) un certificat X509 pour 1 an auto-signé, il faut taper la commande suivante :

openssl req -new -x509 -days 365 -key ca.key -out ca.crt

 

Désolé pour le rm ca.crt && … avant la commande, il n’est pas à taper

Voilà à quoi ressemble le certificat. Pour le visualiser il faut taper la commande :

openssl x509 -in ca.crt -text -noout

La signature du certificat serveur par le CA (Certificated Authority)

Maintenant pour signer serveur.key par l’autorité de certification, il faut taper :


openssl x509 -req -in serveur.csr -out serveur.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 365

5 – Configuration de Apache

Activation du module SSL

Pour activer le module SSL d’Apache il faut taper :

a2enmod ssl
# Pour recharger la configuration :
/etc/init.d/apache2 restart



On voit bien que le module SSL d’apache2 est maintenant bien activé.

Configuration de Apache

Une fois le module SSL activé le port 443 est ouvert.

Ensuite il faut activer le site default-ssl en tapant :

a2ensite default-ssl
/etc/init.d/apache2 reload

Maintenant on vois que le site default-ssl est présent dans la liste des sites activés.

Il faut maintenant le configurer pour qu’il utilise le certificat de www.test.com précédemment créé et la clé privé du serveur. Il faudra aussi renseigner le certificat du CA.

On édite le fichier /etc/apache2/sites-enabled/default-ssl pour configurer les clés et certificats du serveur et du CA :

Il alors possible de se connecter au serveur en SSL en tapant https://www.test.com dans un naviguateur.

On doit alors ajouter une exception pour ce certificat, car il n’est pas signé par un CA de confiance, mai par le CA que l’on vien de créer.



On voit bien que le certificat reçu par le naviguateur correspond à celui créé sur le serveur (vérification avec la commande openssl x509 -n ca.crt -text -noout sur le serveur).



On constate alors que les échanges de flux HTTP son encapsulés dans un tunnel TLSv1


Il est alors impossible de voir le contenu des paquets échangés (les encadrés en rouge entourent les données cryptées).

7 – Installation du certificat d’autorité de certification sur le client

Pour installer le certificat d’autorité de certification sur le client il faut récupérer le fichier ca.crt sur le serveur CA puis l’importer dans le naviguateur, par exemple pour Iceweasel / Firefox il faut ouvrir le menu des Préfèrences → Advanced → Encryption → Boutton View Certificates. Dans la fenêtre choisir l’onglet Servers et avec le boutton Import on peut ajouter notre ca.crt au naviguateur :

Laisser un commentaire


NOTE - Vous pouvez utiliser les éléments et attributs HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>