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
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 :
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);
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
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.
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/
Autre liens :