Installer un certificat SSL sous WAMP

14 mar

Logo wampserver

Installer un certificat SSL sous un serveur Wamp (Sous Windows donc) est relativement simple et ne prend que quelques minutes, nous allons donc voir ici comment générer un certificat Auto-signé avec OpenSSL et comment l’installer. A noter que cette manipulation ne pourra remplacer un vrai certificat acheté auprès d’une autorité de certification.

Une remarque avant de commencer, selon votre version d’Apache les chemins vers les différents fichiers/dossiers peuvent changer. Cette documentation a été écrite avec Apache2.2.21.

Les premières étapes sont des commandes DOS, la première chose est donc d’ouvrir une invite de commande (Démarrer -> Exécuter -> cmd -> OK)

1 – Se rendre dans le répertoire de d’apache

cd C:\wamp\bin\apache\Apache2.2.21\bin

2 – Générer le la clef privé

On va commencer par générer la clé privée, elle se trouvera dans le fichier « private.key » ici le chiffrage est de 2048bits.

openssl genrsa -aes256 -out private.key 2048

Si vous rencontrez l’erreur « L’ordinal 296 …. SSLEAY32.dll » :

openssl-erreur

La solution est de se rendre sur cette page : http://slproweb.com/products/Win32OpenSSL.html et de télécharger Win32 OpenSSL v1.0.0k Light une fois installé il faut se déplacer dans le répertoire/sous-répertoires d’installation afin de copier les fichiers suivants :

  • ssleay32.dll
  • libeay32.dll
  • openssl.exe

Pour les coller dans le dossier C:\wamp\bin\apache\Apache2.2.21\bin (en confirmant les remplacements). Le problème devrait alors être corrigé et la commande précédente s’exécuter correctement.

3 – Supprimer la passphrase

On va libérer la clé privée de la « passphrase » qui la protège.

openssl rsa -in private.key -out private.key

4 – Générer le certificat auto-signé

Nous allons ici générer le certificat auto-signé qui servira à certifier la connexion et à en chiffrer les échanges.

Ici le certificat sera valide 100 ans, remplacez donc 36500 par le nombre de jours de validité du certificat. Ensuite l’invite de commande vous demandera quelques informations libres à vous de les saisir. Notre certificat portera le nom : « certificat.crt »

openssl req -new -x509 -nodes -sha1 -key private.key
-out certificat.crt -days 36500
-config C:\wamp\bin\apache\apache2.2.21\conf\openssl.cnf

Générer un certificat avec openSSL

5 – Copier le certificat et la clef privée

Maintenant que notre certificat et notre clef privée sont générés il nous faut les stocker sur le serveur. Pour ce faire rendez-vous dans le dossier C:\wamp\bin\apache\Apache2.2.21\conf et créez deux dossiers « cert » et « key ».

  • Copier certificat.crt dans le dossier « cert »
  • Copier private.key dans le dossier « key »

6 – Édition des fichiers de configurations

Afin d’installer notre certificat, nous devons éditer trois fichiers de configuration, les deux premiers permettrons d’activer SSL pour Apache et PHP et le troisième permettra d’installer le certificat sur le serveur.

  • Editer C:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf

