diff --git a/build_and_verify_pki.sh b/build_and_verify_pki.sh index 8db5634..ff2fb0b 100644 --- a/build_and_verify_pki.sh +++ b/build_and_verify_pki.sh @@ -1,11 +1,14 @@ #!/bin/bash +# build_and_verify_pki.sh -# Ce script permet de mettre en place une maquette de PKI à des fins de tests. - -# Création de l'arborescence de la PKI - -# Préparation de la hiérarchie de dossiers +# Ce script est conçu pour s'exécuter sur une machine virtuelle Debian 12 vierge. +# Il permet de mettre en place une maquette de PKI à des fins de tests. +# Il vise à mettre en place une CA racine, une CA intermédiaire, un certificat serveur et une CRL. +# On met également en place un serveur apache avec un certificat signé par la CA intermédiaire pour tester HTTPS. +# Le fichier ./chain.cert est à récupérer pour être importé dans Firefox, sur la machine avec laquelle on va accéder au serveur web. +# Les fichiers sous ./pki_checks/ contiennent les certificats, leurs informations et les vérifications associées. +## 1 - Préparation de la hiérarchie de dossiers # Dossier de vérification mkdir ./pki_checks # CA Root @@ -21,13 +24,13 @@ echo 1000 > /root/ca-intermediaire/crlnumber # Serveur mkdir -p /root/server/{certs,csr,private} +## II - Mise en place des fichiers de configuration # Création des fichiers de configuration curl https://git.yh.genj.fr/polaire/IRSS010-Public_Keys_Infrastructure/raw/branch/main/ca/openssl.conf > /root/ca/openssl.cnf curl https://git.yh.genj.fr/polaire/IRSS010-Public_Keys_Infrastructure/raw/branch/main/ca-intermediaire/openssl.cnf > /root/ca-intermediaire/openssl.cnf - -# Mise en place de la CA racine +## III - Mise en place de l'autorité de certification racine # Création de la paire de clés openssl genpkey -algorithm RSA -out /root/ca/private/racine.key -aes256 -pass pass:yourpassword # Création du certificat racine @@ -37,7 +40,8 @@ openssl x509 -in /root/ca/racine.cert -text > ./pki_checks/racine.cert.txt # Vérifier le certificat openssl verify -CAfile /root/ca/racine.cert /root/ca/racine.cert > ./pki_checks/verify.txt -# Mise en place de la CA intermédiaire +## IV - Mise en place de l'autorité de certification intermédiaire +# Création de la paire de clés openssl genpkey -algorithm RSA -out /root/ca-intermediaire/private/intermediate.key -aes256 -pass pass:yourpassword2 # Création de la demande de certificat de l'autorité intermédiaire (CSR) openssl req -config /root/ca-intermediaire/openssl.cnf -new -key /root/ca-intermediaire/private/intermediate.key -out /root/ca-intermediaire/csr/intermediate.csr -passin pass:yourpassword2 -subj "/C=FR/ST=Paca/L=Marseille/O=Igensia/OU=ISCPA/CN=Intermediate CA" @@ -50,7 +54,7 @@ openssl verify -CAfile /root/ca/racine.cert /root/ca-intermediaire/certs/interme # Création de la chaîne de certification cat /root/ca-intermediaire/certs/intermediate.cert /root/ca/racine.cert > /root/ca-intermediaire/certs/chain.cert -# Mise en place du certificat serveur à révoquer +## V - Mise en place du certificat serveur à révoquer # Création de la paire de clés openssl genpkey -algorithm RSA -out /root/server/private/server.key # Création de la CSR @@ -62,7 +66,7 @@ openssl x509 -in /root/server/certs/server.cert -text -noout > ./pki_checks/serv # Vérifier le certificat du serveur openssl verify -CAfile /root/ca-intermediaire/certs/chain.cert /root/server/certs/server.cert >> ./pki_checks/verify.txt -# Mise en place de la CRL +## VI - Mise en place de la liste de révocations # Création de la CRL openssl ca -config /root/ca-intermediaire/openssl.cnf -gencrl -out /root/ca-intermediaire/crl/crl.pem -passin pass:yourpassword2 # Révocation d'un certificat @@ -72,7 +76,9 @@ openssl ca -config /root/ca-intermediaire/openssl.cnf -gencrl -out /root/ca-inte # Vérification de la révocation d'un certificat openssl verify -crl_check -CAfile /root/ca-intermediaire/chain.cert -CRLfile /root/ca-intermediaire/crl/crl.pem /root/server/certs/server.cert > ./pki_checks/verify_crl.txt -# Création du certificat serveur avec SAN +## VII - Création du certificat serveur avec SAN +# Mise à jour du fichier de configuration de la CA intermédiaire +curl https://git.yh.genj.fr/polaire/IRSS010-Public_Keys_Infrastructure/raw/branch/main/ca-intermediaire/openssl_san.cnf > /root/ca-intermediaire/openssl.cnf # Création de la paire de clés openssl genpkey -algorithm RSA -out /root/server/private/server_san.key # Création de la CSR @@ -82,7 +88,7 @@ openssl ca -config /root/ca-intermediaire/openssl.cnf -extensions server_cert -d # Vérification du certificat du serveur avec SAN openssl x509 -in /root/server/certs/server_san.cert -text > ./pki_checks/server_san.cert.txt -## Installation et configuration d'Apache +## VIII - Installation et configuration d'Apache if ! dpkg -l | grep -q apache2; then apt install -y apache2 fi @@ -91,5 +97,12 @@ a2enmod ssl a2ensite default-ssl systemctl restart apache2 +## IX - Copie de la chaine et affichage des informations # Copie du fichier chain.cert dans le répertoire courant pour qu'il puisse être importé dans Firefox. -cp /root/ca-intermediaire/certs/chain.cert ./chain.cert \ No newline at end of file +cp /root/ca-intermediaire/certs/chain.cert ./chain.cert +# Affichage des messages d'information +echo "La PKI est en place. Pour tester HTTPS, récupérez ./chain.cert et importez-le dans Firefox." +echo "Vous trouverez les certificats et leurs informations associés sous ./pki_checks/" +echo "Vous pouvez consulter la sortie pour la CRL sous ./pki_checks/verify_crl.txt" +echo "Le fichier ./pki_checks/verify.txt contient les vérifications pour l'ensemble des certificats" +