Déploiement d’un Certificat SSL depuis Apache2 dans un Domaine Active Directory

Nom de Domaine à certifier : mydomain.local (cname sur DNS Windows Serveur par exemple)

Sur le serveur Web Apache2, je me déplace dans le Répertoire de Travail pour la création du certificat puis je génère la clef privé avec l’algorithme RSA 2048 bits.

cd /etc/ssl
sudo openssl genrsa -out mydomain.key 2048

Je génère un fichier de « demande de signature de certificat », en anglais CSR. Divers questions vont être posé il est impératif de faire match lors de la question sur le common name avec le NDD devant recevoir le certificat.

sudo openssl req -new -key mydomain.key -out mydomain.csr

creation clef prive ssl et demande de certificat

Copiez-coller le fichier mydomain.csr vers votre contrôleur de domaine hébergeant votre autorité de certification. Puis utilisez la commande ci-dessous afin de générer le certificat depuis un cmd administrateur.(Le rôle autorité de certification de l’active directory doit être installé et configuré)

certreq -submit -attrib "CertificateTemplate:WebServer" C:\mydomain.csr

Le certificat est disponible, vous pouvez le déployer via GPO sur votre parc via, Configuration Ordinateur\Stratégies\ Paramètres Windows \ Paramètres de sécurité \ Stratégies de clé publique/Autorités de certification de racine de confiance puis clique droit et importer.

Sur votre serveur Apache2 éditez :

sudo nano /etc/apache2/sites-available/default-ssl.conf

Vous pouvez utiliser cette configuration par défaut en remplacant convenablement les différents paths

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
       
        #Activation SSL
        SSLEngine on
        # Activation de tous les protocoles sécurisés (TLS v1.0, TLS v1.1 et TLS v1.2) tout en désactivant les protocoles non sécurisés (SSL v2 et v$
        SSLProtocol All -SSLv3 -SSLv2
        # On active les méthodes de chiffrement, et on désactive les méthodes de chiffrement non sécurisés (par la présente d'un !)
        SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
        # Le navigateur devra choisir une méthode de chiffrement en respectant l'ordre indiquée dans SSLCipherSuite
        SSLHonorCipherOrder on

        #Chemin vers le certificat public
        SSLCertificateFile /etc/ssl/certs/mydomain.crt
        #Chemin vers la clef privée
        SSLCertificateKeyFile /etc/ssl/private/mydomain.key

        # Chemin vers le certificat SSL racine, puis vers le certificat SSL intermédiaire au besoin
        #SSLCACertificateFile /etc/ssl/certs/racine-certificat.cer
        #SSLCACertificateFile /etc/ssl/certs/certificat-intermediaire.cer

        #Je force l'utilisation de TLS sur tout le site
        Header always set Strict-Transport-Security "max-age=15768000"

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
        </Directory>


    </VirtualHost>
</IfModule>

On redémarre Apache2

sudo systemctl restart apache2

La configuration est prête, sous IE et Edge aucun avertissement. Au contraire sur Firefox et Chrome un avertissement subsiste.

2 réflexions au sujet de « Déploiement d’un Certificat SSL depuis Apache2 dans un Domaine Active Directory »

  1. Bonjour,

    Super tuto !
    Par contre j’ai un problème, dans la conf des vhosts

    #Chemin vers le certificat public
    SSLCertificateFile /etc/ssl/certs/mydomain.crt
    #Chemin vers la clef privée
    SSLCertificateKeyFile /etc/ssl/private/mydomain.key

    Je n’ai pas de CRT mais que une .key et une .cer ou .p7b ou ma demande csr
    du coup j’ai tenté en .cer mais erreur apache :

    AH02561: Failed to configure certificate xxx.xxx:443:0, check /xxx/server.cer
    [Thu Jun 02 17:32:26.051946 2022] [ssl:emerg] [pid 356457] SSL Library Error: error:0909006C:PEM routines:get_name:no start line (Expecting: CERTIFICATE) — Bad file contents or format – or even just a forgotten SSLCertificateKeyFile?

    Avez vous une idée ? Je suis passé par le web IIS de mon AD CS : « Soumettre une demande de certificat ou de renouvellement » qui m’a délivré mon cer ou chaine complettte en p7b…

    1. Bonjour,

      Le crt sera disponible après la demande de signature sur votre pki d’entreprise :

      certreq -submit -attrib « CertificateTemplate:WebServer » C:\mydomain.csr

Laisser un commentaire