web_server_-_https_grade_a
                Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| web_server_-_https_grade_a [2024/02/26 17:08] – Gary | web_server_-_https_grade_a [2024/03/06 21:46] (Version actuelle) – supprimée Gary | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Web server - HTTPS grade A ====== | ||
| - | <WRAP center round info 100%> | ||
| - | Date: 2022 | ||
| - | Installation faite sur Debian 11 | ||
| - | </ | ||
| - | |||
| - | <WRAP center round important 100%> | ||
| - | La configuration restreint les navigateurs utilisables | ||
| - | - Internet Explorer 11* | ||
| - | - Chrome 70 | ||
| - | - Firefox 63 | ||
| - | </ | ||
| - | |||
| - | Objectif de cette article: Obtenir un serveur répondant en HTTPS from scratch avec un grade A+ | ||
| - | |||
| - | ===== Pré-requis: | ||
| - | Debian 11 ([[debian_11_-_perfect_server|Voir cet article]]) | ||
| - | |||
| - | Note: On partira d'un serveur vierge avec uniquement le package apache2 d' | ||
| - | |||
| - | ===== Activation SSL sur Apache2 ===== | ||
| - | |||
| - | Il est nécessaire d' | ||
| - | <code bash [enable_line_numbers=" | ||
| - | # / | ||
| - | Listen 80 | ||
| - | Listen 443 | ||
| - | </ | ||
| - | |||
| - | Quelques mods à activer: | ||
| - | <code bash [enable_line_numbers=" | ||
| - | a2enmod ssl | ||
| - | a2enmod headers | ||
| - | a2enmod http2 | ||
| - | </ | ||
| - | |||
| - |   * Liste à pucemod_ssl: | ||
| - |   * mod_headers: | ||
| - |   * http2: Plus rapide que HTTP/1.1, élimite d' | ||
| - | |||
| - | ===== Certbot ===== | ||
| - | Source: https:// | ||
| - | |||
| - | <code bash [enable_line_numbers=" | ||
| - | # Installation de snapd | ||
| - | apt install snapd | ||
| - | snap install core | ||
| - | snap refresh core | ||
| - | |||
| - | # Installation de certbot | ||
| - | snap install --classic certbot | ||
| - | ln -s / | ||
| - | |||
| - | # On configure Let's Encrypt pour notre serveur: | ||
| - | certbot --apache | ||
| - | </ | ||
| - | |||
| - | <WRAP safety> | ||
| - | ✅ A partir d'ici, notre site devrait être en HTTPS certifié Let's Encrypt avec une configuration déjà correct faite par Certbot | ||
| - | </ | ||
| - | |||
| - | Le renouvellement se fait automatiquement, | ||
| - | |||
| - | ==== Modifications constatée dans la configuration Apache2: ==== | ||
| - | ''/ | ||
| - | <code bash [enable_line_numbers=" | ||
| - | < | ||
| - | # ... | ||
| - | SSLEngine on | ||
| - | |||
| - |     SSLCertificateFile  | ||
| - |     SSLCertificateKeyFile / | ||
| - |     Include / | ||
| - | # ... | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | ===== Amélioration de la sécurité ===== | ||
| - | Source: https:// | ||
| - | |||
| - | On se base sur une configuration " | ||
| - | |||
| - | ==== Redirection HTTP vers HTTPS. ==== | ||
| - | **Note**: Cette manipulation n'est pas idéale car du man-in-the-middle est toujours possible le temps de la redirection vers HTTPS | ||
| - | |||
| - | **Note2**: Le port 80 ne peut pas être fermé car (historiquement ?) le fichier .well-known-challenge utilisé par Let's Encrypt passe par HTTP | ||
| - | |||
| - | ''/ | ||
| - | <code bash [enable_line_numbers=" | ||
| - | < | ||
| - | # ... | ||
| - | RewriteEngine On | ||
| - |     RewriteCond %{REQUEST_URI} !^/ | ||
| - |     RewriteRule ^(.*)$ https:// | ||
| - | # ... | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | ''/ | ||
| - | <code bash [enable_line_numbers=" | ||
| - | < | ||
| - | # ... | ||
| - |      | ||
| - | # Activation de HTTP/2, rétrocompatibilité vers HTTP/1.1 si besoin (mod_http2 | ||
| - | Protocols h2 http/1.1 | ||
| - | |||
| - | # Activation du HTTP Strict Transport Security (mod_header) | ||
| - |     Header always set Strict-Transport-Security " | ||
| - | # ... | ||
| - | </ | ||
| - | |||
| - | # OCSP Stapling - https:// | ||
| - | SSLUseStapling On | ||
| - | SSLStaplingCache " | ||
| - | </ | ||
| - | |||
| - | ==== Modification du chiffrement ==== | ||
| - | On a remarqué précédemment que Certbot a créé un fichier de configuration des options SSL, on modifiera là dedans. | ||
| - | |||
| - | ''/ | ||
| - | <code bash [enable_line_numbers=" | ||
| - | # ... | ||
| - | # SSLProtocol  | ||
| - | SSLProtocol  | ||
| - | # | ||
| - | SSLCipherSuite  | ||
| - | # ... | ||
| - | </ | ||
| - | |||
| - | 2 changements ici : | ||
| - | |||
| - |   * Support de TLSv1.2 et TLSv1.3\\ **Note**: curl 7.83.1 ne supporte pas TLSv1.3\\ **Note2**: Internet Explorer 11 ne supporte pas TLSv1.3\\ https:// | ||
| - | * Désactivation des protocoles DHE-RSA-AES128-GCM-SHA256 et DHE-RSA-AES256-GCM-SHA384\\ DH (Diffie Hellman) est déprécié par rapport à Eliptic Curve Diffie-Hellman (ECDH) | ||
web_server_-_https_grade_a.1708963710.txt.gz · Dernière modification :  de Gary
                
                