Comment générer des certificats auto-signés OpenSSL sous Linux CentOs/RedHat pour Apache/httpd
Petit tuto pour montrer comment on génère des certificats auto-signés. C’est désormais encore plus simple avec les Makefile mise à disposition par Linux CentOS/RedHat. Je présente ici de manière succincte la manière de générer un certificat auto-signé. Mais avant je vais expliquer en pratique comment fonctionne ces histoires de certificats.
Comment fonctionne un certificat
SSL ou TLS son successeur sont des protocoles de sécurisation des échanges sur internet. Lorsque vous vous connectez sur votre site favori, par exemple, vous pouvez voir que ce protocole est activé lorsqu’il y a un cadenas à gauche de https://. Votre navigateur va envoyer une demande de connexion sécurisée auprès du site web. Le site web répond en envoyant à vote navigateur son certificat. Ce dernier contient une clé publique, les informations du site (nom, pays,mail, etc.) et une signature numérique. Le navigateur va alors essayer de vérifier la signature numérique du certificat du site en utilisant les clés publiques contenues dans les certificats des autorités de certifications (AC) intégrés par défaut dans le navigateur.
- Cas 1: une d’entre elle fonctionne, votre navigateur trouve alors le nom de l’autorité de certification qui a signé le certificat envoyé par le serveur. Il vérifie que celui-ci n’est pas expiré puis envoie une demande à cette autorité pour vérifier que le certificat du serveur n’a pas été révoqué.
- Sous cas 1 , le certificat est expiré, un message d’avertissement s’affiche vous indiquant que l’identité du serveur n’a pas été vérifiée par une autorité de certification et qu’il peut donc s’agir potentiellement d’un site frauduleux, Réussite quand même !!!
- Sous cas 2, le certificat est valide , Réussite !!!!
- Cas 2 aucune ne fonctionne, votre navigateur tente de vérifier la signature numérique du certificat du serveur à l’aide de la clé publique contenue dans celui-ci.
- Sous cas 1 Échec, le certificat est invalide, pas de connexion possible.
- Sous cas 2 Réussite, le serveur web a lui-même signé son certificat. Un message d’avertissement s’affiche vous indiquant que l’identité du serveur n’a pas été vérifiée par une autorité de certification et qu’il peut donc s’agir potentiellement d’un site frauduleux. C’est ce cas que nous allons étudier à travers cet article.
Ensuite, votre navigateur génère une clé de session via un chiffrement symétrique en utilisant la clé publique contenue dans le certificat. Puis, il transmet cette clé de session au serveur. Le serveur déchiffre alors la clé de session envoyée par votre navigateur grâce à sa clé privée. D’où l’intérêt de bien protéger cette clé privée !!!! Les échanges sont initiés et vous pouvez naviguer.
Génération d’une clé privée
[root@osboxes ~]# cd /etc/pki/tls/certs/
[root@osboxes certs]# make math-linux.key
umask 77 ; \
/usr/bin/openssl genrsa -aes128 2048 > math-linux.key
Generating RSA private key, 2048 bit long modulus
...........................................+++
............................+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
[root@osboxes certs]# openssl rsa -in math-linux.key -out math-linux.key
Enter pass phrase for math-linux.key:
writing RSA key
Générer un CSR (Certificate Signing Request)
[root@osboxes certs]# make math-linux.csr
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key math-linux.key -out math-linux.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:FR
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:Paris
Organization Name (eg, company) [Default Company Ltd]:Math-Linux.com
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:math-linux.com
Email Address []:adm@math-linux.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Retirer la passphrase
[root@osboxes certs]# openssl rsa -in math-linux.key -out math-linux.key
Générer un certificat auto-signé
[root@osboxes certs]# openssl x509 -in math-linux.csr -out math-linux.crt -req -signkey math-linux.key -days 3650
Signature ok
subject=/C=FR/L=Paris/O=Math-Linux.com/CN=math-linux.com/emailAddress=adm@math-linux.com
Getting Private key
[root@osboxes certs]#
Configurer le serveur Apache/httpd associé
Dans le répertoire /etc/httpd ou /etc/apache2 doit se trouve un fichier de configuration *ssl.conf ou un environnement dédié à la configuration de ssl
La commande suivante
[root@osboxes certs]# grep -iR SSLCertificateFile /etc/httpd/*
ou
[root@osboxes certs]# grep -iR SSLCertificateFile /etc/apache*/*
vous permettra alors de déterminer le fichier en question. Il faudra alors paramétrer le serveur apache pour qu’il puisse intégrer les certificats que vous venez de générer:
<VirtualHost 192.168.0.1:443>
DocumentRoot /var/www/html2
ServerName www.math-linux.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/math-linux.crt
SSLCertificateKeyFile /etc/pki/tls/certs/math-linux.key
</VirtualHost>
Si vous avez trouvé cet article ou ce site utile et souhaitez soutenir notre travail, veuillez envisager de faire un don. Merci !
Aidez-nousArticles dans la même rubrique
- Trouver les processus consommant le plus de cpu/mémoire à l'aide de la commande ps
- Trouver/déterminer les options avec lesquelles python a été compilé
- Trouver/déterminer la version de numpy de numpy que j'utilise
- Télécharger de la musique et des vidéos .mp3, .wma, .avi, .mpg , divx avec google
- Taille du disque et de répertoire: df du
- SVN -- Comment ignorer des fichiers ou des répertoires avec subversion?
- Rechercher un fichier: locate, find et which
- Quelle est la version de mon noyau Linux : uname
- Programmation des actions(tâches) régulières: crontab
- phpMyAdmin: rechercher et remplacer dans une base MySQL
- Ouverture et fermeture de session: login, logout et password
- Nombre de lignes, de mots d'un fichier: wc
- Linux Comment supprimer une imprimante en ligne de commande
- Linux comment se connecter à Windows via remote desktop RDP en CentOS 7 / RedHat 7
- Lancer une commande un jour donné, à une heure donnée: at
- How to shut down or reboot: shutdown command
- Historique des commandes: history
- Faire un diff sur des fichiers distants en utilisant ssh
- Effacer l'écran et enlever certains caractères bizarres: clear reset
- Comment synchroniser les données mémoire sur le disque: sync
- Comment générer des certificats auto-signés OpenSSL sous Linux CentOs/RedHat pour Apache/httpd
- Comment faire un déni de service en BASH à l'aide de fork ?
- Comment éteindre ou redémarrer son pc: shutdown
- Comment définir un timeout lors d'une tentative de connexion SSH ?
- Comment chiffrer/déchiffrer un fichier ou un répertoire sous Linux?
- Chronométrer une tâche: time
- Archivage et compression de données: tar
- Affichage du calendrier en ligne de commande: cal
- Accélérer le processus de compilation et de build avec GNU make
- Accéder à une page de manuel: man
- Linux - Commande du jour