Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
pratique:informatique:apache [26/10/2024 19:13] – SSL Zatalyzpratique:informatique:apache [26/10/2024 21:47] (Version actuelle) – [Options propre au proxy] Zatalyz
Ligne 79: 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 "max-age=63072000; includeSubdomains; preload" Header set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
-# S'assurer que X-Forwarded-For est bien passé au backend et que l'ip des clients est transmise 
-RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}" 
 # Supprimer les en-têtes de serveur par défaut pour la sécurité # Supprimer les en-têtes de serveur par défaut pour la sécurité
 Header unset Server Header unset Server
Ligne 116: Ligne 114:
  
 ===== Vhost ===== ===== Vhost =====
-Convention de nommage : ''domaine.conf''. Par exemple ''exemple.org.conf''. On peut mettre le port 80 et 443 sur le même fichier, c'est aussi lisible et si on utilise let's encrypt en standalone, ça va très bien. Ne pas oublier ''sudo a2ensite exemple.org.conf'' puis de recharger apache ensuite.+Convention de nommage : le domaine du site+conf. Par exemple ''exemple.org.conf''. On peut mettre le port 80 et 443 sur le même fichier, c'est aussi lisible et si on utilise let's encrypt en standalone, ça va très bien. 
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 Ici on utilise les macros, ce qui réduit un peu le nombre de trucs à répéter. Il faut activer le module correspondant :  Ici on utilise les macros, ce qui réduit un peu le nombre de trucs à répéter. Il faut activer le module correspondant : 
-  sudo a2enmod macro+ sudo a2enmod macro
 </WRAP> </WRAP>
 +
 <WRAP center round important 60%> <WRAP center round important 60%>
-Ça c'est sur les serveurs backend, pas sur le proxy.+Ça c'est sur les serveurs backend, pas sur les parties proxy.
 </WRAP> </WRAP>
  
-<code txt /etc/apache2/sites-available/common_config.conf> 
-# Les parties "tout le monde pareil" dans les configs apache.  
-<Macro common_config $domain> 
- ServerName $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]+
  
- DocumentRoot /var/www/$domain +<Macro common_config_80 $domain> 
- <Directory /var/www/$domain+# Les parties "tout le monde pareil" dans les configs apache. Pour vhost 80 
- Options FollowSymLinks MultiViews + ServerName $domain
- AllowOverride All +
- Require all granted +
- </Directory>+
  
- Logs + Redirection tout le trafic HTTP vers HTTPS 
- ErrorLog ${APACHE_LOG_DIR}/$domain_error.log + RewriteEngine On 
- CustomLog ${APACHE_LOG_DIR}/$domain_access.log combined+ RewriteCond %{REQUEST_URI!.well-known/acme-challenge 
 + RewriteRule ^(.*)https://%{SERVER_NAME}$1 [R=301,L]
  
- # Configuration SSL avec Let’s Encrypt +</Macro> 
- SSLEngine On +</code> 
- SSLCertificateFile /etc/letsencrypt/live/$domain/fullchain.pem + 
- SSLCertificateKeyFile /etc/letsencrypt/live/$domain/privkey.pem +<code txt /etc/apache2/sites-available/common_config_443.conf> 
-  +<Macro common_config_443 $domain> 
- # Redirection pour les sous-domaines non déclarés +# Les parties "tout le monde pareil" dans les configs apache. Pour vhost 443 
- RewriteEngine On + ServerName $domain 
- RewriteCond %{HTTP_HOST} !^$domain$ [NC] + 
- RewriteCond %{HTTP_HOST!^www\.$domain$ [NC] + # Logs 
- RewriteRule ^ https://$domain%{REQUEST_URI} [L,R=301]+ ErrorLog ${APACHE_LOG_DIR}/$domain_error.log 
 + CustomLog ${APACHE_LOG_DIR}/$domain_access.log combined 
 + 
 + # Configuration SSL avec Let’s Encrypt 
 + SSLEngine On 
 + SSLCertificateFile /etc/letsencrypt/live/$domain/fullchain.pem 
 + SSLCertificateKeyFile /etc/letsencrypt/live/$domain/privkey.pem 
 +  
 + # Redirection pour les sous-domaines non déclarés (à condition d'avoir son DNS bien configuré aussi) 
 + RewriteEngine On 
 + RewriteCond %{HTTP_HOST} !^%{SERVER_NAME}$ [NC] 
 + RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
 </Macro> </Macro>
 </code> </code>
Ligne 163: Ligne 164:
 <code txt /etc/apache2/sites-available/exemple.org.conf> <code txt /etc/apache2/sites-available/exemple.org.conf>
 <VirtualHost *:80> <VirtualHost *:80>
-    # Déclare la macro, son appel et la variable pour le nom de domaine + # Déclare la macro, son appel et la variable pour le nom de domaine 
-    Use common_config exemple.org + Use common_config_80 exemple.org 
-    # Déclare les sous-domaines qui sont en réalité le même site + # Déclare les sous-domaines qui sont en réalité le même site 
-    ServerAlias www.exemple.org+ ServerAlias www.exemple.org
 </VirtualHost> </VirtualHost>
  
 <VirtualHost *:443> <VirtualHost *:443>
-    Use common_config exemple.org + Use common_config_443 exemple.org 
-    ServerAlias www.exemple.org + ServerAlias www.exemple.org 
-    # Si besoin d'alias  + # Si besoin d'alias  
-    Alias /app /var/www/html+ Alias /app /var/www/html 
 + DocumentRoot /var/www/exemple.org 
 + <Directory /var/www/exemple.org/
 + Options FollowSymLinks MultiViews 
 + AllowOverride All 
 + Require all granted 
 + </Directory> 
 +  
 </VirtualHost> </VirtualHost>
- 
 </code> </code>
 +Ne pas oublier 
 +<code>sudo a2ensite common_config_443.conf
 +sudo a2ensite common_config_80.conf
 +sudo a2ensite exemple.org.conf
 +sudo apachectl -t
 +sudo apachectl graceful</code>
  
 ==== Options propre au proxy ==== ==== Options propre au proxy ====
Ligne 182: Ligne 195:
 <WRAP center round todo 60%> <WRAP center round todo 60%>
 Faut revoir, soit dans l'optique "le proxy demande les certifs", soit "le backend les gère". D'un point de vue anonymat c'est mieux si c'est chiffré tout du long mais d'un autre côté la femme du milieu, c'est moi... Faut revoir, soit dans l'optique "le proxy demande les certifs", soit "le backend les gère". D'un point de vue anonymat c'est mieux si c'est chiffré tout du long mais d'un autre côté la femme du milieu, c'est moi...
 +
 +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.
 </WRAP> </WRAP>
  
Ligne 217: Ligne 232:
  
 ===== Certificat ssl ===== ===== Certificat ssl =====
-  sudo apt installe certbot+  sudo apt install certbot
  
 Éteindre apache avant ça (et le rallumer ensuite) : Éteindre apache avant ça (et le rallumer ensuite) :
CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/apache.1729962797.txt.gz · Dernière modification : 26/10/2024 19:13 de Zatalyz