Nous allons apprendre à installer le serveur HTTP Apache et à le sécuriser à l’aide d’un certificat Let’s Encrypt.
Introduction
Apache est l’un des serveurs web HTTP les plus utilisés. Configurer Apache et le sécuriser avec un certificat SSL est la première étape que vous devez réaliser pour vos applications web.
Dans ce tutoriel, vous apprendrez à configurer Apache pour votre site web sur Ubuntu et CentOS. J’ai testé ceci sur DigitalOcean VM.
Pour la démonstration. Je vais utiliser le nom de domaine test test.sanakil.xyz, qui est surchargé par Cloudflare.
N’oubliez pas de remplacer le domaine test.sanakil.xyz par votre domaine réel. 📢
Création de l’enregistrement DNS
Connectez-vous à Cloudflare ou à votre registraire de domaine (s’il ne s’agit pas de Cloudflare) et créez un enregistrement A pour faire pointer le domaine vers l’IP de la VM cloud.
Connectez-vous à votre serveur cloud via SSH.
Installation d’Apache (Ubuntu)
Pour mettre à jour les paquets disponibles
sudo apt-get update
Installez apache
sudo apt-get install apache2
Autorisez les ports 80 et 443 dans votre pare-feu pour le serveur HTTP.
sudo ufw allow 'Apache Full' (en anglais)
Vérifiez que votre apache installé fonctionne correctement
sudo systemctl status apache2
Installation d’Apache (CentOS)
Mettez à jour les paquets disponibles.
sudo yum update
Installez Apache
sudo yum install httpd
Ajoutez les ports 80 et 443 dans le pare-feu pour accéder à l’application web.
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Démarrez apache et vérifiez l’état de fonctionnement
sudo systemctl start httpd
sudo systemctl status httpd
Créez un hôte virtuel pour le site web
Un hôte virtuel peut être créé de deux manières, en fonction du type d’application web ou de site web que vous utilisez.
Supposons que l’application dispose déjà d’un serveur web comme Node fonctionnant sur un port. Nous pouvons utiliser un proxy pour le servir dans Apache. Ou si l’application ne sert que des fichiers comme les sites statiques. Nous pouvons spécifier le chemin de l’application à servir dans Apache.
Créez un fichier d’hôte virtuel dans Apache – le fichier de configuration peut porter n’importe quel nom. Mais il est préférable de le conserver avec le nom de domaine dans lequel l’application Web sera utilisée pour faciliter l’identification.
Configuration supplémentaire pour CentOS
Dans CentOS (SELinux), tout n’est pas activé par défaut comme dans Ubuntu.
Nous devons créer des dossiers sites-enabled et sites-available dans Apache.
sites-enabled – indique à Apache de servir le visiteur avec les fichiers conf qui s’y trouvent
sites-available – stocke les fichiers de configuration de l’hôte virtuel
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Indiquez maintenant à Apache de lire le fichier conf dans le dossier sites-enabled.
sudo vi /etc/httpd/conf/httpd.conf
Ajoutez la ligne suivante à la fin du fichier
IncludeOptional sites-enabled/*.conf
Configurez Apache pour qu’il serve des fichiers
- Créez un dossier pour servir votre application web
sudo mkdir -p /var/www/test.sanakil.xyz/webapp
sudo vi /var/www/test.sanakil.xyz/webapp/index.html
- Collez l’extrait HTML ci-dessous pour le tester
<!DOCTYPE html>
<html lang="en">
<head>
<title>Apache webapp</title>
</head>
<body>
<h1>Mon application web Apache fonctionne dans test.sanakil.xyz</h1>
</body>
</html>
- Créez un dossier pour générer et stocker les journaux
sudo mkdir -p /var/www/test.sanakil.xyz/log
sudo touch /var/www/test.sanakil.xyz/request.log
sudo touch /var/www/test.sanakil.xyz/log/error.log
- Ouvrez le fichier conf(Ubuntu)
sudo vi /etc/apache2/sites-available/test.sanakil.xyz.conf
- Ouvrez le fichier de configuration(CentOS)
sudo vi /etc/httpd/sites-available/test.sankil.xyz.conf
- Collez l’extrait de conf ci-dessous en changeant votre nom de domaine
<Serveur virtuel *:80>
ServerName test.sanakil.xyz
ServerAlias test.sanaki.xyz
DocumentRoot /var/www/test.sanakil.xyz/webapp
ErrorLog /var/www/test.sanakil.xyz/log/error.log
CustomLog /var/www/test.sanakil.xyz/log/requests.log combiné
</VirtualHost>
- Donnez les permissions nécessaires pour votre dossier.
sudo chown -R $USER:$USER /var/www/test.sanakil.xyz
sudo chmod -R 755 /var/www/test.sanakil.xyz
sudo a2ensite test.sanakil.xyz.conf
Désactivez le fichier de configuration par défaut pour des raisons de sécurité
sudo a2dissite 000-default.conf
Redémarrez apache pour que les modifications soient prises en compte.
sudo systemctl restart apache2
Activez le fichier de configuration de votre hôte virtuel dans apache(CentOS)
Créez un lien symbolique pour apache
sudo ln -s /etc/httpd/sites-available/test.sanakil.xyz.conf
/etc/httpd/sites-enabled/test.sanakil.xyz.conf
Redémarrez Apache pour que les modifications soient prises en compte.
sudo systemctl restart httpd
Activation de HTTPS
L’activation du HTTPS dans le serveur web Apache sous Ubuntu a été facilitée par l’utilisation de certbot et de Let’s Enc rypt.
Let’s Enc rypt est une organisation à but non lucratif qui fournit gratuitement des certificats SSL à des millions de sites web.
Certbot est un logiciel qui configure automatiquement le HTTPS pour notre site web en utilisant Let’s Encrypt.
Ajoutez et installez certbot pour apache (Ubuntu)
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache
Ajouter et installer certbot pour apache(CentOS)
sudo yum install epel-release
sudo yum install certbot python2-certbot-apache mod_ssl
Obtenez un certificat SSL
sudo certbot --apache -d votre-nom-de-domaine
Si toutes les vérifications sont effectuées par certbot sans aucun problème.
Il vous demandera de rediriger votre site en HTTPS. Sélectionnez l’option 2 et entrez.
C’est tout.
Si tout fonctionne correctement, https://test.sanakil.xyz affichera une page d’index HTML de base que nous avons créée.
Conclusion
J’espère que cela vous a donné une idée de l’installation et de la mise en oeuvre d’un certificat SSL sur Apache.
Découvrez ensuite comment implémenter un certificat dans Nginx.