Juin 2007
Sommaire |
1 Principe
L'accès SSL mutualisé de 1and1 permet d'offrir un accès en mode https à votre domaine ou sous-domaine en utilisant un proxy ssl (ssl.1and1.fr) et un certificat commun à l'ensemble des domaines ou sous-domaines.
Cet accès se configure dans la partie | GESTION DU PACK > Configuration des Domaines > Accès SSL Mutualisé | où l'on définit le domaine ou sous-domaine accessible par le proxy.
Remarque : https://sslrelay.com ou https://ssl.1and1.fr sont deux proxys différents qui offrent la même fonctionnalité.
Convention :
- https://ssl.1and1.fr pour désigner le proxy
- mondomaine pour désigner le domaine ou sous-domaine accessible en https à travers le proxy
2 Problème
La configuration à l'aide du gestionnaire de pack ne modifie pas l'accès en http à mondomaine qui est toujours possible.
Le but étant de sécurisé la communication entre le serveur et le client il faut que l'accès en http non sécurisé ne soit plus possible.
3 Solution
Apache dispose d'un moteur de réécriture d'URL que nous allons utiliser.
Pour ce faire, il est nécessaire de pouvoir distinguer les requêtes provenant du proxy des requêtes des autres clients.
Le petit script php suivant lancé en passant par ssl.1and1.fr permet de trouver rapidement ce que nous cherchons :
<?php echo "Nom Client : ".$_SERVER['REMOTE_HOST']." | "; echo "Addresse Client : ".$_SERVER['REMOTE_ADDR']; ?>
En effet, si le nom du proxy est vide nous disposons de son ou ses adresses IP (elle peut varier) qui se trouvent dans une plage d'adresses privées de classe B en 172.23/16. Ces adresses n'étant pas routables sur le réseau Internet la requête provient obligatoirement du réseau "interne" de 1and1 et non de l'extérieur.
3.1 Accès en SSL automatique
Ce qui nous permet de configurer la réécriture suivante dans le fichier .htaccess :
1. RewriteEngine On
2. RewriteCond %{REMOTE_ADDR} !^172\.23\..*$
3. RewriteRule ^(.*) https://ssl.1and1.fr/mondomaine/$1
- on active la réécriture
- si l'adresse du client n'est pas dans la plage 173.23/16
- réécrire l'URL en passant par le proxy (on met l'URL sans le host dans $1 et on l'ajoute au nouvel host)
Dans ce cas les requêtes en http sont systématiquement servies en https.
3.2 Accès en SSL automatique avec Authentification
Si l'on se contente d'utiliser la redirection précédente le navigateur demande l'authentification en http puis est "renvoyé" sur le proxy et l'on doit s'authentifier une deuxième en https. Ce qui pose deux problèmes :
- le mot de passe circule de manière non sécurisée la première fois
- il faut s'authentifier deux fois
La solution consiste donc à bloquer l'accès en http (Erreur 403) et à personnaliser la page d'erreur renvoyée dans le fichier .htaccess pour nous rediriger vers https://ssl.1and1.fr/mondomaine... et forcer l'authentification en https :
# Authentification AuthType Basic AuthUserFile .../.htpasswd AuthName ".:| Espace Sécurisé |:.>" Require user Utilisateur # order nécessaire pour rejet non proxy_ssl avant authentification Order Allow,Deny # plage proxy_ssl Allow from 172.23 # Personnalisation Erreur 403 ErrorDocument 403 https://ssl.1and1.fr/mondomaine...



