[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: un certificat ssl pour chaque vhost



On Mon, Jan 23, 2006 at 12:04:17PM +0100, Jay Ar wrote:
> Bonjour,
>   
>  A ma connaissance, un certificat SSL est lié à une adresse IP (v4),
> sur un serveur web.

C'est faux. Le certificat est lié à un COMMON NAME, c'est-à-dire à un
enregistrement CN qui en plus peut être générique (exemple *.toto.com).

> il n'est pas possible de préciser plusieurs certificats sur un même
> serveur (1 par vhost), qui soient liés à la même adresse IPv4.  D'ailleurs,
> si tu as essayé, apache a du te générer une erreur.

Si, c'est possible. Je le fais chez moi. Mais comme dit deux mails plus
haut, la connexion ssl est établie avec apache *avant* que le nom d'hôte
demandée soit envoyé. Donc une première connexion s'établie forcément
avec comme paramètre le certificat de la connexion par défaut au port
443 (et donc le navigateur râle deux fois : une fois parce que le
certificat est inconnu, ce qui peut se résoudre si les gens acceptent le
certificat, une fois parce que le certificat ne correspond pas au nom
d'hôte demandé, et ça, on n'y peut rien, à mois d'avoir fait un
certificat générique pour tous ses sites web).

Ensuite, j'utilise les paramètres suivants dans le site par défaut:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^.*sitedeux\.org$
    RewriteRule ^/(.*)$ https://www.sitedeux.org:8080/$1 [R,L]
    RewriteCond %{HTTP_HOST} ^.*sitetrois\.org$
    RewriteRule ^/(.*)$ https://www.sitetrois.org:8081/$1 [R,L]
Donc, après avoir établi la connexion SSL (navigateur demandant
d'accepter le certificat pour siteun et navigateur râlant que siteun est
différent de sitedeux), la communication en HTTP se fait et le
navigateur est redirigé vers le port 8080. Sur ce port écoute apache en
HTTPS avec le certificat de sitedeux (et sur le port 8081 avec le
certificat de sitetrois), si bien que là, le navigateur redemande si on
veut bien accepter le certificat (de sitedeux, cette fois-ci), et donne
le bon résultat.

Évidemment, pour les liens qu'on donne, il est préférable de donner
directement l'adresse avec le lien en :8080
(https://www.sitedeux.org:8080/bidule), comme ça, il n'y a pas la phase
stupide où on doit accepter un certificat ne correspondant pas à
sitedeux, accepter de continuer quand même, puis accepter le certificat
de sitedeux. Mais le dispositif indiqué plus haut permet que quelqu'un
qui tape https://www.sitedeux.org/ finisse au bon endroit s'il
persévère (qui est https://www.sitedeux.org:8080/).

J'oubliais: le routeur doit évidemment rediriger aussi de l'extérieur
les ports 8080 et 8081 vers les ports 8080 et 8081.

>   Pour y remédier donc, et comme tu es derrière un routeur, et que ton  serveur est en adressage privé, tu peux essayer de déclarer une IP  secondaire sur ton interface (cas où tu as une seule interface) et lier  chaque vhost à une IP différente. puis configurer le routeur aussi..

Il n'y a pas de nécessité de faire ça: il suffit de changer les ports
utilisés sur la même adresse IP. De plus, vu de derrière le routeur, il
n'y a qu'une seule adresse IP, donc le routeur ne redirigera le port 443
de l'adresse IP externe que vers un unique couple (adresse IP,port).
Comme l'enseigne tout bon cours de réseau.



Reply to: