Comment créer un certificat SSL sur Apache pour Debian 8

introduction

Ce tutoriel vous explique comment installer et configurer un serveur Apache sécurisé avec un certificat SSL. À la fin du tutoriel, vous aurez un serveur accessible via HTTPS.

SSL est basé sur l’intransmissibilité mathématique de la résolution d’un grand entier en ses facteurs premiers également importants. En utilisant cela, nous pouvons chiffrer les informations en utilisant une paire de clés privée-publique. Les autorités de certification peuvent émettre des certificats SSL qui vérifient l’authenticité d’une telle connexion sécurisée et, sur la même note, un certificat auto-signé peut être produit sans assistance par un tiers.

Dans ce didacticiel, nous allons générer un certificat auto-signé, effectuer les configurations nécessaires et tester les résultats. Les certificats auto-signés sont parfaits pour les tests, mais entraîneront des erreurs de navigateur pour vos utilisateurs. Ils ne sont donc pas recommandés pour la production.

Si vous souhaitez plutôt obtenir un certificat payé, veuillez consulter https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority [ ce tutoriel].

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

sudo apt-get update
sudo apt-get upgrade openssl

Vous voudrez peut-être un deuxième ordinateur sur lequel OpenSSL sera installé, à des fins de test:

  • Un autre droplet Linux

  • Ou, un système local basé sur Unix (Mac, Ubuntu, Debian, etc.)

Étape 1 - Installer Apache

Dans cette étape, nous utiliserons un programme d’installation de paquet intégré appelé + apt-get. Cela simplifie considérablement la gestion des paquets et facilite une installation propre.

Dans le lien spécifié dans les conditions préalables, vous devriez avoir mis à jour + apt-get + et installé le paquetage + sudo +, car contrairement à d’autres distributions Linux, Debian 8 n’est pas livré avec + sudo + installé.

Apache sera notre serveur HTTPS. Pour l’installer, lancez ce qui suit:

sudo apt-get install apache2

Étape 2 - Activer le module SSL

Dans cette section, nous activerons SSL sur notre serveur.

Commencez par activer le module SSL Apache.

sudo a2enmod ssl

Le site Web Apache par défaut est fourni avec un modèle utile pour l’activation de SSL. Nous allons donc l’activer maintenant.

sudo a2ensite default-ssl

Redémarrez Apache pour appliquer ces modifications.

sudo service apache2 reload

Étape 3 - Créez un certificat SSL auto-signé

Commençons par créer un nouveau répertoire dans lequel nous pouvons stocker la clé privée et le certificat.

sudo mkdir /etc/apache2/ssl

Ensuite, nous demanderons un nouveau certificat et le signerons.

Commencez par générer un nouveau certificat et une clé privée pour le protéger.

  • L’indicateur + days + spécifie combien de temps le certificat doit rester valide. Avec cet exemple, le certificat durera un an

  • L’indicateur + keyout + spécifie le chemin d’accès à notre clé générée

  • L’indicateur + out + spécifie le chemin d’accès à notre certificat généré

sudo openssl req -x509 -nodes -days  -newkey rsa:2048 -keyout /etc/apache2/ssl/ -out /etc/apache2/ssl/

L’appel de cette commande entraînera une série d’invites.

  • * Nom commun *: spécifiez l’adresse IP ou le nom d’hôte de votre serveur. Ce champ est important, car votre certificat doit correspondre au domaine (ou adresse IP) de votre site Web.

  • Remplissez tous les autres champs à votre propre discrétion.

Des exemples de réponses sont présentés ci-dessous.

InteractiveYou are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
---
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Définissez les autorisations de fichier pour protéger votre clé privée et votre certificat.

sudo chmod 600 /etc/apache2/ssl/*

Pour plus d’informations sur le code de permission à trois chiffres, consultez le didacticiel à l’adresse https://www.digitalocean.com/community/tutorials/linux-permissions-basics-and-how-to-use-umask-on-a-vps. [Autorisations Linux].

Votre certificat et la clé privée qui le protège sont maintenant prêts à être utilisés par Apache.

Étape 4 - Configurer Apache pour utiliser SSL

Dans cette section, nous allons configurer l’hôte virtuel Apache par défaut pour utiliser la clé et le certificat SSL. Après avoir effectué cette modification, notre serveur commencera à servir HTTPS au lieu des requêtes HTTP pour le site par défaut.

Ouvrez le fichier de configuration du serveur en utilisant + nano + ou votre éditeur de texte préféré.

sudo nano /etc/apache2/sites-enabled/default-ssl.conf

Recherchez la section commençant par + <VirtualHost default: 443> + et apportez les modifications suivantes.

  • Ajoutez une ligne avec le nom de votre serveur directement sous la ligne de courrier électronique + Admin Serveur. Cela peut être votre nom de domaine ou votre adresse IP:

/ etc / apache2 / sites-enabled / default

ServerAdmin webmaster@localhost
ServerName :443
  • Recherchez les deux lignes suivantes et mettez à jour les chemins d’accès pour qu’ils correspondent aux emplacements du certificat et de la clé générés précédemment. Si vous avez acheté un certificat ou généré votre certificat ailleurs, assurez-vous que les chemins ici correspondent aux emplacements réels de votre certificat et de votre clé:

/ etc / apache2 / sites-enabled / default

SSLCertificateFile
SSLCertificateKeyFile

Une fois ces modifications apportées, vérifiez que votre fichier de configuration d’hôte virtuel correspond aux éléments suivants.

/ etc / apache2 / sites-enabled / default-ssl

<IfModule mod_ssl.c>
   <VirtualHost _default_:443>
       ServerAdmin webmaster@localhost
       ServerName
       DocumentRoot /var/www/html

       . . .
       SSLEngine on

       . . .

       SSLCertificateFile
       SSLCertificateKeyFile

Enregistrez et quittez le fichier.

Redémarrez Apache pour appliquer les modifications.

sudo service apache2 reload

Pour en savoir plus sur la configuration des hôtes virtuels Apache en général, voir https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts [ Cet article].

Étape 5 - Testez Apache avec SSL

Dans cette section, nous allons tester votre connexion SSL à partir de la ligne de commande.

Vous pouvez exécuter ce test à partir de (1) votre système local basé sur Unix, (2) un autre Droplet ou (3) le même Droplet. Si vous l’exécutez à partir d’un système externe, vous confirmerez que votre site est accessible via l’Internet public.

Ouvrez une connexion via le port HTTPS 443.

openssl s_client -connect :443

Faites défiler jusqu’au milieu de la sortie (après la touche) et vous devriez trouver ce qui suit:

Output--
SSL handshake has read 3999 bytes and written 444 bytes
--

. . .

SSL-Session:

. . .

Bien sûr, les chiffres sont variables, mais c’est un succès. Toutes nos félicitations!

Appuyez sur + CTRL + C + pour quitter.

Vous pouvez également visiter votre site dans un navigateur Web, en utilisant HTTPS dans l’URL (+ https: // example.com +). Votre navigateur vous avertira que le certificat est auto-signé. Vous devriez pouvoir visualiser le certificat et vérifier que les détails correspondent à ceux que vous avez entrés à l’étape 3.

Conclusion

Ceci conclut notre didacticiel en vous laissant avec un serveur Apache en état de marche, configuré de manière sécurisée avec un certificat SSL. Pour plus d’informations sur l’utilisation d’OpenSSL, voir https://www.digitalocean.com/community/tutorials/openss-essentials-working-with-ssl-certificates-private-keys-and-csrs de l’article sur OpenSSL Essentials].