Mettre en place une connexion SSL avec WAMP

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 :

wamp-ssl1

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.

wamp-ssl2

 

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5500.Voir tous les posts

29 thoughts on “Mettre en place une connexion SSL avec WAMP

  • 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 ?

    Répondre
  • 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

    Répondre
  • 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

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.