Installer un certificat SSL sous WAMP
14 mar
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 » :
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
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.
Voilà, le certificat est installé avec succès.
Copier certificat.crt dans le dossier « cert »
certificat.crt n’existe pas
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 ?
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.
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
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.
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 ?
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
Bonjour
Essayez de dé-commenter la ligne suivant dans le fichier « httpd.conf »
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
merci, pb resolu
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
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 !
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 »
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.
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.
Merci pour ce TUTO qui marche nickel!!!
Merci à toi Florian;
Avant toi, j’avais essayé bien d’autres tutos, mais rien de bons!
Avec toi, facile et rapide.
Merci.
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…
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.
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.
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
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.
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.
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.
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:
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
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
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 ?
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 …..
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
le https est en rouge et il est barré esk c normal ??
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.
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
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 .
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 ?
bonjour
mon problème est que il me généré le certificat sous le terminal.
je souhaiterais avoir une aide svp
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
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.
Bonjour,
A l’étape openssl req -new -x509 -nodes -sha1 -key private.key
J’ai l’erreur:
Can’t open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory
10356:error:02001003:system library:fopen:No such process:crypto\bio\bss_file.c:74:fopen(‘C:\Program Files\Common Files\SSL/openssl.cnf’,'r’)
10356:error:2006D080:BIO routines:BIO_new_file:no such file:crypto\bio\bss_file.c:81:
unable to find ‘distinguished_name’ in config
problems making Certificate Request
10356:error:0E06D06A:configuration file routines:NCONF_get_string:no conf or environment variable:crypto\conf\conf_lib.c:272:
Que faire pour y remédier ?
Cordialement,