OpenSSL

Introduction

OpenSSL est une bibliothèque open source puissante et largement utilisée pour la sécurisation des communications sur les réseaux grâce à la cryptographie.

1. Fonctionnalités principales :

Protocoles cryptographiques :

OpenSSL implémente des protocoles tels que TLS (Transport Layer Security) et SSL (Secure Sockets Layer), bien que SSL soit obsolète en faveur de TLS.

Bibliothèque de chiffrement :

OpenSSL offre un large éventail d’algorithmes cryptographiques :

  • Symétriques : AES, DES, 3DES, RC4.

  • Asymétriques : RSA, DSA, ECC.

  • Hachage : SHA (SHA-1, SHA-256, etc.), MD5.

Génération de clés :

Génération de clés publiques/privées et de paires de clés pour divers algorithmes.

Certificats :

  • Création, gestion, et vérification des certificats X.509.

  • Utilisé pour les certificats SSL/TLS.

Gestion des PKI (Public Key Infrastructure) :

OpenSSL peut être utilisé pour configurer une infrastructure à clés publiques et un CA (Certificate Authority).

Chiffrement et déchiffrement :

Supporte le chiffrement de fichiers ou de messages via des commandes ou des API.

2. Installation :

Sur la plupart des systèmes Linux, OpenSSL est préinstallé.

…​

Sinon, vous pouvez l’installer via votre gestionnaire de paquets :

sudo apt-get install openssl  # Pour Debian/Ubuntu
sudo yum install openssl      # Pour RedHat/CentOS
brew install openssl          # Sur macOS avec Homebrew

3. Commandes courantes :

Vérification de la version d’OpenSSL :

openssl version

Génération de clés RSA :

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

Extraction de la clé publique :

openssl rsa -in private_key.pem -pubout -out public_key.pem

Génération d’une CSR (Certificate Signing Request) :

openssl req -new -key private_key.pem -out request.csr

Génération d’un certificat auto-signé :

openssl req -x509 -days 365 -key private_key.pem -in request.csr -out certificate.crt

Chiffrement d’un fichier :

openssl enc -aes-256-cbc -salt -in fichier.txt -out fichier_encrypted.txt

Déchiffrement d’un fichier :

openssl enc -d -aes-256-cbc -in fichier_encrypted.txt -out fichier_decrypted.txt

4. Concepts avancés :

Chiffrement symétrique vs asymétrique :

  • Symétrique : Une seule clé pour chiffrer et déchiffrer.

  • Asymétrique : Une paire de clés (publique/privée).

TLS/SSL pour sécuriser les sites web :

OpenSSL est utilisé pour générer des certificats et des clés nécessaires pour HTTPS.

Gestion des certificats :

Gestion des fichiers PEM, DER, PFX (PKCS#12) pour les certificats.

Scripts et programmation :

OpenSSL peut être utilisé dans des scripts Bash ou via des API dans divers langages (C, Python, etc.).

5. Cas d’utilisation :

  • Configuration SSL/TLS sur des serveurs web (Apache, Nginx).

  • Sécurisation des communications (VPN, messageries, etc.).

…​

  • Développement d’applications nécessitant de la cryptographie.

  • Test et débogage des connexions HTTPS.