Configuration d'Apache HTTPS/SSL dans Windows
Comment configurer le serveur Web Apache avec un HTTPS/SSL sous le système d'exploitation Windows (XP, 2000 Server, Vista, 7, 2008 Server,...), aussi bien sur un serveur que sur un poste local. Tout d'abord, nous supposons que la version 2 d'Apache est déjà installée.
Afin que le SSL dans le HTTPS fonctionne, nous avons besoin de télécharger (http://httpd.apache.org/download.cgi) et de configurer le binaire inclus avec OpenSSL dans votre «httpd/apache_x.x.x-win32-x86-openssl-x.x.x.msi» dans votre poste de travail ou serveur Windows.
Vous pouvez aussi installer OpenSSL en téléchargeant par exemple «openssl-0.9.8h-1-setup.exe» téléchargeable ici «http://gnuwin32.sourceforge.net/packages/openssl.htm» et en l'installant en mode «Administrateur». Dans les deux cas, si l'opération a fonctionner vous, vous constater en tapant «SET» sous l'interpréteur de commande, la variable «OPENSSL_CONF».
Vérifier que l'OpenSSL à sa variable d'environnement bien configuré
Ouvrir l'interpréteur de commande et taper l'emplacement où est situé les binaires de l'installation d'Apache. Vous aurez donc une commande ressemblant à ceci :
CD "C:\Program Files\Apache Software Foundation\Apache2.2\bin" |
Pour effectuer la création du certificat SSL, nous aurons besoin de l'emplacement du fichier «openssl.cnf». Sur les versions plus anciennes du produit, il est configuré selon une distribution Linux, il faut donc aller changer le chemin pour un chemin Windows. Si cette situation s'applique à vous, vous aurez donc besoin d'ajuster la variable d'environnement Windows «OPENSSL_CONF» afin qu'elle pointe vers un emplacement comme ceci :
Emplacement | Description |
---|---|
C:\Program Files\Apache Software Foundation\Apache2.2\conf\openssl.cnf | Apache 2.2 classiques |
C:\wamp\bin\apache\Apache2.2.14\conf\openssl.cnf | WAMP avec Apache 2.2.14 |
... | ... |
Vous utiliserez donc une commande ceci :
SET OPENSSL_CONF=C:\Program Files\Apache Software Foundation\Apache2.2\conf\openssl.cnf |
Nous assumons que tous les fichiers générés par la commande résident dans le fichier «C:\Program Files\Apache Software Foundation\Apache2.2\bin».
Créer un certificat SSL signé en utilisant OpenSSL
Maintenant que la variable d'environnement est correctement configurée, vous aurez besoin de créer un certificat SSL à l'aide d'OpenSSL en utilisant une commande ressemblant à ceci :
openssl req -new -out server.csr |
Il vous posera quelques questions et vous pouvez ignorer ou simplement répondre :
- PEM pass phrase : Mot de passe associé avec la clef privé que vous allez générer (n'importe quel choix).
- Common Name : Permet d'indiquer un nom complet qualifié associé avec le certificat (exemple www.mondomaine.com)
Maintenant, nous devons supprimer le mot de passe de la clef privée. Le fichier «server.key» créé à partir de la commande suivante doit être lisible seulement à partir du serveur Web apache et de l'administrateur. Vous devez également supprimer le fichier «.rnd» car il contient les informations d'entropie pour créer la clef et pourrait être utilisé pour des attaques cryptographiques contre votre clef privée. Ensuite, tapez la commande suivante :
openssl rsa -in privkey.pem -out server.key |
Maintenant, nous avons besoin d'ajuster la date d'expiration, elle doit être n'importe lequel de votre choix. Nous allons choisir 365 jours :
openssl x509 -in server.csr -out server.cert -req -signkey server.key -days 365 |
Nous avons maintenant un certificat SSL signé prêt à être utilisé. Nous avons besoin de déplacer les fichier de certificat «server.cert» et «server.key» à un emplacement facile à trouver par exemple :
C:\Program Files\Apache Software Foundation\Apache2.2\conf |
Configuration d'Apache pour exécuter SSL/HTTPS
Maintenant que nous avons un certificat SSL signé prêt à utiliser, nous avons besoin de configurer Apache pour démarrer le serveur SSL. Vous devrez donc modifier le fichier de configuration ressemblant à l'emplacement suivant «C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf».
Ouvrir le fichier «conf\httpd.conf» dans un éditeur de texte et rechercher l'emplacement de la ligne suivante :
#LoadModule ssl_module modules/mod_ssl.so |
Et enlever le caractère «#» au début de la ligne, indiquant qu'il s'agit d'une remarque afin qu'il soit maintenant pris en compte de la façon suivante :
LoadModule ssl_module modules/mod_ssl.so |
Cherchez maintenant l'emplacement suivant de la ligne suivante :
#Include conf/extra/httpd-ssl.conf |
Et enlever le caractère «#» au début de la ligne, indiquant qu'il s'agit d'une remarque afin qu'il soit maintenant pris en compte de la façon suivante :
Include conf/extra/httpd-ssl.conf |
Maintenant, nous allons modifier le fichier de configuration «httpd-ssl.conf» indiqué situé par exemple à l'emplacement suivant : «C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-ssl.conf». Nous allons laisser le paramètre par défaut en changeant uniquement les noms de domaines et les chemins d'accès :
<VirtualHost _default_:443> ServerAdmin some@email.com DocumentRoot "Your Root folder location" ServerName www.mondomaine.com:443 ServerAlias mondomaine.com:443 ErrorLog "logs/anyFile-error.log" CustomLog "logs/anyFile-access.log" common SSLEngine on SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.cert" SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key" </VirtualHost> |
ATTENTION ! Assurer vous que vous avez correctement indiqué l'emplacement des fichiers «SSLCertificateFile» et «SSLCertificateKeyFile», car si vous avez une simple petite erreur d'un espace de trop, le chargement du serveur Web plante !
Ouvrir le port HTTPS avec SSL dans Windows
Nous avons besoin de créer une exception dans le mur de feu du système d'exploitation (Windows Firewall) pour le port 443. Pour se faire, nous pouvez aller dans le «Panneau de contrôle» et ajouter un port à la section des exceptions.
Finalisation
Vous devez maintenant redémarrer le serveur Web apache pour que les modifications soient prises en compte.
Remarques
- Seule une connexion SSL par même adresse IP est autorisée. Il s'agit d'une spécification de la conception SSL.
- Les certificats ne peuvent être utilisés que pour des domaines ou des hôtes virtuels et non pour un seul répertoire. Cependant, avec un peu d'intelligence on peut effectuer des redirections, allouer et refuser des dossiers à peu près partout.
Voir également
Référence des opérations
Index des extensions de fichier - Format de fichier: httpd.conf