Mettre en place une connexion SSL avec WAMP
Sommaire
- I. Présentation
- II. Création des clés RSA (privée et publique)
- III. Création du certificat auto-signé
- IV. Création d’un répertoire pour stocker les fichiers nécessaires au SSL
- V. Création d’un répertoire pour stocker les logs de SSL
- VI. Configuration du fichier httpd-ssl.conf
- A. Première modification – Endroit pour stocker le cache des sessions SSL
- B. Deuxième modification - Indiquer le chemin vers le certificat
- C. Troisième modification - Indiquer le chemin vers la clé
- E. Cinquième modification - Configuration de l’hôte virtuelle
- F. Sixième modification – Attribution de propriétés sur le dossier racine
- G. Septième modification – Emplacement du journal des requêtes faites au serveur
- VII. Configuration du fichier httpd.conf
- VIII. Configuration du fichier php.ini
- IX. Copie des deux DLL – libeay32.dll et ssleay32.dll
- X. Test de la connexion sécurisée (HTTPS)
I. Présentation
Ce tutoriel a pour but de vous expliquer comment mettre en place une connexion SSL sur un serveur web réalisé avec le logiciel WAMP. Ce qui vous permettra d’utiliser le protocole HTTPS (HTTP Sécurisé) pour naviguer sur votre site web de manière sécurisé.
Le certificat créé dans ce tutoriel est un certificat auto-signé par le serveur local, il n’est pas signé par un organisme de certification ce qui a pour effet que ce certificat doit être utilisé en interne uniquement c'est-à-dire dans un intranet, par exemple.
Remarque : Dans les différentes commandes, les différents chemins à modifier dans les fichiers, méfiez vous de la version de votre Apache car le nom du dossier change selon la version. Dans notre cas : apache2.2.11.
II. Création des clés RSA (privée et publique)
- Pour se faire nous avons besoins d’utiliser des commandes DOS, ouvrez donc une « Invite de commande ».
- Placez-vous dans le répertoire « bin » d’Apache en utilisant la commande suivante :
cd c:\wamp\bin\apache\apache2.2.11\bin
- Une fois placé dans ce répertoire, exécutez la commande suivante pour créer la clé privée RSA (avec un cryptage AES) :
openssl genrsa -aes256 -out clef.key 2048
clef.key correspond au nom que vous souhaitez donner à votre clé.
- La clé privée se génère…. Ce message apparaît « Enter pass phrase for clef.key : »
Vous devez saisir une passphrase c'est-à-dire un mot de passe qui permet de déchiffrer la clé privée.
- Ensuite, entrez la commande suivante pour créer la clé publique à partir de la clé privée :
openssl rsa -in clef.key -out neoflow.key
Remplacez “neoflow” par le nom de votre serveur, nom de domaine ou par localhost si vous souhaitez essayer uniquement en local. Remplacez aussi «clef.key » par le nom de la clé indiqué lors de l’étape précédente, s’il est différent de notre exemple.
III. Création du certificat auto-signé
- Toujours dans l’invite de commande, exécutez la commande suivante pour créer le certificat à partir de la clé publique du serveur :
openssl req -new -x509 -nodes -sha1 -key neoflow.key -out neoflow.crt -days 365 -config C:\wamp\bin\apache\apache2.2.11\conf\openssl.cnf
Indiquez le nom de la clé publique précédemment créée à la place de neoflow.key, ainsi que pour le nom du certificat (.crt) saisissez le même nom soit le nom correspondant à votre serveur.
Remplacez 365 par le nombre de jours souhaités pour augmenter la durée de validité du certificat.
- Saisie des informations concernant le certificat :
Vous n’êtes pas obligé de tout remplir, vous pouvez vous contenter de remplir le Common Name en mettant le nom du serveur.
IV. Création d’un répertoire pour stocker les fichiers nécessaires au SSL
- Créez un répertoire appelé « ssl » dans :
C:\wamp\bin\apache\apache2.2.11\conf
- Copiez dans ce répertoire votre certificat et votre clé publique (dans notre cas neoflow.crt et neoflow.key).
Ces fichiers se trouvent dans le répertoire : c:\wamp\bin\apache\apache2.2.11\bin
V. Création d’un répertoire pour stocker les logs de SSL
On crée se répertoire, appelé « logs », dans le répertoire ssl précédemment créé : C:\wamp\bin\apache\apache2.2.11\conf\ssl
VI. Configuration du fichier httpd-ssl.conf
Chemin du fichier : c:\wamp\bin\apache\apache2.2.11\conf\extra
A. Première modification – Endroit pour stocker le cache des sessions SSL
- Trouvez la ligne :
SSLSessionCache "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"
- Remplacez la part :
SSLSessionCache "shmcb:C:/wamp/bin/Apache/apache2.2.11/conf/ssl/logs/ssl_scache(512000)"
B. Deuxième modification - Indiquer le chemin vers le certificat
- Trouver la ligne :
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.crt"
- Remplacez la part (en adaptant) :
SSLCertificateFile "C:/wamp/bin/Apache/apache2.2.11/conf/ssl/neoflow.crt"
C. Troisième modification - Indiquer le chemin vers la clé
- Trouver la ligne :
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server.key"
- Remplacez la part (en adaptant) :
SSLCertificateKeyFile "C:/wamp/bin/Apache/apache2.2.11/conf/ssl/neoflow.key"
D. Quatrième modification
- Trouver la ligne :
SSLMutex "file:C:/Program Files/Apache Software Foundation/Apache2.2/conf/ssl/logs/ssl_mutex"
- Remplacer la part :
SSLMutex default
Il est possible que le paramètre soit déjà configure de cette manière.
E. Cinquième modification - Configuration de l’hôte virtuelle
- Trouver le bloc :
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" ServerName localhost:443 ServerAdmin admin@localhost ErrorLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/error_log" TransferLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/access_log"
- Remplacer par (en adaptant) :
DocumentRoot "C:/wamp/www " ServerName neoflow:443 ServerAdmin admin@neoflow ErrorLog "C:/wamp/bin/Apache/apache2.2.11/conf/ssl/logs/ssl_error.log" TransferLog "C:/wamp/bin/Apache/apache2.2.11/conf/ssl/logs/ssl_access.log"
Explication sur les paramètres :
- DocumentRoot : Racine du serveur - par défaut en connexion normale (HTTP:80) cela correspond à c:\wamp\www.
- ServerName : Nom du serveur et de son port d’écoute (HTTPS : 443 – Port standard)
- ServerAdmin : Adresse mail de la personne à contacter en cas de problème.
- ErrorLog : Emplacement du journal d’erreurs.
- TransferLog : Emplacement du journal d’accès.
F. Sixième modification – Attribution de propriétés sur le dossier racine
- Trouver le bloc :
<directory "c:="" program="" files="" apache="" software="" foundation="" apache2.2="" cgi-bin"=""> SSLOptions +StdEnvVars
- Modifier par :
<directory "c:="" wamp="" www"=""> SSLOptions +StdEnvVars Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all
G. Septième modification – Emplacement du journal des requêtes faites au serveur
- Trouver la ligne :
CustomLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
- Remplacer par :
CustomLog "C:/wamp/bin/apache/Apache2.2.x/conf/ssl/logs/ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
VII. Configuration du fichier httpd.conf
Chemin du fichier : c:\wamp\bin\apache\apache2.2.11\conf
A. Inclure le fichier httpd-ssl.conf
Décommentez la ligne « Include conf/extra/httpd-ssl.conf »
B. Activer le chargement du module SSL
Décommentez la ligne « LoadModule ssl_module modules/mod_ssl.so »
VIII. Configuration du fichier php.ini
Chemin du fichier : c:\wamp\bin\php\php5.3.0
A. Activer le chargement du module OpenSSL
Décommentez la ligne « extension=php_openssl.dll »
IX. Copie des deux DLL – libeay32.dll et ssleay32.dll
Cette option peut être facultative, mais par précaution ou en cas de problème si vous ne l’avez pas fait et que ca ne fonctionne pas, copiez ces deux DLL se situant dans :
C:\wamp\bin\apache\apache2.2.11\bin
…Et collez les dans : C:\Windows\System32
X. Test de la connexion sécurisée (HTTPS)
Saisissez dans votre navigateur l’adresse vers votre serveur, précédée de « https:// » et non « http:// ». Si vous arrivez sur votre page index vous avez réussis avec succès ce tutoriel.
Bonjour, moi aussi j’ai tout suivi, avec apache 2.4.39, j’ai regardé plusieurs tutos, tous les commentaires…. et wamp reste orange. Je n’ai strictement rien dans les logs, et pourtant httpd -t dit « syntax OK ».
Je n’ai laissé qu’un VirtualHost même si à terme j’aimerai en avoir plusieurs.
Comment puis-je voir ce qui contrarie apache ?
Bonjour,
J’ai tout suivit cependant dans mon php.ini je n’ai pas l’extension php_openssl.dll, je l’ai donc tapez à la main.
J’ai redémarrez le serveur et lorsque je met https://localhost/ cela m’affiche nous ne pouvons pas accédez à cette page.
Dans mon fichier php.ini j’ai remarqué qu’il y a beaucoup d’extension qui n’y sont pas présentes.
Avez vous une idée ?
Merci
Bonjour,
je cherche à passer mon site en HTTPS dont une partie est sur mon serveur WAMP en local sans succès
Je galère depuis des semaines…
Je suis tombé sur votre article
J’ai bien fait la procédure, mon serveur WAMP est bien en vert
Par contre impossible de faire fonctionner https://localhost
Code d’erreur : SSL_ERROR_RX_RECORD_TOO_LONG
Pour moi mes fichiers de config pour WAMP sont ok car la commande httpd -t retourne OK
Le problème doit venir de mon certificat et/ou de ma clef mais comment résoudre celà ?
Merci de votre aide
Claudio
Fonctionne pas
Ca c’est du commentaire constructif…