Accueil » Créer une Autorité de certification

Créer une Autorité de certification

Dans cette procédure je vais vous expliquer comment créer une autorité de certification et un certificat hôte pour Apache2. Pour réaliser l’autorité de certification nous allons utiliser Openssl et une machine Debian.

Logo OpenSSL

Prérequis :

  • Une machine sous Debian
  • Openssl

Créer une Autorité de certification :

D’abord, nous allons créer un répertoire pour notre autorité de certification :

mkdir -p /etc/ssl/certificats/CA

Ensuite nous allons créer la clé privée de l’autorité de certification :

openssl genrsa -des3 -out /etc/ssl/certificats/CA/CA.key 2048

Saisir une passphrase qui sera utilisée pour signer les certificats (Donc à ne pas perdre).

Puis nous allons générer le certificat root (racine) de l’autorité de certification au format .pem :

 openssl req -x509 -new -nodes -key /etc/ssl/certificats/CA/CA.key -sha256 -days 10000 -out /etc/ssl/certificats/CA/CA.pem

Une liste de questions va vous être demandée.

Ensuite nous allons générer le certificat root (racine) au format .crt :

openssl x509 -in /etc/ssl/certificats/CA/CA.pem -inform PEM -out /etc/ssl/certificats/CA/CA.crt

Installer l’autorité de certification sur une machine :

Nous avons créer 3 fichiers dans le répertoire /etc/ssl/certificats

Intallation version web :

Le fichier CA.crt est a importé dans votre navigateur Web :

  • Firefox => saisir dans l’url : about:preferences#privacy => Se rendre dans Certificats => Afficher les certificats => Importer => Choisir le fichier .crt
  • Chrome => saisir dans l’url : chrome://settings/security => Se rendre dans Gérer les certificats => Importer => Choisir le fichier .crt

Installation au niveau de l’OS :

Windows :

Récupérer le fichier CA.crt et double cliquer dessus => Choisir l’emplacement : « Autorité de certification racine de confiance »

Ou en ligne de commande :

certutil.exe -addstore root CA.crt

Pour Firefox, il faut autoriser l’utilisation des autorités de certifications de confiances de Windows.
Donc il faut créer un fichier dans le répertoire suivant C:\Program Files (x86)\Mozilla Firefox\Defaults\Pref\defaults\pref\ ou C:\Program Files\Mozilla Firefox\Defaults\Pref\defaults\pref\ :

Créer un fichier enableroot.js
Ajoutez y le contenu suivant :

pref("security.enterprise_roots.enabled", true);
Linux :

D’abord, on va copier le fichier CA.crt dans le répertoire des autorités (/usr/local/share/ca-certificates/) :

cp CA.crt /usr/local/share/ca-certificates/

Ensuite mettre à jour les autorités :

update-ca-certificates

Créer un certificat hôte :

D’abord nous allons créer un répertoire pour notre hôte :

mkdir -p /etc/ssl/certificats/hote

Ensuite nous allons créer la clé privée de l’hôte :

openssl genrsa -out /etc/ssl/certificats/hote/hote.key 2048

Puis on génère la demande de signature de certificat (fichier au format .csr) :

openssl req -new -key /etc/ssl/certificats/hote/hote.key -out /etc/ssl/certificats/hote/hote.csr

Dans les questions qui sont demandées, il faut mettre le DNS du serveur pour le Common Name.

Signer le certificat hôte par l’autorité de certification :

D’abord on va créer un fichier de configuration :

nano /etc/ssl/certificats/hote/hote.ext

Avec le contenu suivant :

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = hote

Pour signer le certificat de l’hôte par l’autorité de certification précédemment créée nous allons exécuter la commande suivante :

openssl x509 -req -in /etc/ssl/certificats/hote/hote.csr -CA /etc/ssl/certificats/CA/CA.pem -CAkey /etc/ssl/certificats/CA/CA.key -CAcreateserial -out /etc/ssl/certificats/hote/hote.crt -days 10000 -sha256 -extfile /etc/ssl/certificats/hote/hote.ext

Enfin on renseigne la passphrase de l’autorité de certification.

Intégré le certificat signé avec Apache2 :

Pour intégré le certificat dans Apache2, on doit éditer le Virtual Host qui est utilisé dans le répertoire /etc/apache2/sites-available :

nano /etc/apache2/sites-available/000-default.conf

Voici un exemple de configuration :

<VirtualHost *:80>
        ServerName hote

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        Redirect permanent / https://hote/
</VirtualHost>
<VirtualHost *:443>
        ServerName hote

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        
        SSLEngine on
        SSLCertificateFile /etc/ssl/certificats/hote/hote.crt
        SSLCertificateKeyFile /etc/ssl/certificats/hote/hote.key
</VirtualHost>

Cette configuration permet d’automatiquement rediriger les connexions http en https et d’utiliser les fichiers du certificat et de la clé de l’hôte.

Ensuite on va activer le SSL sur Apache2 :

a2enmod ssl

Puis on redémarrer le service Apache2 :

systemctl restart apache2

Sources :

https://www.openssl.org/docs/

Susceptible de vous intéresser :