Two Way SSL Authentication

3 posts / 0 new
Dernière contribution
batist3
Two Way SSL Authentication

Bonjour,

 

J'essai de mettre en place un authentification double sens sur un serveur Web sous centos 7. Après avoir fait plusieurs essais, je butte sans savoir d'où vient mon erreur.

 

j'installe la partie http puis mod_ssl et openssl, ouverture de port puis test https OK.

 

 

je génère ma clé rootCA privé  :
openssl genrsa -des3 -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

 

puis je passe aux certificats serveur :
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256

 

j'ajoute les lignes suivantes au fichier httpd.conf :
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

 

je recopie les fichiers de certifictas dans les dossiers correspondants et dans le fichier ssl.conf, je décommente les lignes pour avoir sous cette forme :

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
SSLCACertificateFile /etc/pki/tls/certs/rootCA.pem

SSLVerifyClient require
SSLVerifyDepth  10

 

Je passe à la création des certificats clients:
openssl genrsa -out client.key 2048

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

openssl x509 -req -in client.csr -CA rootCA.pem -CAkey rootCA.key -CAserial rootCA.srl -out client.crt -days 500 -sha256

openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12

 

je redémarre le service httpd et importe le fichier rootCA.pem et client.p12 sur le poste client via firefox ou Inetrnet explorer.

 

Lors d ela connexion au serveur https, j'ai bien la demande de certificat mais une fois validée, j'ai un mesage d'erreur :

Une erreur est survenue pendant une connexion à 192.168.60.109. Le pair ne reconnaît pas l’autorité de certification qui a délivré votre certificat et ne lui fait pas confiance. Code d’erreur : SSL_ERROR_UNKNOWN_CA_ALERT

 

 

J'ai fait pas mal de test sans succès ; si vous avez une idée pour me faire avaner sur ce dossier je suis preneur !

 

Batist3

batist3
Bonjour,

Bonjour,

 

Après avoir travaillé sur ce projet, j'ai enfin réussit à faie fonctionner ce système.

Voici comment : Installer CentOS 7 pusi lancer :

 

yum update -y
reboot

 

Installation de php55
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php55w php55w-opcache
php -v
systemctl enable httpd
systemctl start httpd
firewall-cmd --zone=public --permanent --add-port=80/tcp

firewall-cmd --zone=public --permanent --add-port=443/tcp
firewall-cmd --reload

yum install -y mariadb-server
systemctl enable mariadb
systemctl start mariadb
mysql_secure_installation
yum install -y php55w php55w-mysql php55w-common php55w-mcrypt php55w-gd mod_ssl openssl
yum update

 

A ce stade, la partie installation est terminée ; Génération des certificats

 

cd /root
mkdir certificates
cd certificates/
openssl genrsa -des3 -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem

Pour le rootCA, dans le champ commonname, inscrivez ce que vous voulez exemple CentOS

Pour les certificats server & client, dans commmonname, inscriver l'url du site internet exemple xyz.com
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 3650 -sha256

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr
openssl x509 -req -in client.csr -CA rootCA.pem -CAkey rootCA.key -CAserial rootCA.srl -out client.crt -days 3650 -sha256
openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12

cp server.crt /etc/httpd/conf/server.crt
cp server.key /etc/httpd/conf/server.key
cp server.crt /etc/ssl/certs/server.crt
cp server.key /etc/ssl/private/server.key
cp rootCA.pem /etc/pki/tls/certs/rootCA.pem

 

 

Modification du fichier ssl.conf :

 

Dans le fichier /etc/httpd/conf.d/SSL.conf, au niveau du virtualhost
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
SSLCACertificateFile /etc/pki/tls/certs/rootCA.pem
SSLVerifyClient require
SSLVerifyDepth  10

Dans le fichier /etc/httpd/conf.modules.d/00-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

 

Pour finir, redémarrer le service httpd en lançant la commande :

service httpd restart

 

Sur le poste client, recopier le fichier client.p12 sur le bureau et intégrer le avec le mot de passe fournis lors de la génération dans les certificats personnel.

Petite astuce, sous firefox, cocher la case En sélectionner un automatiquement, ceci évitera la demande de certificat à chaque connexion.

Pour Chrome sous windows, il faut intégrer le certificat avec IE.

 

En espérant que cela soit utile Smile

 

Batist3

 

MasterSleepy
Hello Batist3,

Hello Batist3,

Merci beaucoup pour cette explication.
Clapping

A+,
MasterSleepy

 
Connectez-vous ou inscrivez-vous pour publier un commentaire