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.

1
2
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.

1
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é)

1
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 :

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<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

1
sudo systemctl restart apache2

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

Laisser un commentaire

Assemblé dans la station orbitale WordPress