Configurer un site intranet/internet en HTTPS avec Apache2 (signé par une autorité de certification interne d'entreprise)
Introduction
L'objectif est de configurer un site intranet (avec vhost) sur apache, en utilisant TLS.
TLS exige qu'un certificat soit délivré par une autorité de certification.
Puisqu'il s'agît d'un site intranet, accessible uniquement sur le réseau de l'entreprise, plutôt que de nous adresser à une autorité de certification sur internet, nous allons utiliser l'autorité de certification interne de l'entreprise (dans notre cas, un serveur Windows). Cela permet d'obtenir un certificat reconnu par les postes clients sans passer par une autorité publique sur internet !
Etape 1 : s'identifier en root, installer apache et openssl, activer TLS
apt update && apt upgrade -y
apt install apache2 -y
systemctl start apache2 && systemctl enable apache2
a2enmod ssl
Etape 2 : Clé privée et demande de signature
mkdir /etc/apache2/TLS
cd /etc/apache2/TLS
1) Créer la clé privée pour apache :
openssl genrsa -aes256 4096 > cleprivapache.key
2) Créer un certificat normal, qui servira de fichier de demande de signature à notre autorité :
openssl req -new -key cleprivapache.key > demandesignature.csr
(Nous allons à présent envoyer notre demandesignature.csr au serveur windows (ou à une authorité sur internet) afin d'obtenir un certificat signé !
Ici, je montre l'exemple d'un serveur windows qui va se charger de certifier.)
(Par exemple, depuis notre serveur Windows, nous allons récupérer la demandesignature.csr sur le serveur web :
dans un invité de commandes :)
scp root@IP-SERVEUR-WEB:/etc/apache2/TLS/demandesignature.csr C:\chemin\ou\télécharger\votre\csr
(Ensuite, sur le serveur windows,
Ouvrir PowerShell :
positionnez-vous dans l'emplacement de demandesignature.csr (il était dans E:\ chez nous))
cd E:\
certreq -attrib 'CertificateTemplate:WebServer'
(Une fenêtre s'ouvre, choisir demandesignature.csr (il est nécessaire de choisir 'Tous les fichiers' en bas à droite pour voir le fichier s'afficher).
Puis, choisir un emplacement pour enregistrer le certificat (le nommer certifapache.crt).
Ensuite, renvoyez votre certifapache.crt sur votre serveur web :)
scp E:\certifapache.crt root@IP-SERVEUR:/etc/apache2/TLS
(Nous aurons besoin des 2 fichiers suivants pour notre vhost :
- certifapache.crt (le certificat signé par notre autorité Windows)
- cleprivapache.key (clé privée pour apache))
Dernière étape très importante, modifier les permissions de vos clés et certificats :
(à n'effectuer qu'après avoir tout généré !)
chmod -R 600 /etc/apache2/TLS
Etape 4 : créer (ou copier s'il est donné) le dossier du site (jesuissuper)
mkdir /var/www/www.jesuissuper.com
echo "Mon super premier site !" > /var/www/www.jesuissuper.com/index.html
Etape 5 : le vhost
cd /etc/apache2/sites-available/
cp default-ssl.conf default-ssl.conf.BAK
mv default-ssl.conf www.jesuissuper.com.conf
vi www.jesuissuper.com.conf
# On édite le fichier, avec au moins les informations (dé-commentées) suivantes :
<VirtualHost _default_:443>
ServerName www.jesuissuper.com
DocumentRoot /var/www/www.jesuissuper.com
SSLEngine on
SSLCertificateFile /etc/apache2/TLS/certifapache.crt
SSLCertificateKeyFile /etc/apache2/TLS/cleprivapache.key
</VirtualHost>
On enregistre et on quitte
Etape 6 : activer la configuration du vhost
a2ensite www.jesuissuper.com.conf
(le nom des sites possibles s'affiche), taper jesuissuper
Etape 7 : redémarrage d'apache2
systemctl reload apache2
(ou systemctl restart apache2)
Etape 8 : résolution de nom
Faites une résolution de nom sur votre hôte.
cas 1 : le PC est sur Linux :
vi /etc/hosts
IP-DU-SERVEUR-WEB www.jesuissuper.com
cas 2 : le PC est sous windows.
modifier le fichier hosts (cliquez ici pour accéder à la procédure), y ajouter la même ligne qu'au-dessus
Etape 9 : Importer le certificat d'autorité sur votre navigateur Firefox : ca.crt sur votre PC
(via scp ou winscp)
Lancez Firefox, paramètres, cherchez 'certificats', affichez les certificats, onglet Autorités, Importer
↑ Haut de page