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.
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.
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é)
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 :
Vous pouvez utiliser cette configuration par défaut en remplacant convenablement les différents paths
<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
La configuration est prête, sous IE et Edge aucun avertissement. Au contraire sur Firefox et Chrome un avertissement subsiste.
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…
Bonjour,
Le crt sera disponible après la demande de signature sur votre pki d’entreprise :
certreq -submit -attrib « CertificateTemplate:WebServer » C:\mydomain.csr