Outils pour utilisateurs

Outils du site


ssl

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ssl [2022/10/10 14:31] – [Mode opératoire] adminssl [2025/02/15 12:16] (Version actuelle) – [Redirection de HTTP vers HTTPS] administrateur
Ligne 18: Ligne 18:
 La démarche est commune quel que soit le service que l'on souhaite sécuriser.  La démarche est commune quel que soit le service que l'on souhaite sécuriser. 
 Seuls les fichiers à modifier changent d'un service à l'autre. Seuls les fichiers à modifier changent d'un service à l'autre.
-<WRAP left round box 60%> +<WRAP center round box 80%> 
-  Créer le répertoire pour stocker les clés et certificats+Créer le répertoire pour stocker les clés et certificats
   - Créer la clé privée    - Créer la clé privée 
   - Créer le certificat X509 à partir de la clé privée en renseignant toutes les informations demandées   - Créer le certificat X509 à partir de la clé privée en renseignant toutes les informations demandées
-  - Paramétrer le service concerné  +  - Paramétrer le service concerné (apache, proftpd, etc) 
-    activer le module,  +    activer le module,  
-    configurer les fichiers pour qu'ils utilisent la clé et le certificat +    configurer les fichiers pour qu'ils utilisent la clé et le certificat 
-    mettre en écoute sur les ports spécifiques +    mettre en écoute sur les ports spécifiques 
-    redémarrer le service pour prendre en compte les modifications+    redémarrer le service pour prendre en compte les modifications
   - Tester depuis un client en lui indiquant l'adresse et le port adéquats   - Tester depuis un client en lui indiquant l'adresse et le port adéquats
-  - Éventuellement, accepter le certificat auto-signé (<wrap em>attention, cela peut être un danger si on ne connaît pas la source</wrap>). +    * Éventuellement, accepter le certificat auto-signé (<wrap em>attention, cela peut être un danger si on ne connaît pas la source</wrap>). 
 </WRAP> </WRAP>
  
-==== Mode opératoire ==== +===== Mode opératoire ===== 
- +
-=== Mise en place d'un certificat avec OpenSSL ===+
  
 {{ :commandesopenssl.png?direct&300|}} {{ :commandesopenssl.png?direct&300|}}
-//OpenSSL// est une transposition //Open Source// ([[http://www.openssl.org/]]) des préconisations de l'IETF pour la mise en place d'une couche sécurisée. +//OpenSSL// est une transposition //Open Source// ([[http://www.openssl.org/]]) des **préconisations de l'IETF** pour la mise en place d'une couche sécurisée.  
 Le nom est resté //OpenSSL// mais la bibliothèque supporte aussi la version TLS.  Le nom est resté //OpenSSL// mais la bibliothèque supporte aussi la version TLS. 
 +
 //OpenSSL// gère de nombreux <wrap em>algorithmes de cryptage</wrap> (AES, DES, RSA,...) et <wrap em>algorithmes de hachage</wrap> (SHA, MD5, …). //OpenSSL// gère de nombreux <wrap em>algorithmes de cryptage</wrap> (AES, DES, RSA,...) et <wrap em>algorithmes de hachage</wrap> (SHA, MD5, …).
 +
 +==== Installation des outils ====
  
 __Installer la bibliothèque OpenSSL__  __Installer la bibliothèque OpenSSL__ 
