Sélectionner une page

Installer un certificat SSL sous WAMP en local

par | 26/07/2018 | PHP | 9 commentaires

Si vous forcez le protocole HTTPS sur votre site Internet avec un certificat SSL, vous êtes certainement confrontés à la problématique suivante : comment faire tourner votre site en local sur votre installation WAMP ?

Nous allons répondre à cette question en explicitant les différentes étapes d’installation d’un certificat SSL auto-signé sur WAMP, ainsi que les configurations à mettre en œuvre pour autoriser le fonctionnement de HTTPS.

Sommaire :

Note : la version d’apache que j’utilise pour ce tuto est la 2.4.23. Il est possible que vous ayez besoin d’adapter ce tutoriel selon votre propre version.

Avertissement : Vous allez modifier des fichiers de configuration de votre ordinateur. Ne le faites que si vous vous en sentez capables techniquement, je ne pourrais être tenu pour responsable de dommages causés par une utilisation inadaptée de ce tutoriel.

Ce tutoriel indique la manière de générer un certificat SSL en environnement local de test uniquement, il n’est absolument pas adapté à un usage en environnement de production pour des questions de sécurité.

 

1. Création du certificat SSL

1.1 OpenSSL

Nous allons commencer par créer le certificat. Pour ce faire nous allons utiliser OpenSSL, qui devrait déjà être présent sur votre PC suite à l’installation de WAMP. Vous pouvez le vérifier en vous rendant sur :

c:\wamp64\bin\apache\apache2.4.23\bin

Note : J’écris les chemins d’accès tels qu’ils sont présents sur mon poste, n’oubliez-pas de les adapter en fonction de votre disque d’installation ou de votre version d’apache si nécessaire.

Si vous trouvez le fichier openssl.exe, c’est qu’ OpenSSL est installé. Si ce n’est pas le cas, veuillez procéder à son installation avant de continuer ce tutoriel.

Ouvrez la console Windows en lignes de commande (Démarrer, taper Exécuter dans la recherche, puis cmd)

Dans la console, tapez :

cd c:\wamp64\bin\apache\apache2.4.23\bin

Tapez ensuite :

openssl
Il est possible que vous receviez le message suivant :

Warning : can't open config file : c:/usr/local/ssl/openssl.cnf

Cela indique que le fichier de configuration d’OpenSSL n’est pas paramétré.

Entrez dans ce cas les commandes suivantes :

quit #permet de sortir du prompt de OpenSSL

set OPENSSL_CONF=c:\wamp64\bin\apache\apache2.4.23\conf\openssl.cnf

Si cela ne fonctionne pas, vérifiez bien que votre fichier openssl.cnf se trouve à l’endroit que vous indiquez et qu’il porte le même nom.

Pour entrer de nouveau dans le prompt d’OpenSSL, tapez :

openssl

Vous ne devriez plus voir d’erreur.

1.2 Génération de la clé privé

Lancer la commande suivante :

genrsa -out private.key

La clé privé se génèrera dans le dossier racine de l’executable OpenSSL, soit dans mon exemple ici :

c:\wamp64\bin\apache\apache2.4.23\bin

1.3 Génération du certificat

Pour lancer la génération du certificat, il suffira de taper la commande suivante :

req -new -x509 -key private.key -out cert.crt -days 36500

-x509 demande la génération d’un certificat auto-signé, -key est notre clé privée, -out détermine le nom de notre certificat et -days son nombre de jours de validité (ici 100 ans).

Répondez aux questions suivantes qui vous seront posées :

  • Country Name
  • State
  • Locality Name
  • Organization Name
  • Organizational Unit Name
  • Common Name
  • Email Address

Comme nous travaillons en local, les réponses à ces questions ont peu d’importance, mettez ce que vous voulez. Vous pourrez enfin fermer l’invite de commandes.

Le certificat se génèrera dans le même dossier que la clé privée précédemment, à savoir le dossier racine d’OpenSSL.

Récupérez la clé et le certificat (private.key et cert.crt) et posez-les dans un dossier cert que vous aurez préalablement créé dans le dossier conf d’Apache :

c:\wamp64\bin\apache\apache2.4.23\conf\cert

Note : vous pouvez vous référer si besoin au manuel d’OpenSSL pour plus d’informations sur les commandes entrées.

2. Configuration des fichiers

Nous allons à présent configurer certains fichiers d’Apache et de PHP afin de prendre en compte le certificat fraîchement créé.

2.1 Fichier httpd.conf (Apache)

Éditez tout d’abord le fichier httpd.conf présent ici :

c:\wamp64\bin\apache\apache2.4.23\conf\httpd.conf

Cherchez les lignes suivantes :

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

Si elles sont commentées, décommentez-les en supprimant le # en premier caractère.

L’utilité de ces lignes dans notre affaire est la suivante :

  • mod_ssl.so : permet d’ajouter le support SSL et TLS à votre serveur Apache
  • mod_socache_shmcb.so : nécessaire pour le bon fonctionnement du module ci-dessus
  • httpd-ssl.conf : permet l’intégration du fichier de configuration spécifique au SSL

Vérifiez que les lignes suivantes sont également décommentées :

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

2.2 Fichier httpd-ssl.conf (Apache)

Nous allons maintenant modifier le fichier de configuration httpd-ssl.conf. Allez le chercher ici :

c:\wamp64\bin\apache\apache2.4.23\conf\extra\httpd-ssl.conf

Il va falloir adapter le fichier, qui est un fichier modèle, à notre configuration spécifique. Modifiez pour cela les lignes suivantes comme indiqué, en adaptant en fonction de votre propre arborescence de fichiers :

DocumentRoot "c:/wamp64/www/"
ServerName localhost:443 
ErrorLog "c:/wamp64/bin/apache/Apache2.4.23/logs/ssl_error.log"
TransferLog "c:/wamp64/bin/apache/Apache2.4.23/logs/ssl_access.log"
<Directory "c:/wamp64/www">
CustomLog "c:/wamp64/bin/apache/Apache2.4.23/logs/ssl_request.log" \

Il faut ensuite indiquer l’emplacement de la clé privé et du certificat générés précédemment :

SSLCertificateFile "c:/wamp64/bin/apache/Apache2.4.23/conf/cert/cert.crt"
SSLCertificateKeyFile "c:/wamp64/bin/apache/Apache2.4.23/conf/cert/private.key"

2.3 Fichier php.ini (PHP)

Éditez ensuite le fichier php.ini présent ici:

C:\wamp64\bin\php\php7.0.10\php.ini

Faites attention à bien choisir le dossier correspondant à la version de PHP que vous utilisez.

Cherchez la ligne suivante et décommentez-la en enlevant le ; en premier caractère :

extension=php_openssl.dll

Cela permettra d’activer le support d’OpenSSL dans PHP.

3. Testez

La configuration est terminée, redémarrez les services WAMP et testez un accès HTTPS sur l’un de vos sites locaux supportant ce protocole, ou directement sur https://localhost. Un message indiquant que votre connexion n’est pas sécurisée doit s’afficher. C’est tout à fait normal car le certificat que nous utilisons est auto-signé et donc non validé par une autorité de certification reconnue. Il suffira d’ajouter une exception de sécurité dans votre navigateur pour accéder au site.

9 Commentaires

  1. alex2a7

    Bonjour, j’ai suivi votre tuto et j’ai cette erreur quand je lance httpd -t pour tester la configuration :

    AH00526: Syntax error on line 288 of C:/wamp64/bin/apache/apache2.4.33/conf/extra/httpd-ssl.conf:
    CustomLog takes two or three arguments, a file name, a custom log format string or format name, and an optional « env= » or « expr= » clause (see docs)

    La ligne concernée est celle-ci :
    CustomLog « C:/wamp64/bin/apache/Apache2.4.33/logs/ssl_request.log » \

    J’ai regardé d’autre tuto mais je n’ai trouvé aucune solution. Pourriez-vous m’aider ?
    Cordialement

    Réponse
  2. Nicolas

    Bonjour,

    La ligne concernée ne semble pas poser de problème, en tout cas elle ne fait pas remonter d’erreurs sur ma configuration, mais j’ai une version inférieure…

    N’avez-vous pas de paramètres sur la même ligne ou celle du dessous? Ce sont peut-être eux qui posent problème.

    Réponse
    • alex2a7

      Bonjour,
      Non je n’ai rien de cela

      Réponse
  3. Nicolas

    Le message d’erreur indique qu’il vous manque des arguments pour l’utilisation de la commande Customlog (« CustomLog takes two or three arguments, […] »), il vous faut donc les ajouter s’ils ne sont pas présents.

    Ceux que j’utilise pour exemple sont : « %t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \ »%r\ » %b »

    Il vous suffit de les ajouter sur votre ligne 289 (attention de bien remettre en forme les guillemets lors de votre copie).

    Pour info, la liste des paramètres utilisables sont disponibles à l’adresse suivante : http://httpd.apache.org/docs/current/mod/mod_log_config.html

    Réponse
    • alex2a7

      D’accord merci beaucoup

      Réponse
  4. Codea

    Il me semble que le code dans httpd-ssl.conf n’est pas complet, avec une balise manquante. Justement, j’ai voulu mettre en place un SSL pour un VirtualHost, et j’ai dû donner l’accès grâce à Directory. Par ailleurs, j’ai eu la même erreur que alex2a7.

    Voici ce qui a marché chez moi :

    DocumentRoot « C:/Users/XXX/Documents/www/VirtualHost »
    ServerName virtualhost:443
    ServerAdmin dev@example.com
    ErrorLog « c:/wamp/bin/apache/Apache2.4.35/logs/ssl_error.log »
    TransferLog « c:/wamp/bin/apache/Apache2.4.35/logs/ssl_access.log »
    CustomLog « c:/wamp/bin/apache/Apache2.4.35/logs/ssl_request.log » common

    AllowOverride All
    Require local

    J’accède ensuite à https://virtualhost/

    Merci pour le tuto.

    Réponse
    • Nicolas

      Comme je l’ai précisé en commentaire juste au-dessus, je n’ai pas mis la ligne de paramètres de CustomLog dans le tuto, ce qui a certainement mené à la même erreur qu’alex2a7 dans ton cas.

      Merci d’avoir partagé ton code, j’espère que cela pourra aider d’autres qui se trouveront dans le même cas d’utilisation que toi.

      Réponse
  5. Cyrille

    Merci beaucoup ça fonctionne parfaitement et ça me sort d’une belle galère !!

    Réponse
    • Nicolas

      Avec plaisir, merci pour ton retour.

      Réponse

Soumettre un commentaire

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