tba.com/
|-- certs/
|-- crl/
|-- index.txt
|-- newcerts/
|-- private/
|-- serial
# mkdir -p /usr/share/ssl/tba.com/{certs,crl,newcerts,private}
# touch /usr/share/ssl/tba.com/index.txt
# echo "01" > /usr/share/ssl/tba.com/serial
Par la suite il fallait modifier le fichier /usr/share/ssl/openssl.cnf pour qu'il reconnaisse cette arborescence
# cp /usr/share/ssl/openssl.cnf /usr/share/ssl/openssl.old (afin de faire une copie de sauvegarde)
# cd /usr/share/ssl && vi openssl.cnf
[ ca ]Il fallait modifier le chemin de l'autorité de certification dans mon cas c'est /usr/share/ssl/tba.com, ensuite faire quelques modification dans la partie [ req_distinguished_name ]
default_ca = tba_com # The default ca section
####################################################################
[tba_com ]
dir = /usr/share/ssl/tba.com # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt
[ req_distinguished_name ]Afin de spécifier les paramètres par défaut des certificats lors de leurs création.
countryName = Country Name (2 letter code)
countryName_default = TN
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
localityName_default = La Marsa
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Master E-Services
Par la suite il fallait créer les clés et les certificats de l'autorité de certification.
# cd /usr/share/ssl/tba.com
# openssl req -config /usr/share/ssl/openssl.cnf -x509 -newkey rsa:1024 -days 365 -keyout private/cakey.pem -out cacert.pem
On produit ainsi le certificat et la clé de l'autorité la clé est stockée dans /usr/share/ssl/tba.com/private/cakey.pem et le certificat dans /usr/share/ssl/tba.com/cacert.pem.
Par la suite il faut protéger notre clé privée en n'autorisant l'accès qu'en lecture au root
#
chmod -R 600 /usr/share/ssl/tba/tba.com/private
On génère à présent la paire de clés ainsi que la demande de certificats que nous signerons par la suite
# cd /home/tahar/Desktop/Master/Securite/Travaux/SSL
# openssl req -config /usr/share/ssl/openssl.cnf -newkey rsa:1024 -keyout cle-privee.key -out cle-publique.req
Maintenant, on signe la demande de certificat et on produit un certificat signé, pour la signature, il faut entrer le mot de passe de la clé privé qu'on a généré au début
# openssl ca -config /usr/share/ssl/openssl.cnf -in cle-publique.req -out certificat.pem
À présent, nous allons installer et générer des certificats serveur pour Apache, d'abord on créé la clé et la demande de certificat
# openssl req -config /etc/ssl/openssl.cnf -newkey rsa:1024 -keyout libertysoft.homelinux.org.key -out libertysoft.homelinux.org.req
Ensuite, on signe la demande de certificat et on produit le certificat qui sera utilisé.
# mkdir /home/tahar/Desktop/Master/Securite/Travaux/SSL/serveur
# cd /home/tahar/Desktop/Master/Securite/Travaux/SSL/serveur
# openssl ca -config /usr/share/ssl/openssl.cnf -in libertysoft.homelinux.org.req -out libertysoft.homelinux.org.pem
Maintenant on place la clé ainsi que le certificat dans le répertoire de stockage d'apache, pour mon cas on les place dans /etc/httpd/conf/
# mv libertysof.homelinux.org.key /etc/httpd/conf/
# mv libertysoft.homelinux.org.pem /etc/httpd/conf/
On modifie par la suite le fichier httpd.conf pour qu'il prenne en considération les certificats et clés serveur, pour mon cas je dois modifier /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/conf/libertysoft.homelinux.org.pemOn met le chemin du certificat et de la clé dans SSLCertificateFile et SSLCertificateKeyFile.
SSLCertificateKeyFile /etc/httpd/conf/libertysoft.homelinux.org.key
Il ne reste plus qu'à configurer apache pour que toute requête http soit redirigée automatiquement vers https pour cela on modifie le fichier Vhosts.conf pour rajouter un virtual host et faire la redirection ensuite on rajoute la ligne
Include conf/vhosts/Vhosts.confdans /etc/httpd/conf/httpd.conf
À présent notre serveur est prêt il suffit de relancer Apache pour que les modifications soient prises en compte
DocumentRoot /
ServerName libertysoft.homelinux.org
Redirect / https://libertysoft.homelinux.org
service httpd restart
Vu que nos clés sont sécurisées par un mot de passe le système risque de bloquer en attendant de saisir le mot de passe de protection de la clé.
À présent, si on tape l'adresse https://libertysoft.homelinux.org [1] on aura un message d'erreur comme quoi le navigateur ne peut pas faire confiance au certificat vu qu'il n'est pas signé par une autorité de confiance, pour éviter ce message on installe notre CA dans le navigateur en tant qu'autorité de certification.
Pour cela on ouvre Firefox---->Édition---->Préférences---->Avancés------>afficher les certificats et on va à l'onglet Autorités et on importe notre certificat depuis /etc/ssl/tba.com/cacert.pem
Pour l'importer on nous demande de saisir le mot de passe de la clé privée qui a été générée au début.
À présent, la moitié du travail est terminée, il ne reste plus qu'à faire en sorte à ce que uniquement les clients qui présentent un certificat signé par Master E-Services puissent accéder au site,
Pour cela on modifie la configuration d'apache afin de n'accepter que les clients qui présentent un certificat, pour mon cas je dois modifier /etc/httpd/conf.d/ssl.conf on rajoute le chemin pour le certificat de la CA et on enlève le commentaire pour SSLVerifyClient.
SSLCACertificateFile /usr/share/ssl/certs/ca-bundle.crtÀ présent l'accès au site devient impossible si on ne présente pas un certificat et on obtient une erreur -12227
SSLVerifyClient require
Maintenant pour empêcher cette erreur il faut créer les certificats client
mkdir /home/tahar/Desktop/Master/Securite/Travaux/SSL/client
cd /home/tahar/Desktop/Master/Securite/Travaux/SSL/client
openssl req -config /usr/share/ssl/openssl.cnf -newkey rsa:1024 -keyout client.key -out client.req
On signe la demande de certificat avec notre AC
openssl ca -config /usr/share/ssl/openssl.cnf -in client.req -out client.pem
Maintenant pour pouvoir importer la bi-clé dans le navigateur et identifier l'utilisateur il faut qu'elle soit au fomat PCKS#12
openssl pkcs12 -export -in client.pem -inkey client.key -out xavier.p12 -name "Xavier Le-Pallec"
Enter pass phrase for client.key:
Enter Export Password: xavier
Verifying - Enter Export Password: xavier
Il ne reste plus qu'à importer le certificat dans le navigateur pour pouvoir accéder à la page le mot de passe d'exportation sera demandé pour l'installer.