Sécuriser un serveur web via HTTPS avec un certificat auto-signé
Afin de sécuriser au mieux le service web, nous aurons besoin de mettre en place un certificat HTTPS.
Si le serveur est connecté à internet nous pourrons utiliser Let’s Encrypt.
Ici par soucis de sécurité nous ne connecterons pas ce serveur vers l’extérieur. Nous générerons donc notre propre autorité de certification et un certificat « homeCA » pouvant être réutilisé sur n’importe quel serveur web de votre organisation.
Vous pourrez si nécessaire diffuser le certificat racine via une GPO sur tous les postes de votre domaine.
Nous commencerons par passer en root et par créer le dossier de travail nécessaire à ce nouveau serveur faisant « autorité de certification » et nous nous y placerons:
* Attention de bien adapter ce tutoriel en fonction de votre FQDN ! Dans ce tutoriel mon FQDN est : srvweb.home.lan (Nom machine : srvweb / Domaine : home.lan)
- Passer en "Super Utilisateur : su"
- Installation de "Openssl : apt-get install openssl"
- mkdir /etc/ssl/srvweb.home.lan/
- cd /etc/ssl/srvweb.home.lan/
Puis nous générerons le certificat root de l’autorité de certification à destination des clients au format .pem:
- openssl req -x509 -new -nodes -key homeCA.key -sha256 -days 3650 -out homeCA.pem
- Enter pass phrase for homeCA.key:
- Country Name (2 letter code) [AU]:FR
- State or Province Name (full name) [Some-State]:Ile de France
- Locality Name (eg, city) []:Paris
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:HOME
- Organizational Unit Name (eg, section) []:IT
- Common Name (e.g. server FQDN or YOUR name) []:srvweb.home.lan
- Email Address []:admin@home.lan
Nous créerons la clé privée utilisée pour tous les serveurs de home.lan de telle manière que le certificat final soit un certificat home (*.home.lan).
Puis nous génererons le CSR (Certificate Signing Request) :
- openssl genrsa -out srvweb.home.lan.key 2048
- openssl req -new -key srvweb.home.lan.key -out srvweb.home.lan.csr
-----
- Country Name (2 letter code) [AU]:FR
- State or Province Name (full name) [Some-State]:Ile de France
- Locality Name (eg, city) []:Paris
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:HOME
- Organizational Unit Name (eg, section) []:IT
- Common Name (e.g. server FQDN or YOUR name) []:srvweb.home.lan
- Email Address []:admin@home.lan
Nous créerons un fichier contenant les paramètres pour notre certificat HTTPS:
Enfin nous signerons notre certificat avec notre autorité de certification et obtiendrons le certificat public pour Apache.
Lors de ce processus le mot de passe de notre autorité de certification nous sera demandé:
- openssl x509 -req -in srvweb.home.lan.csr -CA homeCA.pem -CAkey homeCA.key -CAcreateserial -out srvweb.home.lan.crt -days 3650 -sha256 -extfile srvweb.home.lan.ext
Configuration du VHost Apache
Nous devrons ensuite configurer le VHost nécessaire à la publication du site. Nous exécuterons donc la commande:
Et nous compléterons ce fichier comme ci-dessous:
Puis nous activerons le module Apache SSL:
Nous créerons le lien symbolique et redémarrerons Apache:
- sudo ln -s /etc/apache2/sites-available/srvweb.home.lan.conf /etc/apache2/sites-enabled/srvweb.home.lan.conf
- sudo systemctl restart apache2
Importation du certificat dans Mozilla Firefox
- Récupérer le certificat cert.crt (Ici le fichier homeCA.crt)
- Ouvrir le navigateur Mozilla Firefox et se rendre sur l'url du serveur
- Importer le certificat
Installation du certificat dans le magasin de certificats de Windows
- Double clique sur le certificat
Enjoy !