Apache : VirtualHost Simple (HTTPS)
Description
Configuration VirtualHost Apache de base pour servir un site (statique ou PHP) sur un domaine spécifique via HTTPS. Inclut la redirection automatique de HTTP vers HTTPS et des en-têtes de sécurité HTTP recommandés.
Points Clés : Remplacez example.com
par votre nom de domaine et /path/to/your/site/public_html
par le chemin réel vers vos fichiers. Les chemins des certificats SSL sont ceux typiquement générés par Certbot (Let's Encrypt). N'activez l'en-tête `Strict-Transport-Security` (HSTS) qu'après avoir vérifié que votre configuration HTTPS est stable et fonctionnelle.
Code
# /etc/apache2/sites-available/example.com.conf
# Redirection de HTTP (port 80) vers HTTPS (port 443)
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
RewriteEngine On
# Redirige toutes les requêtes vers HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>
# Configuration principale pour HTTPS (port 443)
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /path/to/your/site/public_html # Chemin vers les fichiers du site
# Activer SSL/TLS
SSLEngine On
# Chemins vers les certificats (générés par Let's Encrypt/Certbot typiquement)
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# Inclure les paramètres SSL recommandés par Certbot/Mozilla
Include /etc/letsencrypt/options-ssl-apache.conf
# Fichiers journaux (logs)
ErrorLog ${APACHE_LOG_DIR}/example.com-ssl-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-ssl-access.log combined
# Configuration du répertoire racine du site
<Directory /path/to/your/site/public_html>
# Options de base : suivre les liens symboliques, désactiver le listage de répertoire
Options FollowSymLinks -Indexes
# Autoriser les directives dans les fichiers .htaccess (si besoin)
# AllowOverride All
# Autoriser toutes les requêtes entrantes
Require all granted
</Directory>
# Ajout d'en-têtes de sécurité HTTP (bonnes pratiques)
<IfModule mod_headers.c>
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none';" # Exemple CSP (à adapter !)
# Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" # Activer HSTS après tests !
</IfModule>
# Activer la compression Gzip pour améliorer les performances
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
</VirtualHost>
N'oubliez pas d'activer les modules Apache nécessaires (ssl
, rewrite
, headers
, deflate
) et le site (a2enmod module_name
, a2ensite config_file
), puis de recharger Apache (systemctl reload apache2
).