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 | ||
| pratique:informatique:apache [26/10/2024 16:42] – [Vhost] Zatalyz | pratique:informatique:apache [26/10/2024 21:47] (Version actuelle) – [Options propre au proxy] Zatalyz | ||
|---|---|---|---|
| Ligne 12: | Ligne 12: | ||
| ===== Modules et configuration à activer ===== | ===== Modules et configuration à activer ===== | ||
| - | <WRAP center round todo 60%> | ||
| - | Faut pas mettre un " | ||
| - | </ | ||
| <code txt / | <code txt / | ||
| Ligne 82: | Ligne 79: | ||
| # HSTS (15768000 seconds = 6 months)(63072000 = 24 mois) ; éviter le vol de cookies et le downgrade SSL. | # HSTS (15768000 seconds = 6 months)(63072000 = 24 mois) ; éviter le vol de cookies et le downgrade SSL. | ||
| Header set Strict-Transport-Security " | Header set Strict-Transport-Security " | ||
| + | # Supprimer les en-têtes de serveur par défaut pour la sécurité | ||
| + | Header unset Server | ||
| + | Header unset X-Powered-By | ||
| # Enfin, les CSP permettent de vérifier l' | # Enfin, les CSP permettent de vérifier l' | ||
| # CSP, pour éviter de charger des scripts d' | # CSP, pour éviter de charger des scripts d' | ||
| - | Header set Content-Security-Policy " | + | #Header set Content-Security-Policy " |
| + | </ | ||
| + | |||
| + | <code txt / | ||
| + | ServerName localhost | ||
| </ | </ | ||
| Enfin, activer modules et conf : | Enfin, activer modules et conf : | ||
| sudo a2enmod headers ssl rewrite | sudo a2enmod headers ssl rewrite | ||
| - | sudo a2enconf security tracker | + | sudo a2enconf security tracker |
| sudo apachectl -t | sudo apachectl -t | ||
| sudo apachectl graceful | sudo apachectl graceful | ||
| Ligne 110: | Ligne 114: | ||
| ===== Vhost ===== | ===== Vhost ===== | ||
| - | Convention de nommage : '' | + | Convention de nommage : le domaine |
| <WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
| - | Ici on utilise les macros, | + | Ici on utilise les macros, |
| - | sudo a2enmod macro | + | sudo a2enmod macro |
| </ | </ | ||
| + | <WRAP center round important 60%> | ||
| + | Ça c'est sur les serveurs backend, pas sur les parties proxy. | ||
| + | </ | ||
| - | <code txt / | ||
| - | <Macro my_macro $domain> | ||
| - | < | ||
| - | ServerName $domain | ||
| - | # Déclare les sous-domaines qui sont en réalité le même site | ||
| - | ServerAlias www.$domain | ||
| - | # Redirection tout le trafic HTTP vers HTTPS | + | <code txt /etc/apache2/sites-available/common_config_80.conf> |
| - | RewriteEngine On | + | |
| - | RewriteCond %{REQUEST_URI} !.well-known/acme-challenge | + | |
| - | RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L] | + | |
| - | </VirtualHost> | + | |
| - | <VirtualHost *:443> | + | <Macro common_config_80 |
| - | ServerName | + | # Les parties "tout le monde pareil" |
| - | ServerAlias www.$domain | + | ServerName |
| - | DocumentRoot / | + | # Redirection tout le trafic HTTP vers HTTPS |
| - | # Si besoin d' | + | RewriteEngine On |
| - | # Alias /application | + | RewriteCond %{REQUEST_URI} !.well-known/acme-challenge |
| + | RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L] | ||
| - | <Directory / | + | </Macro> |
| - | Options FollowSymLinks MultiViews | + | </code> |
| - | AllowOverride All | + | |
| - | Require all granted | + | |
| - | </Directory> | + | |
| - | # Logs | + | <code txt /etc/ |
| - | ErrorLog ${APACHE_LOG_DIR}/$domain_error.log | + | <Macro common_config_443 |
| - | CustomLog | + | # Les parties "tout le monde pareil" |
| + | ServerName $domain | ||
| - | # Configuration SSL avec Let’s Encrypt | + | # Logs |
| - | SSLEngine On | + | ErrorLog |
| - | SSLCertificateFile / | + | CustomLog |
| - | SSLCertificateKeyFile / | + | |
| - | + | ||
| - | # Redirection pour les sous-domaines non déclarés | + | |
| - | RewriteEngine On | + | |
| - | RewriteCond %{HTTP_HOST} !^$domain$ [NC] | + | |
| - | RewriteCond %{HTTP_HOST} !^www\.$domain$ [NC] | + | |
| - | RewriteRule ^ https://$domain%{REQUEST_URI} [L,R=301] | + | |
| - | </ | + | |
| - | Use my_macro exemple.org | + | |
| - | Use my_macro exemple.com | + | |
| + | # Configuration SSL avec Let’s Encrypt | ||
| + | SSLEngine On | ||
| + | SSLCertificateFile / | ||
| + | SSLCertificateKeyFile / | ||
| + | |||
| + | # Redirection pour les sous-domaines non déclarés (à condition d' | ||
| + | RewriteEngine On | ||
| + | RewriteCond %{HTTP_HOST} !^%{SERVER_NAME}$ [NC] | ||
| + | RewriteRule ^ https:// | ||
| + | </ | ||
| </ | </ | ||
| + | |||
| + | Et les vhosts par site (à adapter donc au site, prendre les morceaux utiles) : | ||
| + | <code txt / | ||
| + | < | ||
| + | # Déclare la macro, son appel et la variable pour le nom de domaine | ||
| + | Use common_config_80 exemple.org | ||
| + | # Déclare les sous-domaines qui sont en réalité le même site | ||
| + | ServerAlias www.exemple.org | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Use common_config_443 exemple.org | ||
| + | ServerAlias www.exemple.org | ||
| + | # Si besoin d' | ||
| + | Alias /app / | ||
| + | DocumentRoot / | ||
| + | < | ||
| + | Options FollowSymLinks MultiViews | ||
| + | AllowOverride All | ||
| + | Require all granted | ||
| + | </ | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | Ne pas oublier | ||
| + | < | ||
| + | sudo a2ensite common_config_80.conf | ||
| + | sudo a2ensite exemple.org.conf | ||
| + | sudo apachectl -t | ||
| + | sudo apachectl graceful</ | ||
| + | |||
| ==== Options propre au proxy ==== | ==== Options propre au proxy ==== | ||
| a2enmod proxy proxy_http | a2enmod proxy proxy_http | ||
| + | <WRAP center round todo 60%> | ||
| + | Faut revoir, soit dans l' | ||
| + | Mise à jour : de toute façon c'est pas possible avec Apache. Et pas possible de faire un challenge dns automatisé avec bookmyname. Donc, on fera un transfert du certif post-hook. Mais je bidouille ça un autre jour. | ||
| + | </ | ||
| + | |||
| + | Et la config sur la partie proxy : | ||
| + | <code txt / | ||
| + | < | ||
| + | Use common_config exemple.org | ||
| + | ServerAlias www.exemple.org | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Use common_config exemple.org | ||
| + | ServerAlias www.exemple.org | ||
| + | | ||
| + | ProxyRequests Off | ||
| + | ProxyPreserveHost On | ||
| + | ProxyPass / http:// | ||
| + | ProxyPassReverse / http:// | ||
| + | <Proxy *> | ||
| + | Require all granted | ||
| + | < | ||
| + | Require all granted | ||
| + | </ | ||
| + | < | ||
| + | Require all denied | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | </ | ||
| ===== Variables utiles ===== | ===== Variables utiles ===== | ||
| * '' | * '' | ||
| + | ===== Certificat ssl ===== | ||
| + | sudo apt install certbot | ||
| + | |||
| + | Éteindre apache avant ça (et le rallumer ensuite) : | ||
| + | sudo certbot --pre-hook " | ||
| + | |||
| + | Renouvellement en éteignant/ | ||
| + | sudo certbot renew --pre-hook " | ||