GNU/Linux >> Tutoriels Linux >  >> Linux

Comment forcer Apache à utiliser HTTPS

Salut les gars ! Dans ce didacticiel, nous allons montrer comment rediriger de force Apache HTTP vers HTTPS

Si vous êtes propriétaire d'un site Web ou administrateur système, il est probable que vous ayez régulièrement affaire à Apache. L'une des tâches les plus courantes que vous effectuerez probablement consiste à rediriger le trafic HTTP vers la version sécurisée (HTTPS) de votre site Web.

Contrairement à HTTP, où les requêtes et les réponses sont envoyées et renvoyées en texte brut, HTTPS utilise TLS/SSL pour chiffrer la communication entre le client et le serveur.

Nous verrons cela de deux manières différentes :

je. Utilisation de l'hôte virtuel.

ii. Utiliser .htaccess

Commençons

Utilisation de l'hôte virtuel

Dans la directive de l'hôte virtuel, vous pouvez spécifier la racine du document du site (le répertoire qui contient les fichiers du site Web), créer une politique de sécurité distincte pour chaque site, utiliser différents certificats SSL, configurer la redirection, et bien plus encore.

Lorsqu'un certificat SSL est installé sur un domaine, vous aurez deux directives d'hôte virtuel pour ce domaine. Le premier pour la version HTTP du site sur le port 80, et l'autre pour la version HTTPS sur le port 443.

Dans les distributions basées sur Red-Hat telles que CentOS et Fedora, les fichiers d'hôtes virtuels sont stockés dans le fichier /etc/httpd/conf.d. Alors que sur Debian et ses dérivés comme Ubuntu, les fichiers sont stockés dans le répertoire /etc/apache2/sites-available répertoire.

Pour rediriger un site Web vers HTTPS, utilisez le Redirect directive comme indiqué avec l'exemple "unixcop.com"

<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

</VirtualHost>

Explication

Expliquons le code ci-dessus

  • VirtualHost *:80 – Le serveur Apache écoute les connexions entrantes sur le port 80 (HTTP) pour le domaine spécifié.
  • VirtualHost *:443 – Le serveur Apache écoute les connexions entrantes sur le port 443 (HTTPS) pour le domaine spécifié.

Le ServerName et ServerAlias Les directives spécifient les noms de domaine de l'hôte virtuel. Assurez-vous de le remplacer par votre nom de domaine. (dans notre cas unixcop.com)

La ligne en surbrillance, Redirect permanent / https://example.com/ à l'intérieur de l'hôte virtuel HTTP, redirige le trafic vers la version HTTPS du site.

En règle générale, vous souhaitez également rediriger la version HTTPS www du site vers la version non www ou vice versa. Voici un exemple de configuration :

<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.unixcop.com'">
    Redirect permanent / https://unixcop.com/
  </If>

</VirtualHost>

Le code ci-dessus vérifie si l'en-tête de la requête contient le domaine www et redirige vers la version non-www.

Chaque fois que vous apportez des modifications aux fichiers de configuration, vous devez redémarrer ou recharger le service Apache pour que les modifications prennent effet

.htaccess est un fichier de configuration par répertoire pour le serveur Web Apache. Ce fichier peut être utilisé pour définir comment Apache sert les fichiers à partir du répertoire où le fichier est placé et pour activer/désactiver des fonctionnalités supplémentaires.

Habituellement, le .htaccess le fichier est placé dans le répertoire racine du domaine, mais vous pouvez avoir d'autres .htaccess fichiers dans les sous-répertoires.

Cette méthode nécessite le mod_rewrite module à charger sur le serveur Apache. Ce module est chargé par défaut sur la plupart des serveurs. Si possible, préférez créer une redirection dans l'hôte virtuel car c'est plus simple et plus sûr.

Pour rediriger tout le trafic HTTP vers HTTPS, ouvrez la racine .htaccess fichier, et ajoutez-y le code suivant

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Explication

  • RewriteEngine On – active les capacités de réécriture.
  • RewriteCond %{HTTPS} off – vérifie la connexion HTTP, et si la condition est remplie, la ligne suivante est exécutée.
  • RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301] – rediriger HTTP vers HTTPS avec le code d'état 301 (Moved Permanently).

L'exemple ci-dessous a une condition supplémentaire qui vérifie si la requête commence par www . Utilisez-le pour forcer tous les visiteurs à utiliser la version HTTPS non-www du site

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Lors de la modification de .htaccess fichier, vous n'avez pas besoin de redémarrer le serveur car Apache lit le fichier à chaque requête.

Donc, vous savez déjà comment forcer Apache à utiliser HTTPS.

Documentation Apache


Linux
  1. Comment j'utilise cron sous Linux

  2. Comment utiliser Nginx pour rediriger

  3. Comment sécuriser Apache avec Lets Encrypt sur Ubuntu 18.04

  4. Comment activer et forcer HTTPS avec Plesk

  5. Comment rediriger automatiquement HTTP vers HTTPS sur les serveurs Apache ?

Comment utiliser la commande PS

Comment utiliser la commande TOP

Comment activer la redirection HTTPS forcée dans cPanel

Comment utiliser Apache SpamAssassin dans cPanel ?

Comment installer Apache sur Ubuntu 20.04

Comment forcer le HTTPS pour mon domaine ?