Ligne 48: Ligne 50:
 Cet outil propose notamment des commandes pour la création de clé secrète (//gendh//, //genrsa//, ...) ou la génération de certificat (//x509//). Cet outil propose notamment des commandes pour la création de clé secrète (//gendh//, //genrsa//, ...) ou la génération de certificat (//x509//).
  
-== 1 : Création d'une clé privée ==+==== Mise en place d'un certificat avec OpenSSL ==== 
 + 
 +=== 1 : Création d'une clé privée ===
  
 La base des techniques de <wrap em>chiffrement asymétrique</wrap> repose sur la présence, à un endroit unique, d'une **//clé privée//**.  La base des techniques de <wrap em>chiffrement asymétrique</wrap> repose sur la présence, à un endroit unique, d'une **//clé privée//**. 
Ligne 56: Ligne 60:
 <code lscript>openssl genrsa -out <nom_fichier_cle> <taille_cle></code> <code lscript>openssl genrsa -out <nom_fichier_cle> <taille_cle></code>
  
 +<WRAP center round info 100%>
 __Exemple : créer une clé privée dans le dossier private__ __Exemple : créer une clé privée dans le dossier private__
  
-<code lscript>+{{ :clersa.png?direct&200|}}<code lscript>
 cd /etc/ssl/private cd /etc/ssl/private
 openssl genrsa -out cleGSB.key 2048 openssl genrsa -out cleGSB.key 2048
-</code> {{ :clersa.png?direct&200|}}+</code>  
 +</WRAP> 
  
 On pourra alors éditer la clé (avec nano) et en lire le contenu (évidemment inaccessible).  On pourra alors éditer la clé (avec nano) et en lire le contenu (évidemment inaccessible). 
 Cette même clé peut servir à établir des certificats différents pour des usages distincts (serveur FTP, serveur Web, messagerie, etc).  Cette même clé peut servir à établir des certificats différents pour des usages distincts (serveur FTP, serveur Web, messagerie, etc). 
  
-== 2 : Création d'un certificat X509 ==+=== 2 : Création d'un certificat X509 ===
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Ligne 80: Ligne 87:
  
   * Création d'un d'une <wrap em>demande de signature de certificat (Certificate signing request)</wrap> : on devra renseigner les coordonnées de l'entreprise<WRAP right round tip 30%>   * Création d'un d'une <wrap em>demande de signature de certificat (Certificate signing request)</wrap> : on devra renseigner les coordonnées de l'entreprise<WRAP right round tip 30%>
-si la signature est faite par la même machine que la demande, le certificat est auto-signé et génèrera une alerte sur les navigateurs+si la signature est faite par la même machine que la demande, le <wrap em>certificat est auto-signé</wrap> et génèrera une alerte sur les navigateurs
 </WRAP> </WRAP>
 <code lscript>openssl req -new -key <nom_fichier_cle> -out <nom_certif_generic.csr> </code> <code lscript>openssl req -new -key <nom_fichier_cle> -out <nom_certif_generic.csr> </code>
Ligne 88: Ligne 95:
 <code lscript>openssl x509 -req -days <nb_jours> -in <nom_certif_generic.csr> -signkey <nom_fichier_cle> -out <nom_certif_X509.crt></code> <code lscript>openssl x509 -req -days <nb_jours> -in <nom_certif_generic.csr> -signkey <nom_fichier_cle> -out <nom_certif_X509.crt></code>
  
 +<WRAP center round info 100%>
 __Exemple : création d'un certificat dans le dossier des certificats SSL à partir de la clé RSA__ __Exemple : création d'un certificat dans le dossier des certificats SSL à partir de la clé RSA__
-<WRAP group> 
-<WRAP half column> 
 <code lscript> <code lscript>
 cd /etc/ssl/certs cd /etc/ssl/certs
Ligne 96: Ligne 102:
 openssl x509 -req -days 365 -in GSBCertGen.csr -signkey ../private/cleGSB.key -out GSBcertif.crt  openssl x509 -req -days 365 -in GSBCertGen.csr -signkey ../private/cleGSB.key -out GSBcertif.crt 
 </code> </code>
 +
 </WRAP> </WRAP>
  
-<WRAP half column> +<WRAP right round important 30%>
-<WRAP center round important 80%>+
 Penser à adapter les valeurs à votre environnement Penser à adapter les valeurs à votre environnement
-</WRAP> 
-</WRAP> 
 </WRAP> </WRAP>
  
Ligne 112: Ligne 116:
 ===== Configuration d'Apache avec SSL/TLS ===== ===== Configuration d'Apache avec SSL/TLS =====
  
 +====Activation du module SSL====
 La configuration nécessite l'activation du module SSL pour Apache2 La configuration nécessite l'activation du module SSL pour Apache2
  
-  a2enmod ssl+<code lscript> a2enmod ssl</code>
      
 //remarque// : Si le module est déjà activé, un message l'indique.  //remarque// : Si le module est déjà activé, un message l'indique. 
 <WRAP center round tip 90%> <WRAP center round tip 90%>
-Si la commande a2enmod ne fonctionne pas, faire les commandes suivantes :+<wrap em>Si la commande a2enmod ne fonctionne pas</wrap>, faire les commandes suivantes :
   * cp  /etc/apache2/mods-available/ssl.load  /etc/apache2/mods-enabled/   * cp  /etc/apache2/mods-available/ssl.load  /etc/apache2/mods-enabled/
   * cp  /etc/apache2/mods-available/ssl.conf  /etc/apache2/mods-enabled/   * cp  /etc/apache2/mods-available/ssl.conf  /etc/apache2/mods-enabled/
Ligne 126: Ligne 131:
  
      
 +<WRAP center round <WRAP center round info 90%>
 +
 **__Contrôle__** **__Contrôle__**
  
Ligne 131: Ligne 138:
  
 <code apache>LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so </code> <code apache>LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so </code>
 +
 +
 +</WRAP>
  
 Dans le fichier //ports.conf// de Apache, on vérifiera que le serveur écoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnalisée).  Dans le fichier //ports.conf// de Apache, on vérifiera que le serveur écoute sur le port standard 443 (ou sur un autre port si on souhaite faire une configuration personnalisée). 
  
 +====Prise en charge des éléments de sécurité====
 Se placer dans le dossier // /etc/apache2/sites-enabled// et ensuite éditer le fichier //000-default.conf// (ou dans // /etc/apache2/httpd.conf//). Se placer dans le dossier // /etc/apache2/sites-enabled// et ensuite éditer le fichier //000-default.conf// (ou dans // /etc/apache2/httpd.conf//).
 <code lscript> <code lscript>
Ligne 139: Ligne 150:
 nano 000-default.conf nano 000-default.conf
 </code> </code>
 +
 On <wrap em>ajoutera</wrap> un hôte virtuel pour cette écoute :  On <wrap em>ajoutera</wrap> un hôte virtuel pour cette écoute : 
 <code apache> <code apache>
Ligne 153: Ligne 165:
 </code> </code>
  
-Il faudra redémarrer Apache, qui indiquera si une erreur éventuelle est rencontrée (dans le chemin, dans le nom du fichier, dans le contenu du certificat, etc).+Il faudra <wrap em>redémarrer Apache</wrap>, qui indiquera si une erreur éventuelle est rencontrée (dans le chemin, dans le nom du fichier, dans le contenu du certificat, etc). 
 +<code lscript>systemctl restart apache2</code>
  
-__Contrôle depuis un navigateur__+====Contrôle depuis un navigateur====
  
 Dans la barre de navigation du navigateur, on tapera [[https://<adresseServeur>]]. Dans la barre de navigation du navigateur, on tapera [[https://<adresseServeur>]].
Ligne 163: Ligne 176:
 Du fait que le certificat que nous avons créé n'est pas garanti par un organisme officiel, le navigateur met en garde sur le manque de confiance accordée à un certificat signé par son créateur.  Du fait que le certificat que nous avons créé n'est pas garanti par un organisme officiel, le navigateur met en garde sur le manque de confiance accordée à un certificat signé par son créateur. 
 On doit vérifier qu'un cadenas fermé au bas du navigateur atteste d'une navigation sécurisée. On doit vérifier qu'un cadenas fermé au bas du navigateur atteste d'une navigation sécurisée.
 +
 +===== Redirection de HTTP vers HTTPS =====
 +Lorsqu'on met en place une sécurisation SSL d'un serveur WEB, il peut être intéressant de laisser possible l'accès HTTP (pour les utilisateurs étourdis), mais en forçant le renvoi vers la version HTTPS. 
 +
 +Pour cela, dans le **//VirtualHost//** du port 80, on ajoutera la ligne suivante : 
 +<code apache>
 +<VirtualHost *:80>
 +//ligne à ajouter en adaptant l adresse du serveur
 +Redirect permanent / https://<IP_ou_FQDN_SERVEUR>/
 +
 +</VirtualHost>
 +</code>
  
 ===== Configuration de ProFTP avec SSL/TLS ===== ===== Configuration de ProFTP avec SSL/TLS =====
  
 +====Activation du module TLS====
 Pour commencer, on devra indiquer dans le fichier ///etc/proftpd/modules.conf// qu'il faut activer TLS Pour commencer, on devra indiquer dans le fichier ///etc/proftpd/modules.conf// qu'il faut activer TLS
  
 <code lscript>LoadModule mod_tls.c</code> <code lscript>LoadModule mod_tls.c</code>
  
-On ira ensuite préciser au fichier //proftpd.conf// d'inclure le fichier de configuration de TLS en dé-commentant la ligne suivante : +On ira ensuite préciser au fichier //proftpd.conf// d'inclure le fichier de configuration de TLS  
 +<code lscript>nano /etc/proftpd/proftpd.conf</code>
  
 +On dé-commentera la ligne suivante : 
 <code apache>Include /etc/proftpd/tls.conf</code> <code apache>Include /etc/proftpd/tls.conf</code>
 +
 +====Prise en charge des éléments de sécurité====
 +La configuration se passe dans le fichier tls.conf:
 +<code lscript>nano /etc/proftpd/tls.conf</code>
  
 Dans ce fichier //tls.conf// on devra trouver au minimum les éléments :  Dans ce fichier //tls.conf// on devra trouver au minimum les éléments : 
 <code apache> <code apache>
 <IfModule mod_tls.c> <IfModule mod_tls.c>
- TLSEngine on #active le TLS + #active le TLS 
- TLSLog /var/log/proftpd/tls.log # dossier pour enregistrer les journaux tls +        TLSEngine on  
- TLSProtocol SSLv23 # versions supportées (2 et 3) +        # dossier pour enregistrer les journaux tls 
- TLSRSACertificateFile /etc/ssl/certs/GSBCertif.crt #chemin du certif + TLSLog /var/log/proftpd/tls.log  
- TLSRSACertificateKeyFile /etc/ssl/private/cleGSB.key # chemin de la clé +        # versions supportées (2 et 3) 
- TLSVerifyClient off # n'oblige pas l'authentification des clients pour TLS + TLSProtocol SSLv23  
- #TLSRequired on # peut obliger les clients à utiliser TLS+        #chemin du certificat 
 + TLSRSACertificateFile /etc/ssl/certs/GSBCertif.crt  
 +        # chemin de la clé 
 + TLSRSACertificateKeyFile /etc/ssl/private/cleGSB.key  
 +        # n'oblige pas l'authentification des clients pour TLS 
 + TLSVerifyClient off  
 +        # peut obliger les clients à utiliser TLS 
 + #TLSRequired on 
 </IfModule> </IfModule>
 </code> </code>
  
 Il faudra bien entendu redémarrer le service //proftpd// qui indiquera si une erreur est rencontrée (dans le chemin, dans le nom du fichier, dans le contenu du certificat, etc). Il faudra bien entendu redémarrer le service //proftpd// qui indiquera si une erreur est rencontrée (dans le chemin, dans le nom du fichier, dans le contenu du certificat, etc).
 +<code lscript>systemctl restart proftpd </code>
  
 ==== Test depuis le client ==== ==== Test depuis le client ====
Ligne 193: Ligne 233:
 On accèdera depuis un client FTP en contactant le serveur par une connexion //FTP SSL/TLS Explicite// (ici sous FileZilla Client). On accèdera depuis un client FTP en contactant le serveur par une connexion //FTP SSL/TLS Explicite// (ici sous FileZilla Client).
  
-{{:clientftp.png?direct|}}+{{ :clientftp.png?direct |}}
  
  
 On rencontrera une mise en garde indiquant que le certificat n'étant pas garanti par un tiers (il est auto-signé). On rencontrera une mise en garde indiquant que le certificat n'étant pas garanti par un tiers (il est auto-signé).
  
-{{:accesnoncertifieftp.png?direct|}}+{{ :accesnoncertifieftp.png?direct |  }}
 ===== Sources ===== ===== Sources =====
  
   * [[http://httpd.apache.org/docs/trunk/fr/ssl/ssl_intro.html]] : sur le site de Apache, une explication détaillée des principes du chiffrement, du rôle d'un certificat, des déclinaisons de SSL/TLS   * [[http://httpd.apache.org/docs/trunk/fr/ssl/ssl_intro.html]] : sur le site de Apache, une explication détaillée des principes du chiffrement, du rôle d'un certificat, des déclinaisons de SSL/TLS
  
ssl.1665412290.txt.gz · Dernière modification : de admin