Différences
Ci-dessous, les différences entre deux révisions de la page.
| Révision précédente | |||
| — | ssl [2025/02/15 12:16] (Version actuelle) – [Redirection de HTTP vers HTTPS] administrateur | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Sécurisation des applications avec SSL ====== | ||
| + | |||
| + | ===== SSL/ | ||
| + | |||
| + | Parmi les outils susceptibles de garantir le cryptage, //SSL (Secure Socket Layer : Couche de socket sécurisé)//, | ||
| + | |||
| + | Il s' | ||
| + | |||
| + | Il supporte les // | ||
| + | |||
| + | //TLS (Transport Layer Security)// est le nom du protocole depuis 2001, qui remplace la version 3.1 de SSL. Il est maintenant défini par l'// | ||
| + | |||
| + | La mise en place d'un service sécurisé par SSL/TLS permettra d' | ||
| + | |||
| + | |||
| + | ==== Procédure ==== | ||
| + | |||
| + | 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' | ||
| + | <WRAP center round box 80%> | ||
| + | Créer le répertoire pour stocker les clés et certificats | ||
| + | - Créer la clé privée | ||
| + | - Créer le certificat X509 à partir de la clé privée en renseignant toutes les informations demandées | ||
| + | - Paramétrer le service concerné (apache, proftpd, etc) | ||
| + | * activer le module, | ||
| + | * configurer les fichiers pour qu'ils utilisent la clé et le certificat | ||
| + | * mettre en écoute sur les ports spécifiques | ||
| + | * redémarrer le service pour prendre en compte les modifications | ||
| + | - Tester depuis un client en lui indiquant l' | ||
| + | * Éventuellement, | ||
| + | </ | ||
| + | |||
| + | ===== Mode opératoire ===== | ||
| + | |||
| + | {{ : | ||
| + | //OpenSSL// est une transposition //Open Source// ([[http:// | ||
| + | |||
| + | Le nom est resté //OpenSSL// mais la bibliothèque supporte aussi la version TLS. | ||
| + | |||
| + | //OpenSSL// gère de nombreux <wrap em> | ||
| + | |||
| + | ==== Installation des outils ==== | ||
| + | |||
| + | __Installer la bibliothèque OpenSSL__ | ||
| + | <code lscript> | ||
| + | |||
| + | __Installer les outils de manipulation des éléments de sécurité__ | ||
| + | <code lscript> | ||
| + | |||
| + | Cet outil propose notamment des commandes pour la création de clé secrète (//gendh//, //genrsa//, ...) ou la génération de certificat (//x509//). | ||
| + | |||
| + | ==== Mise en place d'un certificat avec OpenSSL ==== | ||
| + | |||
| + | === 1 : Création d'une clé privée === | ||
| + | |||
| + | La base des techniques de <wrap em> | ||
| + | Elle permettra de créer une **//clé publique// | ||
| + | |||
| + | On utilisera (pour l' | ||
| + | <code lscript> | ||
| + | |||
| + | <WRAP center round info 100%> | ||
| + | __Exemple : créer une clé privée dans le dossier private__ | ||
| + | |||
| + | {{ : | ||
| + | cd / | ||
| + | openssl genrsa -out cleGSB.key 2048 | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | 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). | ||
| + | |||
| + | === 2 : Création d'un certificat X509 === | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | <wrap em>La clé privée ne doit jamais être diffusée</ | ||
| + | </ | ||
| + | On va donc générer la **//partie publique// | ||
| + | |||
| + | Pour que ce dernier soit accessible aux navigateurs, | ||
| + | |||
| + | Les certificats sont à stocker dans le dossier **// | ||
| + | |||
| + | La création va donc passer par deux étapes : | ||
| + | |||
| + | * Création d'un d'une <wrap em> | ||
| + | si la signature est faite par la même machine que la demande, le <wrap em> | ||
| + | </ | ||
| + | <code lscript> | ||
| + | |||
| + | * signature et création du certificat au X509 | ||
| + | |||
| + | <code lscript> | ||
| + | |||
| + | <WRAP center round info 100%> | ||
| + | __Exemple : création d'un certificat dans le dossier des certificats SSL à partir de la clé RSA__ | ||
| + | <code lscript> | ||
| + | cd / | ||
| + | openssl req -new -key ../ | ||
| + | openssl x509 -req -days 365 -in GSBCertGen.csr -signkey ../ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | <WRAP right round important 30%> | ||
| + | Penser à adapter les valeurs à votre environnement | ||
| + | </ | ||
| + | |||
| + | Le certificat est alors prêt. | ||
| + | |||
| + | Il reste à configurer les services susceptibles de s' | ||
| + | |||
| + | |||
| + | ===== Configuration d' | ||
| + | |||
| + | ====Activation du module SSL==== | ||
| + | La configuration nécessite l' | ||
| + | |||
| + | <code lscript> a2enmod ssl</ | ||
| + | | ||
| + | // | ||
| + | <WRAP center round tip 90%> | ||
| + | <wrap em>Si la commande a2enmod ne fonctionne pas</ | ||
| + | * cp / | ||
| + | * cp / | ||
| + | * cp / | ||
| + | * systemctl restart apache2 ou service apache2 restart | ||
| + | </ | ||
| + | |||
| + | | ||
| + | <WRAP center round <WRAP center round info 90%> | ||
| + | |||
| + | **__Contrôle__** | ||
| + | |||
| + | On peut alors voir dans le <wrap em> | ||
| + | |||
| + | <code apache> | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | Dans le fichier // | ||
| + | |||
| + | ====Prise en charge des éléments de sécurité==== | ||
| + | Se placer dans le dossier // / | ||
| + | <code lscript> | ||
| + | cd / | ||
| + | nano 000-default.conf | ||
| + | </ | ||
| + | |||
| + | On <wrap em> | ||
| + | <code apache> | ||
| + | #on adaptera le numéro de port conformément à ce qui a été écrit dans ports.conf | ||
| + | < | ||
| + | DocumentRoot / | ||
| + | # active le SSL | ||
| + | SSLEngine on | ||
| + | # chemin du certificat X509 | ||
| + | SSLCertificateFile / | ||
| + | # chemin de la clé privée | ||
| + | SSLCertificateKeyFile / | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Il faudra <wrap em> | ||
| + | <code lscript> | ||
| + | |||
| + | ====Contrôle depuis un navigateur==== | ||
| + | |||
| + | Dans la barre de navigation du navigateur, on tapera [[https://< | ||
| + | |||
| + | {{: | ||
| + | |||
| + | 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. | ||
| + | |||
| + | ===== Redirection de HTTP vers HTTPS ===== | ||
| + | Lorsqu' | ||
| + | |||
| + | Pour cela, dans le **// | ||
| + | <code apache> | ||
| + | < | ||
| + | //ligne à ajouter en adaptant l adresse du serveur | ||
| + | Redirect permanent / https://< | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Configuration de ProFTP avec SSL/TLS ===== | ||
| + | |||
| + | ====Activation du module TLS==== | ||
| + | Pour commencer, on devra indiquer dans le fichier /// | ||
| + | |||
| + | <code lscript> | ||
| + | |||
| + | On ira ensuite préciser au fichier // | ||
| + | <code lscript> | ||
| + | |||
| + | On dé-commentera la ligne suivante : | ||
| + | <code apache> | ||
| + | |||
| + | ====Prise en charge des éléments de sécurité==== | ||
| + | La configuration se passe dans le fichier tls.conf: | ||
| + | <code lscript> | ||
| + | |||
| + | Dans ce fichier // | ||
| + | <code apache> | ||
| + | < | ||
| + | #active le TLS | ||
| + | TLSEngine on | ||
| + | # dossier pour enregistrer les journaux tls | ||
| + | TLSLog / | ||
| + | # versions supportées (2 et 3) | ||
| + | TLSProtocol SSLv23 | ||
| + | #chemin du certificat | ||
| + | TLSRSACertificateFile / | ||
| + | # chemin de la clé | ||
| + | TLSRSACertificateKeyFile / | ||
| + | # n' | ||
| + | TLSVerifyClient off | ||
| + | # peut obliger les clients à utiliser TLS | ||
| + | # | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | 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> | ||
| + | |||
| + | ==== Test depuis le client ==== | ||
| + | |||
| + | On accèdera depuis un client FTP en contactant le serveur par une connexion //FTP SSL/TLS Explicite// (ici sous FileZilla Client). | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | On rencontrera une mise en garde indiquant que le certificat n' | ||
| + | |||
| + | {{ : | ||
| + | ===== Sources ===== | ||
| + | |||
| + | * [[http:// | ||