Dé-commenter les lignes (enlever le « # ») suivantes :

LoadModule ssl_module modules/mod_ssl.so

et

Include conf/extra/httpd-ssl.conf
  • Editer C:\wamp\bin\php\php5.3.8\php.ini

Dé-commenter la ligne (enlever le « ; ») suivante

extension=php_openssl.dll
  • Editer C:\wamp\bin\apache\Apache2.2.21\conf\extra\httpd-ssl.conf

Rechercher la ligne : <VirtualHost _default_:443>

Sous cette ligne, effectuer les recherche/remplacement suivant :

  • Remplacer la ligne « DocumentRoot … » par :
DocumentRoot "c:/wamp/www/"
  • Remplacer la ligne « ServerName … » par :
ServerName localhost:443
  • Remplacer la ligne « ErrorLog … » par :
ErrorLog "c:/wamp/bin/apache/Apache2.2.21/logs/ssl_error.log"
  • Remplacer la ligne « TransferLog … » par :
TransferLog "c:/wamp/bin/apache/Apache2.2.21/logs/ssl_access.log"
  • Remplacer la ligne « SSLCertificateFile … » par :
SSLCertificateFile "c:/wamp/bin/apache/Apache2.2.21/conf/cert/certificat.crt"
  • Remplacer la ligne « SSLCertificateKeyFile … » par :
SSLCertificateKeyFile "c:/wamp/bin/apache/Apache2.2.21/conf/key/private.key"
  • Remplacer la ligne « <Directory …> » par :
<Directory "c:/wamp/www/">
  • Remplacer la ligne « CustomLog … » par :
CustomLog "C:/wamp/bin/apache/Apache2.2.21/logs/ssl_request.log" \

Voici quelques explication concernant les paramètres que l’on viens de modifier :

  • DocumentRoot : définit le dossier racine du serveur
  • ServerName : définit le nom du serveur et son port d’écoute (443 étant le port SSL par défaut)
  • ErrorLog : définit l’emplacement du journal d’erreur
  • TransferLog : définit l’emplacement du journal des accès
  • SSLCertificateFile : définit l’emplacement du certificat
  • SSLCertificateKeyFile : définit l’emplacement de la clef privée
  • <Directory …> : définit les propriétés sur dossier racine
  • CustomLog : définit l’emplacement du journal des requêtes

7 – Vérifier la configuration

Dans une invite de commande tapez la commande suivante

httpd -t

Ce dernier doit retourner « Syntax OK », si tel n’est pas le cas, il doit y avoir une erreur dans le fichier « httpd-ssl.conf », il faut donc retourner à l’étape précédente et vérifier la configuration.

8 – Redémarrer Wamp

Il faut redémarrer Wamp afin que les différentes modifications soient prises en compte.

9 – L’accès à https://localhost/ doit être possible

Le message suivant nous indique que la connexion n’est pas certifiée, il faut accepter les risques, c’est normal puisque notre certificat est auto-signé. Cette erreur n’apparaîtrait pas si le certificat aurait été acheté auprès d’une autorité de certification.

firefox erreur certificat SSL

Voilà, le certificat est installé avec succès.

39 Réponses pour “Installer un certificat SSL sous WAMP”

  1. maro 13 avril 2013 à 1 h 07 min #

    Copier certificat.crt dans le dossier « cert »
    certificat.crt n’existe pas

    • Florian 13 avril 2013 à 11 h 12 min #

      Bonjour,
      La commande de l’étape 4 a-t-elle été exécutée correctement ?
      Dans mon exemple le certificat est généré dans le répertoire C:\wamp\bin\apache\apache2.2.21\bin\, « certificat.crt » se trouve t-il dedans ? Avez-vous les droits d’écriture sur ce dossier ?

  2. Quentin 30 mai 2013 à 10 h 59 min #

    Bonjour Florian,

    Merci pour ce tuto. Très explicitement rédigé j’ai réussi toutes les étapes avec un soupçon de rigueur. :)

    Néanmoins, je me pose une question et peut-être sauras-tu m’aider puisque tu t’y connais mieux que moi en la matière.

    Je veux adapter mon jeu sur facebook ou autrement dit l’intégrer à facebook, ce n’est pas un secret FB fonctionne uniquement avec des connexions SSL…

    Cependant, quand j’accède comme n’importe quel visiteur à l’adresse https de mon jeu j’obtiens une erreur (oui normale, le certificat n’est pas vérifié me dit mon browser, je veux bien le croire …) mais comment faire pour que mes visiteurs actuels et à venir n’aient pas cette erreur.

    Je prends quelques exemples, j’accède à Google, à FB ou même Paypal je n’ai jamais eu ce type d’erreur. Donc je me demande comment faire vérifier/authentifier mon certificat par les browser ?

    Bien à toi ;)

    Quentin.

    • Florian 30 mai 2013 à 13 h 04 min #

      Bonjour Quentin,

      Cette erreur est normale puisque le certificat est « auto-signé » (nous l’avons créé et signé nous-même). Pour le pas avoir cette erreur, il faut acheter un certificat SSL auprès d’une autorité de certification (OVH, Gandi, etc.). De ce fait, il sera signé par une autorité reconnue et les navigateurs Internet n’afficherons pas d’avertissement.

      Bonne continuation,
      Florian

  3. toufik 12 juin 2013 à 16 h 59 min #

    Bonjour,
    merci pr le tuto, cependant, quand je fini toutes les étapes le service apache ne redémarre pas correctement ? avez vous une idée pourquoi ? merci.

    • Florian 12 juin 2013 à 19 h 26 min #

      Bonjour,

      Êtes vous sûr de ne pas avoir fait de faute de frappe lors de la modifications des fichiers d’Apache ?
      Pouvez-vous me donner l’erreur présente dans les journaux d’erreur de Wamp ?

  4. haythem 11 juillet 2013 à 23 h 25 min #

    merci pour ce tuto, mais j’ai un pb, lors de l’execution de « httpd -t », j’obtiens le message suivant « AH00526: Syntax error on line 76 of C:/wamp/bin/apache/Apache2.4.4/conf/extra/httpd-ssl.conf:
    SSLSessionCache: ‘shmcb’ session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?). »

    Merci d’avance

    • Florian 13 juillet 2013 à 11 h 27 min #

      Bonjour

      Essayez de dé-commenter la ligne suivant dans le fichier « httpd.conf »

      LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

      • haythem 14 juillet 2013 à 14 h 52 min #

        merci, pb resolu

      • Web-Medias 19 septembre 2017 à 11 h 06 min #

        C’est exactement le commentaire que j’allais poser puisqu’en effet, il est nécessaire de charger ce module spécifique pour le cache sous SSL.

        Florian, tu peux éditer ton tuto dans la partie « Editer C:\wamp\bin\apache\Apache2.2.21\conf\extra\httpd-ssl.conf » :)

        Note annexe (aucun lien avec cette réponse) :
        Lors de la génération du certificat, on peut être amené à devoir saisir néanmoins une PassPhrase … même bidon comme ‘azerty’, l’étape d’après la retire !

        Excellent tuto Florian.
        Suivi ce jour en 2017 pour un apache 2.4.23

  5. angela 17 septembre 2013 à 18 h 00 min #

    merci bcp . tt va bien sauf que lorque j’essaye de redémarrer apache il démarre pas , l’icone reste tt le temps orange !

    • Florian 17 septembre 2013 à 18 h 13 min #

      Bonjour,

      Il est probable que vous ayez fait une erreur dans la configuration.
      Regardez le contenu du fichier d’erreurs (error.log) qui se trouve normalement dans « C:\wamp\logs »

      • neo 9 octobre 2013 à 1 h 23 min #

        J’ai eu le même problème que toi et j’ai juste commenté cette ligne dans le fichier httpd-ssl.conf :

        SSLSessionCache « shmcb:c:/Apache24/logs/ssl_scache(512000) »

        J’espère que ça a pu t’aider.

        Et je voudrais dire merci à Florian pour ce tuto, il est trop bien fait. Merci de partager tes efforts.

    • neo 9 octobre 2013 à 2 h 04 min #

      J’ai eu le même problème que toi et j’ai juste commenté cette ligne dans le fichier httpd-ssl.conf :

      SSLSessionCache « shmcb:c:/Apache24/logs/ssl_scache(512000) »

      J’espère que ça a pu t’aider.

      Et je voudrais dire merci à Florian pour ce tuto, il est trop bien fait. Merci de partager tes efforts.

  6. BA 21 octobre 2013 à 11 h 01 min #

    Merci pour ce TUTO qui marche nickel!!!

  7. Abdou D. 22 octobre 2013 à 18 h 15 min #

    Merci à toi Florian;
    Avant toi, j’avais essayé bien d’autres tutos, mais rien de bons!
    Avec toi, facile et rapide.
    Merci.

  8. Leinox 28 novembre 2013 à 9 h 36 min #

    Merci pour ce tuto, qui j’espère va m’aider. J’ai tout de même un problème lorsque je relance wamp. Quand je fait
    C:\wamp\bin\apache\Apache2.4.4\bin>httpd -t
    AH00526: Syntax error on line 76 of C:/wamp/bin/apache/Apache2.4.4/conf/extra/ht
    tpd-ssl.conf:
    SSLSessionCache: ‘shmcb’ session cache not supported (known names: ). Maybe you
    need to load the appropriate socache module (mod_socache_shmcb?)
    J’ajoute le module comme conseillé dans http.conf et syntax OK

    Cependant je n’arrive plus à relancer WAMP maintenant. Aucun message d’erreur, il refuse juste de repasser en ligne…

    • Florian 28 novembre 2013 à 22 h 09 min #

      Bonsoir,

      Je pense que la lecture des fichiers d’erreur Apache (error.log), qui se trouve normalement dans « C:\wamp\logs », devrait vous indiquer la cause de cette anomalie.

  9. Stéphane 21 décembre 2013 à 10 h 36 min #

    Bonjour Florian,

    j’ai suivi le (super) tuto également mais pour un serveur Apache en dehors de wamp, merci.

    J’ai eu besoin de nommer le certificat du nom de mon FQDN et mon CN doit avoir son nom également. Ca c’est bon.

    Q1 : le fichier private.key doit se nommer comme tel ou il pourrait s’appeler toto.key ?
    Q2 : à quoi sert l’appel de openssl.cnf sachant que l’on rempli des paramètres dans la fenêtre DOS ?
    Q3 : j’ai vu sur d’autres sites que l’on est censé importer le certificat avec keytool.exe dans le keystore. Mais vous le faites pas ?

    Stéphane.

    • Florian 21 décembre 2013 à 19 h 23 min #

      Bonjour Stéphane,

      - Oui, la clé privée peut être nommée autrement, il faut alors faire attention à bien renseigner ce nom dans les fichiers de configuration.
      - Le fichier openssl.cnf est le fichier de configuration permettant de générer le certificat. Il contient tous les paramètres par défaut.
      - Je ne connais pas keytool.exe, visiblement il s’agit d’un utilitaire permettant de générer un certificat.

      Florian

  10. Charly 17 janvier 2014 à 16 h 29 min #

    Super tuto. J’en ai cherché pendant des heures avant de tomber sur celui-ci.
    Attention ceci-dit lors de la modification du fichier httpd-ssl.conf, il faut faire bien attention à ce qu’on écrit, une erreur d’un seul caractère, et le serveur apache ne veut pas redémarrer.
    Autre petit point: si les fichiers ssl_request.log, ssl_error.log et ssl_access.log n’existent pas, il faut les créer manuellement, en faisant un nouveau document .txt et en les renommant avec les noms des fichiers log. Sinon, le serveur apache ne redémarrera pas non plus. J’ai mis un peu de temps avant de le comprendre. Mais maintenant ça marche au poil.

  11. MAT5000 19 juin 2014 à 21 h 39 min #

    Bonjour, j’ai un petit problème. À l’étape 3, je ne sais pas ce qu’il faut faire. Après avoir générer la clé prive, la console affiche ceci :
    C:\wamp\bin\apache\apache2.4.9\bin>openssl genrsa -aes256 -out private.key 2048
    WARNING: can’t open config file: C:\vc11_deps\repo\winlibs_openssl/install_x86/o
    penssl.cnf
    Loading ‘screen’ into random state – done
    Generating RSA private key, 2048 bit long modulus
    ………………………….+++
    …………………………………………………………+++
    unable to write ‘random state’
    e is 65537 (0×10001)
    Enter pass phrase for private.key:
    Que faut-il faire après ? Merci d’avance.

    • Florian 23 juin 2014 à 19 h 48 min #

      Bonsoir,

      Il semble avoir un problème dans la configuration d’OpenSSL « openssl.cnf » est introuvable.

      Ensuite, pour l’erreur, cela viens surement du fait qu’openSSL ne peux écrire son fichier « .rnd ».
      Essayez de relancer les commandes avec une invite de commande lancée avec les droits administrateur.

  12. MAT5000 19 juin 2014 à 21 h 44 min #

    Oups, j’ai oublié de préciser que je ne peux rien taper de plus dans l’invite de commande, apres le Enter pass phrase for private.key:

  13. Pirard Bruno 3 août 2014 à 19 h 46 min #

    Bonjour,
    Petite question plus poussée :)
    Dans la dernière version de Wamp (2.5), il faut créé des virtual hosts pour avoir différents sites en local.
    Je voudrais faire tourné deux sites en SSL.
    Le premier est créé et fonctionne.
    Maintenant tu as , donc comment est-il possible de configurer pour avoir un deuxième site en SSL étant donné que, forcément les chemins sont différents ?
    Peut-on créer deux bloc genre
    ET
    ou alors on a qu’un certificat genre localhost qui fonctionne sur les deux virtual hosts ?

    Bruno

    • Florian 3 août 2014 à 20 h 08 min #

      Bonsoir Bruno,

      Les deux sont possibles :
      - Utiliser le même certificat pour plusieurs sites. Dans ce cas la configurer les virtualhost du site A et du site B avec le certificat généré au début de la procédure.
      - Générer deux certificats, avec des noms différents pour les site A et B. Puis configurer chaque virtualhost avec un certificat différent.

      Florian

  14. Pirard Bruno 3 août 2014 à 19 h 49 min #

    Il n’a pas tout copié … Bloc correct

    Maintenant tu as VirtualHost _default_:443, donc comment est-il possible de configurer pour avoir un deuxième site en SSL étant donné que, forcément les chemins sont différents ?
    Peut-on créer deux bloc genre
    VirtualHost host A:443
    ET
    VirtualHost host B:443
    ou alors on a qu’un certificat genre localhost qui fonctionne sur les deux virtual hosts ?

  15. Clément 8 août 2014 à 13 h 47 min #

    Merci pour ce tuto clair, net et précis.

    Par contre, juste un petit conseil pour ceux qui rencontre le problème de lancement apache (icône orange sans erreur) : quittez skype si vous l’avez car il utilise le port 443 aussi …..

    • Florian 8 août 2014 à 16 h 54 min #

      Bonjour Clément,

      C’est exact, j’avais eu le même problème avec Skype (il peut d’ailleurs utiliser le port 80).
      Pour informations : http://stackoverflow.com/a/4705033

  16. yanis 26 novembre 2014 à 21 h 52 min #

    le https est en rouge et il est barré esk c normal ??

    • Florian 26 novembre 2014 à 23 h 14 min #

      Oui car il s’agit un certificat auto-signé ! Il n’a pas été délivré par une autorité de certification reconnue donc votre navigateur vous en avertit.

  17. Ivelfan 26 janvier 2015 à 21 h 25 min #

    Merci beaucoup pour ce tutoriel !

  18. Faustin 30 janvier 2015 à 21 h 34 min #

    Je pense que cela pourrait aider les autres comme ce tuto m’a aidé . Un petit rajout pour la version 2.4.9 pour que cela marche correctement veuillez mettre un # devant SSLSessionCache « dbm:…. » par default il a déjà un # mais pour SSLSessionCache « shmcb:… » ssl ne peut l’utiloser sinon il genère error pour passer cette error un # devant suffit il se trouve C:\wamp\bin\apache\apache2.4.9\extra\conf\httpd-ssl.conf à la ligne 73

  19. Sara 26 avril 2015 à 18 h 29 min #

    Mercii beaucoup ça marche trop bien,comme a dit Faustin pour la version 2.4.9 il faut commenter la ligne SSLSessionCache <> qui se trouve dans le fichier httpd-ssl.conf .

  20. Kenback 10 juillet 2015 à 13 h 33 min #

    Bonjour à tous. J’ai eu un problème lorsque j’ai tapé httpd – t et mon serveur wampp reste ornagé après son démarrage. Que faire ?

  21. lamine 25 février 2016 à 19 h 47 min #

    bonjour
    mon problème est que il me généré le certificat sous le terminal.
    je souhaiterais avoir une aide svp

  22. franfran 2 janvier 2017 à 18 h 20 min #

    Bonjours,
    Aprés avoir tapé « genrsa -aes256 -out private.key 2048″ l’invite de commande me repond que ça a marché et « Enter pass phrase for private.key: ». À ce stade je n’ai plus la main sur l’invite de commande, elle reste bloquée je ne peux rien faire. J’ai essayé avec l’invite admin et l’autre. Quelqu’un a une idée? je suis sous windows 10

    • akhan 20 avril 2017 à 20 h 20 min #

      Bonjour,

      franfran, le curseur ne bouge pas mais la saisie est bien prise en compte. Saisis quelque chose et ça marchera.
      Je suis sous windows 10 aussi.

Trackbacks and Pingbacks

  1. Apache WAMP http PHP | Pearltrees - 19 septembre 2017

    […] and domain hosting. http://Www.nsupdate.info. Public Suffix List. DNSManager. Domaines et DNS – OVH Docs. Installer un certificat SSL sous WAMP – Blog de Florian Bogey. Installer un certificat SSL sous un serveur Wamp (Sous Windows donc) est relativement simple et ne […]

Faire un commentaire