Comment configurer Apache HTTP avec un certificat SSL ?



Renforçons la sécurité d’Apache avec un certificat SSL/TLS.

Une fois le certificat mis en œuvre, le nom de domaine ou l’adresse IP configurée deviendra accessible via le protocole HTTPS.

Commençons sans plus tarder.

Globalement, voici les étapes que nous allons suivre :

  • Compilation d’Apache HTTP 2.4.5 avec le module SSL.
  • Acquisition d’un certificat SSL.
  • Configuration d’Apache pour la prise en charge de SSL.

Installation d’Apache avec SSL à partir des sources

Pour activer SSL, Apache HTTP doit être compilé avec le module mod_ssl. Pour cette démonstration, j’utiliserai une machine virtuelle CentOS 7 fournie par DigitalOcean.

  • Connectez-vous à votre serveur Linux en tant qu’administrateur (root) et téléchargez la dernière version d’Apache.
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .

Note : Vous pouvez vérifier la dernière version disponible ici.

  • Extrayez l’archive à l’aide de la commande gunzip.
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
  • Un nouveau répertoire nommé « httpd-2.4.25 » sera créé.
  • Naviguez à l’intérieur de ce répertoire et exécutez la commande de configuration suivante.
./configure --enable-ssl --enable-so

Note : Si vous effectuez cette opération sur un serveur nouvellement installé, vous pourriez rencontrer des problèmes liés à APR, PCRE ou OpenSSL. Dans ce cas, consultez le guide de dépannage approprié.

Assurez-vous que la commande de configuration ci-dessus ne retourne aucune erreur. Ensuite, procédez à l’installation en utilisant les commandes make.

make 
make install

Comme d’habitude, assurez-vous qu’il n’y a pas d’erreurs lors de l’exécution des commandes. Si tout s’est déroulé correctement, vous avez installé un serveur web Apache avec le support SSL.

Obtention d’un certificat SSL

Il existe plusieurs méthodes pour générer et obtenir un certificat SSL signé par une autorité de certification (CA).

Si votre objectif est d’implémenter SSL sur un serveur web interne à votre réseau (intranet), il est probable que votre organisation dispose d’une équipe interne chargée de l’émission des certificats. Contactez-les pour obtenir de l’aide. Vous devrez néanmoins générer une requête de signature de certificat (CSR), ce que vous pouvez faire avec OpenSSL.

Cependant, si vous cherchez à sécuriser une URL accessible sur Internet, vous avez la possibilité d’acheter un certificat auprès de fournisseurs comme VeriSign, GoDaddy, Namecheap, ZeroSSL, etc. Vous pouvez également opter pour un certificat GRATUIT fourni par Let’s Encrypt.

Let’s Encrypt est un projet collaboratif de la Linux Foundation qui propose des certificats SSL/TLS GRATUITS. J’utiliserai Let’s Encrypt pour obtenir un certificat pour mon domaine : Chandan.io.

Il existe différentes manières de générer une CSR, mais la méthode la plus simple que j’ai trouvée consiste à utiliser l’outil en ligne « SSL For FREE« .

Saisissez l’URL que vous souhaitez sécuriser.

Validez la propriété du domaine en utilisant l’une des méthodes proposées et téléchargez les fichiers de certificat correspondants.

Vous recevrez trois fichiers que nous utiliserons ensuite pour configurer le serveur web Apache :

  • clé : c’est votre fichier de clé privée, qui ne doit jamais être partagé publiquement.
  • certificat : le certificat SSL effectif pour votre domaine.
  • ca_bundle : le certificat racine/intermédiaire de l’autorité de certification.

Transférez les fichiers téléchargés sur votre serveur web. Nous en aurons besoin dans les prochaines étapes.

Configuration SSL d’Apache

La dernière étape consiste à configurer Apache pour qu’il puisse répondre aux requêtes via HTTPS.

  • Connectez-vous à votre serveur web Apache.
  • Effectuez une sauvegarde du fichier httpd.conf (l’emplacement par défaut est /usr/local/apache2/conf/).
  • Ouvrez le fichier avec un éditeur de texte (par exemple, vi) et vérifiez que les modules mod_ssl et httpd-ssl.conf existent et ne sont pas commentés.
LoadModule ssl_module modules/mod_ssl.so 
Include conf/extra/httpd-ssl.conf

Nous utiliserons le fichier httpd-ssl.conf pour spécifier les détails du certificat. Vous devez vous assurer que les éléments suivants sont correctement configurés :

  • SSLCertificateFile : le chemin d’accès au fichier CRT du certificat que vous avez téléchargé.
  • SSLCertificateKeyFile : le chemin d’accès au fichier de la clé privée.
  • SSLCertificateChainFile : le chemin d’accès au fichier ca_bundle.crt.

Conseil : Vous pouvez créer un nouveau répertoire appelé « ssl » et y stocker tous les fichiers liés aux certificats.

  • Effectuez une sauvegarde si nécessaire et modifiez le fichier en utilisant un éditeur de texte.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"

Ensuite, configurez la directive « ServerName ». Généralement, il s’agit de votre nom de domaine ou URL.

ServerName chandan.io
  • Enregistrez le fichier et redémarrez le serveur web Apache.
cd /usr/local/apache2/bin 
./apachectl stop 
./apachectl start

Enfin, assurez-vous que votre nom de domaine est correctement associé à l’adresse IP de votre serveur web nouvellement configuré. Une fois cela fait, essayez d’accéder à votre domaine en utilisant le protocole HTTPS.

Comme vous pouvez le constater, Chandan.io est désormais accessible via HTTPS avec le certificat que j’ai configuré.

Les étapes décrites ci-dessus sont fondamentales pour la configuration d’un certificat SSL. Il est important de continuer à ajuster les paramètres SSL pour renforcer la sécurité. Avant de mettre votre serveur web en production, testez-le pour vous assurer qu’il n’est pas vulnérable aux failles de sécurité courantes.

J’espère que ce guide vous aura donné une bonne idée de la manière de mettre en place un certificat SSL sur votre serveur web Apache afin que votre site soit accessible via HTTPS.

Avez-vous apprécié cet article ? N’hésitez pas à le partager avec d’autres !