Générer des certificats SSL pour des serveurs web Linux dans un environnement AD CS
Mise à jour le 02 nov. 2024
Dans cet article, je vais montrer comment générer des certificats SSL pour un serveur webGNU/Linux depuis un environnement AD CS. L'objectif est de disposer de serveurs web accessibles sur le réseau de l'entreprise, sécurisés par SSL, mais sans avoir de message d'avertissement que l'on peut avoir avec des certificats auto-signés.
Pour la partie serveur http j'utiliserai une machine Debian avec le service Apache, mais cela peut être reproduit sur n'importe quelle distribution et avec n'importe quel serveur web.
Génération d'une demande de signature de certificat (CSR)
Depuis le serveur debian, créez un fichier openssl-san.cnf. Ici, un exemple avec un serveur web nommé webserver.std.local et qui possède l'adresse IP suivante : 192.168.1.200. Notez les différents noms alternatifs (alt_names), correspondant aux différentes URL que les utilisateurs pourront utiliser pour accéder au site web :
Depuis le serveur AD CS, ouvrez la console Paramètres des modèles de certificats, et assurez-vous de disposer du modèle Serveur Web :
Si ce n'est pas le cas, faites un clic droit sur Modèles de certificats et cliquez sur Attribuer un modèle de certificat :
Sélectionnez le modèle Serveur Web, puis cliquez sur OK :
Maintenant, faites un clic droit sur Modèles de certificats, puis cliquez sur Gérer :
Dans la console Modèles de certificats, faites un clic droit sur Serveur Web, et notez le nom du modèle, qui sera utilisé plus tard avec la commande certreq :
Copiez le fichier de demande de signature de certificat précédemment généré depuis le serveur web, par exemple ici avec une commande PowerShell :
Modifiez le fichier de configuration de votre site https apache2, par exemple ici avec le fichier /etc/apache2/sites-enabled/default-ssl.conf :
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/webserver.std.local.pem
SSLCertificateKeyFile /etc/ssl/private/webserver.std.local.key
Depuis une machine du domaine, ouvrez un navigateur web et connectez-vous à l'URL du serveur web (par exemple https://webserver). Vous ne devriez plus voir l'avertissement. Depuis le navigateur, vous pouvez vérifier les propriétés du certificat :