ssl
Différences
Ci-dessous, les différences entre deux révisions de la page.
Révision précédente | |||
— | ssl [2023/11/30 16:59] (Version actuelle) – [Configuration d'Apache avec SSL/TLS] admin | ||
---|---|---|---|
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 left round box 60%> | ||
+ | - 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é | ||
+ | - 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 ==== | ||
+ | |||
+ | === Mise en place d'un certificat avec OpenSSL === | ||
+ | |||
+ | {{ : | ||
+ | //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> | ||
+ | |||
+ | __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//). | ||
+ | |||
+ | == 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> | ||
+ | |||
+ | __Exemple : créer une clé privée dans le dossier private__ | ||
+ | |||
+ | <code lscript> | ||
+ | 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> | ||
+ | |||
+ | __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' | ||
+ | |||
+ | La configuration nécessite l' | ||
+ | |||
+ | a2enmod ssl | ||
+ | | ||
+ | // | ||
+ | <WRAP center round tip 90%> | ||
+ | Si la commande a2enmod ne fonctionne pas, faire les commandes suivantes : | ||
+ | * cp / | ||
+ | * cp / | ||
+ | * cp / | ||
+ | * systemctl restart apache2 ou service apache2 restart | ||
+ | </ | ||
+ | |||
+ | | ||
+ | **__Contrôle__** | ||
+ | |||
+ | On peut alors voir dans le <wrap em> | ||
+ | |||
+ | <code apache> | ||
+ | |||
+ | Dans le fichier // | ||
+ | |||
+ | 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 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). | ||
+ | |||
+ | __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 adaptantl' | ||
+ | Redirect permanent / https://< | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Configuration de ProFTP avec SSL/TLS ===== | ||
+ | |||
+ | Pour commencer, on devra indiquer dans le fichier /// | ||
+ | |||
+ | <code lscript> | ||
+ | |||
+ | On ira ensuite préciser au fichier // | ||
+ | |||
+ | <code apache> | ||
+ | |||
+ | Dans ce fichier // | ||
+ | <code apache> | ||
+ | < | ||
+ | TLSEngine on #active le TLS | ||
+ | TLSLog / | ||
+ | TLSProtocol SSLv23 # versions supportées (2 et 3) | ||
+ | TLSRSACertificateFile / | ||
+ | TLSRSACertificateKeyFile / | ||
+ | TLSVerifyClient off # n' | ||
+ | # | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 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). | ||
+ | |||
+ | ==== 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:// | ||