Depuis Apache 2.2.12, et le support natif du SNI (Server Name Identification), il est possible d’héberger plusieurs sites web sur un seul serveur tout en utilisant différents certificats SSL. Cela vous permet par exemple de protéger différents sous domaines avec plusieurs certificats SSL de classe 1 (qui peuvent être obtenus gratuitement sur StartSSL…) La plupart des navigateurs supportent aujourd’hui le SNI et la mise en place est très simple grâce à ISPConfig 3. Ce post a donc pour objectif de vous guider à travers les étapes nécessaires.
Prérequis
Je suppose dans ce post que vous disposez déjà d’un serveur fonctionnel avec ISPConfig 3 installé et correctement configuré. Je vous invite, si cela n’est pas le cas, à lire mes précédents posts sur la mise en place d’un serveur de ce type: Installation ISPConfig 3 Je vous conseille également de lire l’article suivant: Sécuriser ISPConfig avec un certificat SSL, ce post vous permettra de mettre en place un certificat global pour votre configuration apache et notamment votre accès ISPConfig. Il vous permettra en plus de vous familiariser avec StartSSL qui vous permettra d’obtenir gratuitement vos certificats SSL signés.
Création d’un site web avec un certificat SSL non signé
Dans un premier temps, nous allons créer un site web et son certificat associé (non signé) entièrement via ISPConfig. Rendez vous pour cela dans l’onglet Sitepuis sélectionnez Ajouter un nouveau site. Vous pouvez, bien évidemment, choisir un site déjà existant…
ISPConfig Création Site Web
Entrez les paramètres souhaités, n’oubliez pas de cocher la cas SSL sur la 4ième avant dernière ligne. Cliquez ensuite sur l’onglet SSLvous arrivez sur la page suivante:
Création site ISPConfig, onglet SSL
Cette page vous permet de créer entièrement votre certificat SSL via ISPConfig en créant automatiquement la clé privée, la requête CSR et un certificat (non signé.) Rentrez pour cela les paramètres demandés. (Attention, la traduction ISPConfig en français souffre d’une erreur et la première ligne concerne en réalité l’état ou le département)
Il est inutile de remplir les champs SSL key, Requête SSL, Certificat SSL ou encore SSL Bundle. Choisissez Créer le certificat dans le champ Action SSL puis cliquez sur Enregistrer.
Après plusieurs tutoriels sur l’installation de ISPConfig 3, nous verrons aujourd’hui comment sécuriser une installation ISPConfig avec un certificat signé. (Un second article suivra sous peu pour une procédure permettant d’installer différents certificats signés pour plusieurs sites web gérés par ISPConfig.)
Afin de clarifier un peu les idées et pour comprendre comment fonctionne les différents certificats entre eux, voici un résumé des différents fichiers importants:
clé privée (*.key) Il s’agit comme son nom l’indique d’une clé privée générée par le serveur et qui ne doit jamais être communiquée à l’extérieur. Élément de base des certificats, elle est utilisée pour vérifier l’authentification du serveur.
demande de signature de certificat (*.csr) Afin de pouvoir demander à une autorité de certification de générer un certificat public signé, il est nécessaire de fournir un document différent lié à la clé privé tout en permettant l’authentification du demandeur.
certificat (*.crt) Le certificat à proprement parler sera celui envoyé au client lors d’une requête sécurisée (https ou autre) Il peut être signé localement (mais n’est en général dans ce cas pas reconnu) ou bien généré (et signé) par une autorité de certification reconnue. (Il est alors correctement accepté par les différents navigateurs ou autres logiciels.)
Création de votre clé privée et du CSR
Avant toute chose, il convient donc de (re)créer une clé privée pour votre serveur et un Certificat Signing Request (CSR) qui vous permettra de demander la création d’un certificat signé (celui qui sera vu par les utilisateurs) sans pour autant divulguer votre clé privé. (Ce qui serait une brèche de sécurité importante.)
Penser à effectuer toutes les opérations suivantes en tant que root pour éviter les problèmes.
La génération d’une clé privée et d’un CSR peut se faire lors de l’installation d’ISPConfig. Dans ce cas, et si vous avez renseigné des paramètres corrects lors de l’installation, vous trouverez ces certificats dans le dossier /usr/local/ispconfig/interface/ssl
Shell
1
2
3
4
5
6
7
root@server:/# cd /usr/local/ispconfig/interface/ssl
Si toutefois, vous n’avez pas renseigné les champs de votre certificat correctement ou si vous souhaitez recréer ceux-ci, il existe une manipulation simple pour cela. (Si vous ne savez pas ce que contiennent vos certificats actuels ETque vous n’utilisez pas ces certificats pour d’autres services, je vous conseille fortement de les recréer de la façon suivante:
You are about tobe asked toenter information that will be incorporated
into your certificate request.
Whatyou are about toenter iswhatiscalledaDistinguished Name oraDN.
There are quiteafew fields but you can leave some blank
Forsome fields there will beadefaultvalue,
Ifyou enter'.',the field will be left blank.
-----
Country Name(2letter code)[AU]:FR(votre code pays)
State orProvince Name(full name)[Some-State]:Etat(facultatif)
Locality Name(eg,city)[]:Paris(Votre Ville)
Organization Name(eg,company)[Internet Widgits Pty Ltd]:Nom de votre Compagnie
Organizational Unit Name(eg,section)[]:
Common Name(eg,YOUR name)[]:Votre nom de domaine(utilisépourl'accèsàISPConfig)
Email Address[]:Une adresse mail de contact(si souhaité)
Please enter the following'extra'attributes
tobe sent with your certificate request
Achallenge password[]:Mot de passe associéàvotre CSR
An optional company name[]:
Notez que par cette commande, vous ne recréez pas de fichier .crt Ceci est normal car nous l’obtiendrons par l’autorité de certification.
Vous devez maintenant vous retrouver avec un fichier *.key (votre clé privée) et un fichier *.csr
Nous allons maintenant demander à une autorité de certification de signer notre certificat afin qu’il soit reconnu comme valide par les navigateurs internet et autres logiciels de messagerie.
Vous pouvez vous tourner vers diverses autorité de certification mais il en est une qui permet d’obtenir gratuitement un certificat de classe 1. (Un certicat de classe 1 ne sera pas aussi bien considéré qu’un certificat de classe 2 ou + mais c’est totalement suffisant pour nos besoin, et puis c’est gratuit…
StartSSL
C’est StartSSL qui permet la création gratuite de ces certificats. Rendez vous donc sur leur site: http://www.startssl.com/
Il vous faudra tout d’abord créer un compte sur StartSSL et le valider. Enfin, vous devrez également faire valider le domaine sur lequel pour lequel vous souhaiter créer le certificat. Une fois un domaine valider (e.g. domain.com) vous pourrez créez autant de certificat que vous le souhaitez pour autant de sous domaines choisis. (www.domain.com, webmail.domain.com…) Après 30 jours en revanche, vous devrez revalider le domaine pour créer un certificat. (Les certificats déjà créés restent bien entendu valide pour une durée de 1 an, même si vous ne revalidez pas votre domaine.)
Je ne détaillerai pas dans ce post la création de compte et validation de domaine pour ne pas surcharger cet article, l’aide de StartSSL est plutôt bien faite. N’hésitez pas à poser vos question si nécessaire en commentaires si nécessaire.
Création de votre certificat gratuit de Classe 1
Une fois votre domaine validé, il est temps de créer votre certificat.
Dans l’onglet Certificates Wizard sélectionnez Web Server SSL/TLS Certificatedans le champs Certificate Target
StartSSL Choix du type de certificat
Cliquez sur Continue, vous arrivez sur une page qui ne nous concerne pas car nous disposons déjà d’une clé privée. Cliquez donc sur Skip afin de passer directement à l’étape suivante.
StartSSL, private key
Lors de l’étape suivante, il vous sera demandé de fournir votre CSR. Nous avons dans la première partie de ce post comment l’obtenir. Il vous faut donc recopier intégralement tout le contenu du fichier /usr/local/ispconfig/interface/ssl/ispconfig.csr en incluant les lignes d’en tête et de fin. (—–BEGIN CERTIFICATE REQUEST—– et —–END CERTIFICATE REQUEST—–)
StartSSL, transmission CSR
Lors des étape suivantes, vous devrez choisir le domaine pour lequel sera créé le certificat ainsi qu’un sous domaine. (Par exemple: blupgnup.com et serveur.blupgnup.com)
Notez qu’un certificat de classe 1 ne s’applique pas aux sous domaines. Ainsi le certificat créé vous permettra de sécuriser votre TLD et le sous domaine choisit. Il est donc important de choisir le sous domaine que vous utilisez pour accéder à votre interface ISPConfig dans le cas présent.
Heureusement, StartSSL nous permet de créer autant de certificats de classe 1 qu’on le souhaite pour autant de sous domaines que l’on souhaite protéger. Vous pourrez ainsi par la suite protéger www.votredomaine.com, ftp.votredomaine.com etc. Si en revanche vous souhaitez protéger tous vos domaines avec un seul certificat, il vous faudra un certificat de classe 2, et celui-ci ne sera pas gratuit (le prix n’est toutefois pas excessif.)
StartSSL, choix du sous-domaine
Après quelques instant, votre certificat est généré, vous recevrez également un mail de confirmation. Si vous souhaitez le récupérer à postériori, rendez vous dans l’onglet Toolboxpuis Retrieve certificate.
Comme nous l’avons fait pour le CSR, copier intégralement le contenu du champ présenté. Après avoir fait un backup du certificat original ispserver.crt remplacez tout le contenu du fichier.
Il vous faudra bien veiller à modifier à nouveau votre fichier vhost après une mise à jour d’ISPConfig si celui-ci a été écrasé.
N’oubliez pas de redémarrer apache.
Shell
1
/etc/init.d/apache2 restart
A ce stade, vous pouvez déjà vous connecter en https à votre interface d’administration ISPConfig. Le certificat devrait être correctement accepté par votre navigateur et vous devriez avoir la joie de voir apparaître un magnifique cadenas vert (selon les navigateurs…) Les étapes suivantes sont utile pour configurer les services associés tels que le ftp pour utiliser votre certificat ainsi créé.
Grâce à l’utilisation des dépôts et au package de Web Wack Creations (http://bugs.web-wack.at/), il est possible d’installer Roundcube en quelques clics comme webmail via ISPConfig. L’avantage de cette intégration est double car en plus de simplifier l’installation, le package met automatiquement en place les liens nécessaires pour permettre aux utilisateurs de Roundcube de gérer leurs paramètres tels que le filtrage de mails, le répondeur automatique etc.
Utilisation des dépôts
L’installation de Roundcube va se faire par l’intermédiaire des dépôts. Dans l’onglet Systèmesélectionnez Dépôtdans la section Applications & Plugins.
ISPConfig 3, dépôts
Sélection du dépot
Sélectionner Ajouter une entréedans la fenêtre de sélection entrée le nom et l’url du dépôt. (Laisser les cases Utilisateur et Mot de passe vides.)
Nom: web wack creations url: http://repo.web-wack.at/ispconfig3/
N’oubliez pas de cochez la case Actif puis enregistrez.
Mise à jour des paquets
Sélectionnez à présent paquets dans le menu à gauche puis choisissez update package listafin de mettre à jour la liste des paquets (avec le nouveau dépôt que l’on a sélectionné à l’étape précédente.) Vous devriez voir apparaître un nouveau paquet à savoir Roundcube.
ISPConfig 3, paquets
Installation Roundcube
L’installation de Roundcube à partir de ce point est on ne peut plus simple: Cliquez sur Install Now puis cliquez sur next. Et c’est tout, en deux clics vous avez installé votre accès webmail. Il est dès à présent accessible via l’interface suivante : http://votreserver.com:8081/roundcube/
Il reste toutefois quelques petites modifications à faire afin de le rendre complètement fonctionnel. La première modification à faire est la configuration du serveur:
Il vous faudra pour cela vous connecter en ssh à votre serveur. (oui on n’y échappe rarement très longtemps…)
Shell
1
vi/var/www/apps/roundcube/config/main.inc.php
Modifier la ligne suivante:
Shell
1
$rcmail_config['default_host']='localhost';
Remarque : Si vous souhaitez utiliser plusieurs noms de domaines simultanément, il est préférable de laisser cette ligne de configuration inchangée, à savoir : $rcmail_config[‘default_host’] = »; De cette façon, roundcube choisira automatiquement le bon serveur selon l’adresse mail entrée par l’utilisateur.
Ceci permet de spécifier à Roundcube le serveur à utiliser par défaut lors de la connexion d’un utilisateur. (Vous pourriez spécifier un serveur distant si tel était le cas mais nous resterons dans le cas d’utilisation classique.)
Enfin, si vous avez forcé l’utilisation de https pour l’interface admin ISPConfig, une dernière modification est à effectuer, à savoir modifier le fichier config.inc.php de roundcube.
Changer le port si nécessaire (8080 par défaut, il doit correspondre au port utiliser pour accéder à votre interface d’administration ISPConfig) et spécifiez https:// à la place du http:// sur la ligne de configuration $rcmail_config[‘soap_url’]
Il est également important de désactiver suhosin pour que Roundcube puisse fonctionner correctement. Si tel n’est pas le cas, vous verrez probablement apparaître l’erreur suivante:
ERROR: Wrong ‘suhosin.session.encrypt’ option value. Read REQUIREMENTS section in INSTALL file or use Roundcube Installer, please!
Pour résoudre le problème, il vous faut désactiver suhosin dans apache.
Shell
1
vi/etc/php5/apache2/php.ini
Ajouter les lignes suivantes à la fin du fichier php.ini
Shell
1
2
[suhosin]
suhosin.session.encrypt=Off
N’oubliez pas de redémarrer apache.
Shell
1
/etc/init.d/apache2 restart
Redirection
Votre webmail est à présent disponible et fonctionnel. Toutefois, vous pouvez juger utile de mettre en place une redirection afin de simplifier l’adresse d’accès au webmail. Pour cela, il existe deux solutions.
Redirection simple
Il s’agit de la façon la plus simple de faire. Toutefois, elle présente l’inconvénient de rediriger l’utilisateur vers la première url de façon non transparente. Dans l’onglet Sites, sélectionner le site web sur lequel vous souhaitez faire la redirection puis l’onglet Options. Vous devrez ensuite ajouter dans le cadre directives apache:
Pour effectuer une redirection transparente pour l’utilisateur. (Il ne verra donc plus que l’url qu’il aura entré en premier lieu) il vous faut tout d’abord vous assurer de l’activation de mod_proxy sur votre serveur. Via une console en ssh activez mod_proxy
Shell
1
a2enmod proxya2enmod proxy_http
Si celui-ci était déjà activé, un message vous le fera savoir. Autrement n’oubliez pas de redémarrer votre serveur apache.
Shell
1
/etc/init.d/apache2 restart
Après cela il vous suffit d’ajouter dans les directives apaches du site de votre choix (cf. paragraphe sur la redirection simple)
Vous avez ainsi accès à votre webmail via l’adresse suivante: http://site_web_selectionné/webmail
Interface Roundcube
Pour vous connecter au webmail, il vous faudra avoir au préalable créé votre boite mail. Je vous invite pour cela à suivre la section correspondante sur le tutoriel ISPConfig 3, premiers pas. Enfin, en cas de soucis n’hésitez pas à faire part de vos questions en commentaire, je serais ravi de vous aider. Un tutoriel suivra sur la personnalisation de Roundcube (tel que l’ajout de menu contextuels ou d’autres plugins divers.)