Publié le : 21/04/2021

Comment créer un certificat SSL de confiance sur votre machine de développement local et l’utiliser sur un serveur Apache sous Ubuntu 20.04

Certifcat ssl sur une machine locale

Aujourd’hui quand vous faites du développement d’application web, mobile, de bureau et autres il est primordial de mettre en place une couche de la sécurité qui est le certificat SSL. Et quand vous passez au développement de ces applications, il faut déjà implémenter cette sécurité pour voir si l’application fonctionne correctement avec les exigences engendrées par la sécurité.

Ainsi quand vous allez développer les applications sur votre machine de travail, il faut déjà mettre en place le certificat SSL. Pour ce faire, mkcert nous permet de créer un certificat de confiance . C’est un outil « zero-config ». Il crée et installe automatiquement un « certificate authorities » (CA) local dans votre machine et génère des certificats de confiance local.

En utilisant des certificats à partir des CAs pour votre machine local (localhost ou 127.0.0.1) de développement peut être dangereux voir impossible, et que l’utilisation des certificats auto-signés provoque des erreur de confiance. De plus, en gérant vos propres CA est la meilleure solution, mais il est nécessaire d’avoir des connaissances poussés dans la mise en place de CA et l’utilisation de divers commandes manuels, qui est totalement difficile et fastidieux que ce que propose l’outil mkcert.

Installation de certutil

Avant de pouvoir installer mkcert, il est nécessaire d’installer certutil. C’est un utilitaire de ligne de commande qui peut créer et modifier les certificats et les bases de données des clés.

La commande pour le faire est :

# apt install libnss3-tools

Installation de mkcert pour la génération d’un certificat SSL

Une fois l’installation de certutil effectuée, on peut téléchager le fichier binaire de mkcert sur Github et l’installer par les commandes ci-dessous :

# wget wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64
# mv mkcert-v1.1.2-linux-amd64 mkcert
# chmod +x mkcert
# cp mkcert /usr/local/bin/

Génération des CA locales

Après l’installation de l’outil mkcert, on va générer le CA local avec la commande ci-dessous :

mkcert -install

Nous obtiendrons par la suite le résultat suivant qui nous dit que l’installation est faites et qu’il faut redémarrer les navigateurs.

Created a new local CA at "/home/noel/.local/share/mkcert" ?
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! ?

Pour regarder l’emplacement du « root CA », on exécute la commande :

mkcert -CAROOT

Cette commande nous donne le chemin du « root CA ».

En regardant dans Firefox par exemple dans les « Préférences », en recherchant « certificat », en cliquant sur le bouton « Afficher les certificats » et en allant dans l’onglet « Autorités », on peut voir notre CA « mkcert ».

Le CA généré par mkcert dans Firefox

Génération des certificats SSL local

Après l’installation du CA local, nous allons lancer l’exécution de la commande mkcert pour la génération des certificats locales.

# mkcert localhost 127.0.0.1 ::1

Une fois l’exécution terminée, on obtient :

Using the local CA at "/home/amos/.local/share/mkcert" ✨

Created a new certificate valid for the following names ?
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./localhost+2.pem" and the key at "./localhost+2-key.pem" ✅

Activation des certificats SSL dans Apache

Quand on obtient les certificats SSL, on peut configurer Apache pour prendre en compte ces certificats lors de votre requête https.

Pour ce faire, nous allons modifier le fichier 000-default.conf dans le répertoire /etc/apache2/sites-available/ et ajouter les lignes :

<VirtualHost *:80>

  ServerAdmin admin@localhost
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:443>

  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/localhost+2.pem
  SSLCertificateKeyFile /etc/apache2/ssl/localhost+2-key.pem

  ServerAdmin admin@localhost
  DocumentRoot /var/www/html
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Ensuite, nous allons activer SSL dans Apache en chargeant les modules ssl.

# a2enmod ssl

Enfin pour que la configuration soit prise en compte, il faut redémarrer apache avec la commande :

# systemctl restart apache

Les mots clés rattachés à cet article : Apache  -  Certificats  -  Développement  -  SSL  -  Ubuntu

Nos clients

Une vingtaine de clients nationaux et internationaux