- Configuration SSL et hôtes virtuels (31 mai 2009)
- Configuration SSL et hôtes virtuels : Certificat multivalué (30 juillet 2009)
Le premier article reprenait les bases de la configuration SSL, maintenant nous pouvons vraiment nous attacher au cas des hôtes virtuels par nom, c’est à dire sur la même adresse IP.
Serait-il possible d’avoir deux noms de domaine en accompagnement pour le plat du jour ?
Pour établir la connexion SSL, le serveur présente son certificat, celui-ci doit donc être valide pour tous les noms de domaine qu’il représente. L’idée consiste donc à lister les différents domaines dans le certificat.
Ainsi quelque soit l’hôte virtuel contacté, le serveur répond par le même certificat qui est valide pour tous, et la connexion SSL s’établit.
Monsieur est servi !
C’est très simple, les noms de domaines doivent être listés dans une section du fichier de configuration d’openssl (/etc/ssl/openssl.cnf
) :
[ALIASES] DNS.1 = premier.domaine.tls DNS.2 = second.autre-domaine.tls
Ensuite on lie cette section au champ subjectAltName
:
subjectAltName = @ALIASES
Ceci de préférence dans la section créée pour le service que nous voulons utiliser sur les deux hôtes virtuels. (section [APACHE]
dans l’article précédent.)
La génération et la signature du certificat sont identiques au cas précédent.
openssl req -new -nodes -keyout apache.key.pem -out apache.csr.pem openssl ca -extensions APACHE -days 3650 \ -in apache.csr.pem -out apache.cert.pem openssl x509 -in apache.cert.pem -out apache.stripped.cert.pem
Voila, votre certificat est prêt à être utilisé.
Ici on utilise le champ subjectAltName
qui remplace l’habituel champ commonName
pour spécifier les noms de domaines. J’ai bien dit remplace ! Le champ commonName
est ignoré.
La carte des desserts :
Le dessert du jour : Apache SSL crème d’hôtes virtuels
Pour ce qui est de la configuration d’apache, ne pas oublier d’ajouter la directive NameVirtualHost
, sous Debian, cela se passe dans le fichier /etc/apache2/ports.conf
.
<IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 # well it works with multi-valued certificates anyway :p # but with some warnings in the logs... NameVirtualHost votre-ip:443 </IfModule>
Ensuite la configuration de chaque hôte virtuel pointe sur le même certificat.
(Note : bien utiliser l’adresse IP dans la directive VirtualHost
!)
Ou un café gourmand :
Et bien, le même mécanisme de certificat fonctionne pour le SMTP-TLS avec Postfix.
Pour jabber (j’ai testé sur ejabberd) ça marche aussi ! Mais comme jabber utilise HTTP/HTTPS, rien d’étonnant ici.
Pour imaps, testé sur Dovecot, sans problème.
L’addition s’il vous plait !
Conclusion
Le plus gros du boulot avait été présenté dans le précédent article, et c’est bien dommage d’avoir pris 2 mois avant de détailler cette méthode…
La méthode proposée fonctionne et est assez simple à mettre en place selon moi.
Évidement cela impose de générer un nouveau certificat à chaque ajout d’hôte virtuel à la configuration, mais cela n’arrive pas tous les jours (enfin sur un serveur personnel en tout cas) !
Ensuite, il faudra révoquer l’ancien certificat afin de prévenir les clients que celui ci n’est plus valide, mais ceci sera le sujet du prochain article de ce dossier.
Sources principales
- Une brève de Franck Davy chez HSC : Apache : Hôtes virtuels et SSL (mod_ssl)
Tous les articles du dossier SSL et hôtes vituels
- Configuration SSL et hôtes virtuels (31 mai 2009)
- Configuration SSL et hôtes virtuels : Certificat multivalué (30 juillet 2009)