Introduction à la sécurité informatique
Cours

Atelier Pratique II : Sécuriser un serveur web Apache

Objectifs

Se familiariser avec les concepts d'une infrastructure à clés publiques :

  • PKI

  • Création d'une autorité de certification

  • Création de certificats numériques

  • Signature de certificats numériques

Configuration de la sécurité d'un serveur web Apache avec le protocole SSL

Configuration d'un navigateur Web pour l'authentification d'un client et d'un serveur web avec SSL.

  • Si apache ne se lance pas après l'installation de xampp, penser à modifier le numéro de port. Il se peut qu'une application existante utilise le port par défaut de Apache.

  • Il faut remplacer partout dans les commandes ci-dessous C:\...\xampp par le chemin exacte vers votre installation de xampp.

  • Penser toujours à sauvegarder la dernière version d'un fichier de configuration avant une nouvelle modification.

  • Il faut exécuter les commandes avec une grande attention. En cas de doute demander à votre enseignant. La moindre erreur pourrait nécessiter la réinstallation de xampp et refaire l'intégralité de l'atelier.

CHANGER LE REPERTOIRE DE PUBLICATION WEB DE APACHE

  1. Création d'un répertoire pour le test "delta" sous le DocumentRoot de apache: "htdocs"

  2. Modifier le fichier conf: "httpd.conf" en conséquence :

    • #DocumentRoot "C:/.../xampp/htdocs"

    • DocumentRoot "C:/.../xampp/htdocs/delta"

    • #<Directory "C:/.../xampp/htdocs">

    • <Directory "C:/.../xampp/htdocs/delta">

  3. Mettre une page web dans ce repertoire "delta": "index.html" (Vous pouvez créer une telle page avec MS Word en sauvegardant le document sous forme d'une page web).

  4. Relancer apache.

  5. Tester avec le navigateur: http://localhost

Ceci va constituer la zone libre accés du serveur

CREER UN REPERTOIRE POUR LA ZONE SECURISEE

  1. Sous "htdocs/delta" créer un répertoire "secure"

  2. Modifier le fichier config "httpd-ssl.conf" en conséquence. Ce fichier se trouve sous "apache/conf/extra". Pour l'ouvrir, il faut utiliser l'éditeur « edit » à partir de la ligne de commande.

    • #DocumentRoot "C:/.../xampp/htdocs"

    • DocumentRoot "C:/.../xampp/htdocs/delta/secure"

  3. Mettre une page web dans ce répertoire "delta/secure": "index.html"

CREER LES CETIFICAT ET LES CLES POUR LA CA ET LE SERVEUR

  1. Sous le répertoire "apache/conf" créer un répertoire "delta" et deux sous-repertoires "delta/certifs" et "delta/cles". Ces deux repertoires serviront à stocker les certificats et les clés de CA et de notre serveur.

  2. Modifier le fichier config "httpd-ssl.conf" en conséquence. Ce fichier se trouve sous "apache/conf/extra". Pour l'ouvrir, il faut utiliser l'éditeur « edit » à partir de la ligne de commande.

    • #SSLCertificateFile conf/ssl.crt/server.crt

    • SSLCertificateFile conf/delta/certifs/serveurcert.pem

    • #SSLCertificateKeyFile conf/ssl.key/server.key

    • SSLCertificateKeyFile conf/delta/cles/serveurkey.pem

  3. Création du certificat du CA

    A partir du répertoire "apache/bin" on lance la commande suivante:

    • >> openssl req -new -x509 -extensions v3_ca -keyout ..\conf\delta\cles\cakey.pem -out ..\conf\delta\certifs\cacert.pem -days 365 -config .\openssl.cnf *passwd= capasswd

    Le fichier "openssl.cnf" contient les définitions nécessaires pour la commande openssl

    Cette étape nous génère une clé pour la CA et le certificat du CA

  4. Création du certificat du serveur

    A partir du répertoire "apache/bin" on lance la commande suivante:

    • >> openssl req -new -nodes -keyout ..\conf\delta\cles\serveurkey.pem -out ..\conf\delta\certifs\serveur-req.pem -config .\openssl.cnf *passwd= serveurpasswd

    Ceci va créer une requête "serveur-req.pem" qui correspond à un certificat non-signé, ainsi que la cle privée correspondante.

  5. La CA signe le certificat du serveur "serveur-req.pem"

    Avant de lancer la commande, le fichier "openssl.cnf" doit être modifié en conséquence:

    • Dir = ../conf/delta # Where everything is kept

    • certs = $dir/certifs # Where the issued certs are kept

    • database = $dir/certifs/index.txt # database index file.

    • new_certs_dir = $dir/certifs # default place for new certs.

    • certificate = $dir/certifs/cacert.pem # The CA certificate

    • serial = $dir/certifs/serial # The current serial number

    • private_key = $dir/cles/cakey.pem # The private key

    Ajouter aussi un fichier "index.txt" vide dans "delta/certifs" ainsi qu'un fichier "serial" qui contient juste 01

    A partir du répertoire "apache/bin" on lance la commande suivante:

    • >> openssl ca -out ..\conf\delta\certifs\serveurcert.pem -config .\openssl.cnf -infiles ..\conf\delta\certifs\serveur-req.pem

    Ceci nous génère le certificat "serveurcert.pem" du serveur signé par la CA

LES TESTS

  1. Relancer apache

  2. On teste "https://localhost"

    Ca nous demande si on accepte le certificat du serveur: On regarde les détails du certificat et on accepte temporairement (pour la session)

    On peut redémarrer le navigateur pour voir que de nouveau le certificat n'est pas accepté automatiquement.

    On peut aussi l'accepter pour toujours (permenantly). Le certificat est alors ajouté à la liste des cetif "serveurs web"

  3. On enlève le certificat du serveur du navigateur. On peut aussi inclure le certificat de la CA dans le navigateur et on se connecte de nouveau, le certificat du serveur sera accepté automatiquement car signé par un CA reconnu par le navigateur

Atelier Pratique I : Opérations Cryptographiques avec OpenSSL
Accueil Yacine Challal & Hatem Bettahar creativecommons : by-nc-ndRéalisé avec SCENARI