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 !
apt update && apt upgrade -y
apt install apache2 -y
systemctl start apache2 && systemctl enable apache2
a2enmod ssl
mkdir /etc/apache2/TLS
cd /etc/apache2/TLS
openssl genrsa -aes256 4096 > cleprivapache.key
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
mkdir /var/www/www.jesuissuper.com
echo "Mon super premier site !" > /var/www/www.jesuissuper.com/index.html
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
a2ensite www.jesuissuper.com.conf
(le nom des sites possibles s'affiche), taper jesuissuper
systemctl reload apache2
(ou systemctl restart apache2)
Faites une résolution de nom sur votre hôte.
vi /etc/hosts
IP-DU-SERVEUR-WEB www.jesuissuper.com
modifier le fichier hosts (cliquez ici pour accéder à la procédure), y ajouter la même ligne qu'au-dessus
(via scp ou winscp)
Lancez Firefox, paramètres, cherchez 'certificats', affichez les certificats, onglet Autorités, Importer