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.
Création d'un répertoire pour le test "delta" sous le DocumentRoot de apache: "htdocs"
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">
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).
Relancer apache.
Tester avec le navigateur: http://localhost
Ceci va constituer la zone libre accés du serveur
Sous "htdocs/delta" créer un répertoire "secure"
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"
Mettre une page web dans ce répertoire "delta/secure": "index.html"
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.
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
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
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.
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
Relancer apache
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"
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