Installer un certificat SSL sur Apache 2.4.8+
Vous avez reçu votre certificat par email, avec éventuellement un ou plusieurs certificats intermédiaires, et un certificat racine. Gardez cet email sous la main.Sous linux, pour vérifier le numéro de version de votre serveur Apache vous pouvez executer la commande suivante :
#apachectl -version Server version: Apache/2.2.26 (Unix) Server built: Dec 10 2013 22:09:38 #apache2ctl -version Server version: Apache/2.4.10 (Debian) Server built: Oct 9 2014 22:21:52Pour une version de Apache antérieur à 2.4.8, voir notre documentation ici
1- Récupérez le ou les certificats sur votre serveur
Retournez là ou vous avez généré la clef privée (et votre fichier CSR), par exemple:cd /etc/apache2/SSL2015 ou cd /etc/apache/conf/SSL2015 ou cd /etc/httpd/conf/SSL2015Ou encore dans un environnement Windows (EasyPHP, Wamp, ...) :
C:\Program Files\Apache Software Foundation\Apache X.X\conf\SSL2015 C:\Program Files\Apache Software Foundation\EasyPHP\SSL2015Téléchargez dans ce dossier sur votre serveur le fichier indiqué dans l'email de livraison :
A partir de la page statut de votre certificat dans votre espace client chez TBS CERTIFICATS,
cliquez sur le bouton "Voir le certificat" (ou "Voir le dernier certificat")
puis "Voir le certificat au format X509 avec chaine".
Vous téléchargerez ainsi un fichier pem-xxx-yyy.pem,
Il contient votre certificat SSL ainsi que la chaîne de certification au format PEM.
2- Configurez Apache : /etc/apache2/sites-enabled/default-ssl.conf
Dans une installation standard sous linux, le fichier de configuration avancé du SSL est situé/etc/apache2/mods-enabled/ssl.confmais ce n'est pas dans ce fichier que vous activez le SSL pour un site.
Il vous faudra éditer, par exemple, le fichier
/etc/apache2/sites-enabled/default-ssl.confL'installation d'un certificat sur un serveur Apache peut se résumer à définir 2 variables dans le fichier de configuration d'Apache :
- SSLCertificateKeyFile chemin vers le fichier clef-privée.key utilisé lors de la génération du CSR initiale
- SSLCertificateFile chemin vers le fichier PEM contenant le certificat d'entité finale et les certificats intermédiares
<IfModule mod_ssl.c> <VirtualHost _default_:443> ... SSLEngine on ... SSLCertificateFile /etc/apache2/SSL2015/pem-xxx-yyy.pem SSLCertificateKeyFile /etc/apache2/SSL2015/www.mondomaine.fr.rsa.key ... SSLCipherSuite !EDH:!RC4:!ADH:!DSS:HIGH:+AES128:+AES256-SHA256:+AES128-SHA256:+SHA:!3DES:!NULL:!aNULL:!eNULL SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLOpenSSLConfCmd ECDHParameters secp384r1 #selection de courbe ECDH ... </VirtualHost> </IfModule>
Ou encore dans un environnement Windows (EasyPHP, Wamp, ...) :
C:/Program Files/Apache Software Foundation/Apache X.X/conf/extra/httpd-ssl.conf C:/Program Files/Apache Software Foundation/EasyPHP/N.B.: Attention, certaines configurations d'apache sur windows peuvent poser des erreurs si le(s) chemin(s) d'accès :
- n'est pas complet ou n'utilise pas les anti-slash pour définir l'arborescence :
SSLCertificateFile C:\Program Files\Apache Software Foundation\Apache X.X\conf\SSL2015\pem-xxx-yyy.pem SSLCertificateKeyFile C:\Program Files\Apache Software Foundation\Apache X.X\conf\SSL2015\www.mondomaine.fr.rsa.key
- possède des caractères spéciaux : espace, parenthèse (), crochets [], accents éàèêîï, ...
- le chemin d'accès est trop long ( > 200 caractères)
- les fichiers de clef privée, certificats, et chaine de certification ne sont pas accessible en lecture (droits windows) pour l'utilisateur / session qui lance le serveur Apache / httpd.
3- Relancez Apache et testez
Vérifiez qu'il n'y a pas d'erreur de syntaxe :#apachectl configtest Syntax OKUne fois la configuration en place, relancez le serveur Apache.
#service httpd restart ou #/etc/init.d/apache restart ou #systemctl restart httpd ou #systemctl restart apache2Vérifiez le log (en cas d'erreur de syntaxe) et testez alors l'accès à votre site sécurisé avec IE et Firefox.
N.B. : Si le certificat installé ne correspond pas à la clef privée, alors le serveur Apache ne pourra démarrer et même le service HTTP est alors en panne. Comment vérifier si le certificat correspond à la clef ?
Sur le plates-formes windows (Easy Php, WAMP, ...)
- Vous devez avoir dans la barre des taches
un menu "d'administration / gestion" de serveur Apache pour "éteindre" et "allumer" le serveur Apache.
- Pensez à vérifier dans les règles de sécurité (Pare-feu / Firewall) que le port HTTPS (443) est bien autorisé / ouvert.
- En cas d'erreurs diverses, le serveur risque de ne plus démarrer. Il faut alors consulter les logs d'erreur: les messages d'erreur peuvent aussi être inscrits dans "l'observateur d'évènements" de windows.
Recommandations de sécurité
Activer l'OCSP Stappling
Nous vous recommandons d'activer l'OCSP Stappling afin de garantir à vos utilisateur la non-révocation de votre certificat plus efficacement et rapidement qu'avec les simples mécanismes intégrés des navigateurs.
Activer le support HSTS
Pour protéger vos utilisateurs d'éventuelles attaques de type Man in the Middle, et garantir la sécurité de votre site, nous vous conseillons d'activer HSTS.
Générer des groupes dh forts
Nous vous recommandons de générer des groupes dh uniques à votre machine afin d'accroitre sa sécurité. Pour cela, lancez la commande suivante et placez son résultat dans un dossier accessible à votre serveur web (par exemple, le dossier SSL2015)
openssl dhparam -out dhparams.pem 2048
Si vous disposez d'openssl 1.0.2+
Éditez votre configuration avec la ligne suivante :
SSLOpenSSLConfCmd DHParameters "/etc/apache2/SSL2015/dhparams.pem"
Si vous disposez d'une version d'openssl inférieure à 1.0.2.
Éditez votre fichier de certificat (pem-xxx-yyy.pem) pour y ajouter à la fin, le contenu du fichier dhparams.pem que vous venez de générer.Réglage fin du niveau de chiffrement
Dans une installation standard sous linux, le fichier de configuration avancé du SSL est situé/etc/apache2/mods-enabled/ssl.conf
- Configurer Apache pour ne fonctionner qu'en 128-bit
- Configurer Apache pour un certificat serveur garanti 128-bit
Choisissez une courbe elliptique forte pour ECDH (openssl 1.0.2+)
Nous vous recommandons de choisir une courbe elliptique forte pour l'échange de clé ECDH:SSLOpenSSLConfCmd ECDHParameters secp384r1
4 - Vérifiez l'installation de votre certificat grâce à CO-PiBot :
Sur votre page statut du certificat, dans votre espace client chez TBS CERTIFICATS, Vous y trouverez un bouton "Vérifier votre certificat" pour tester la bonne installation de votre certificat.
Apache et le SNI (TLS Server Name Indication)
Cela consiste à installer plusieurs certificats SSL sur un même serveur utilisant un seul numéro IP. La quasi-totalité des navigateurs est compatible avec le SNI (consulter la liste).- Vérifier que le module SSL installé sur votre serveur Apache prend bien en charge le SNI (apache/mod_ssl)
- Dans la configuration SSL, interdire l’utilisation de la version 2 du protocole SSL : SSLProtocol all -SSLv2 -SSLv3
- Pour chaque VirtualHost indiquez la clef privée, le certificat et la chaine de certification à utiliser :
<NameVirtualHost *:443> <VirtualHost *:443> ServerName www.monsite.fr DocumentRoot /var/www/www.monsite.fr ... SSLEngine on SSLCertificateFile chemin/certificat-xxxx.pem SSLCertificateKeyFile chemin/clefprivee-xxxx.key </Virtual Host> <VirtualHost *:443> ServerName www.mywebsite.com DocumentRoot /var/www/mywebsite.com ... SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCertificateFile chemin/certificat-yyyy.pem SSLCertificateKeyFile chemin/clefprivee-yyyy.key </Virtual Host> ...
Liens externes sur le SNI
- Est-il possible de mettre plusieurs certificats SSL sur la même machine ? TLS SNI ?
- Est-il possible d'utiliser l'hébergement virtuel basé sur le nom d'hôte pour différencier plusieurs hôtes virtuels ?
- Apache + SNI : avoir plusieurs certificats SSL sur une même adresse IP
- Remarque : Pour les serveurs ne supportant pas le SNI.
Solution : commandez un certificat UCC (Multi-SANs) ou Wildcard.
Liens utiles
Documentation interne :
- Apache sous Mac OS X
- ApacheSSL chez NEXEN
- Mise en place de certificats en mode Dual RSA/ECC sous Apache
- Générer un CSR pour Apache
- Comment vérifier si le certificat correspond bien à la clef privée ?
- Tout sur le 128 bits
- Convertir un #PKCS12 (PFX) en PEM (Mircosoft, Firewall, ... vers Apache)
- Fabriquer un #PKCS12 (ou PFX) à partir de fichiers pour OpenSsl (PEM : .cer, .p7b, .key)
- Déplacer ou copier un certificat d'apache vers Tomcat
- Déplacer ou copier un certificat de tomcat vers Apache
- Déplacer ou copier un certificat de IIS (5/6 et 7) vers Apache
- Déplacer ou copier un certificat d'apache vers Microsoft IIS (5/6 et 7) / ISA