Menu
picture of tbs certificates
picture of tbs certificates
Les certificats
Notre gamme
Partenaires
Support
Numéro vert
Focus
Autres activités


Installer un certificat X509 SSL sur Apache (Linux, Debian, Unbuntu, windows wamp, Mac OS X, ...)

Si vous utiliser une version d'Apache supérieure ou égale à 2.4.8, consultez directement sa documentation.

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.

1- Récupérez le ou les certificats sur votre serveur

Retournez là ou vous avez généré la clef privée, par exemple:
cd /etc/httpd/conf
ou
cd /etc/apache/conf
ou
cd /etc/apache2/
Téléchargez les fichiers indiqués dans l'email de livraison :
(A partir de la page statut de votre certificat dans votre espace client chez TBS, cliquez sur le bouton "Voir le certificat" ou "Voir le dernier certificat")
  • A: votre certificat serveur (fichier avec l'extension .cer ou .crt )
  • B: la chaine de certification (fichier avec l'extension .txt)

2- Configurez Apache

L'installation d'un certificat sur un serveur Apache peut se résumer à définir 3 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 certificat.cer
  • SSLCertificateChainFile ( ou SSLCACertificateFile ) chemin vers le fichier chain.txt. Ce fichier contient le(s) certificat(s) constituant la chaine de certification de votre certificat (A chaque renouvellement ou re-fabrication, la chaine de certification peut avoir été mise à jour par l'autorité, reprenez donc bien celle que l'on vous fourni à chaque livraison).

Si vous utilisez Apache 1.3 avec mod_ssl ou Apache 2 ou assimilé (Mac OS X, WAMP, EasyPHP)

Trouvez le fichier de configuration existant pour votre apache. Souvent c'est
/etc/httpd/conf/httpd.conf
mais il n'est pas rare que la configuration du SSL soit dans un autre fichier, par exemple
/etc/httpd/conf/ssl/default-vhost.conf
/etc/httpd/conf/ssl.conf

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 :
  • 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.

  • Si vous n'avez qu'un seul certificat sur cette machine, localisez la section débutant par :
    <VirtualHost _default_:443>
    et modifiez les instructions suivantes pour pointer vers vos fichiers :
    # votre certificat serveur (A)
    SSLCertificateFile    /etc/httpd/conf/cert-0000000000-1234.cer
    # votre clef privée (générée initialement)
    SSLCertificateKeyFile /etc/httpd/conf/www.virtualhost.com.key
    # configuration du SSL
    SSLCipherSuite !EDH:!RC4:!ADH:!DSS:HIGH:+AES128:+AES256-SHA256:+AES128-SHA256:+SHA:!3DES
    
    SSLCompression off #Apache 2.4.3+              
    SSLProtocol all -SSLv2 -SSLv3
    SSLHonorCipherOrder on  # apache 2.1+
    
    Attention: SSLHonorCipherOrder n'est pas disponible sur tous les Apache, voir notre documentation.
    Et pour votre chaine de certification (B), ajoutez:
    SSLCertificateChainFile /etc/httpd/conf/chain-0000000000-1234.txt 
    Pour les très anciens apache, voir SSLCACertificateFile

    Désactiver SSLv2 et SSLv3 sur votre serveur Apache

    Dans votre configuration Apache, par exemple :
    • Configuration générale au serveur : /etc/apache2/conf/httpd.conf
    • Module SSL / configuration SSL : /etc/apache2/conf/sites-enable/ssl.conf
    • Votre configuration de site : <VirtualHost *:443>

    Retrouvez le paramètre SSLProtocol pour désactiver SSLv2 et SSLv3, par exemple :
      <VirtualHost *:443>
      ServerName www.monsite.fr
      DocumentRoot /var/www/www.monsite.fr
      SSLEngine on
      SSLProtocol all -SSLv2 -SSLv3
      SSLCertificateFile chemin/certificat-xxxx.cer
      SSLCertificateKeyFile chemin/clefprivee-xxxw.key
      SSLCertificateChainFile chemin/chain-xxx.txt
      </Virtual Host>
    

    Quels sont les risques liés au protocoles obsolètes (SSLv2, SSLv3, ...) ?

    N.B. : Dans cette configuration avancée, nous recommandons aussi de la configuration suivante pour les protocoles / algorithmes d'échange de clefs et de chiffrement :
    SSLCipherSuite !EDH:!RC4:!ADH:!DSS:HIGH:+AES128:+AES256-SHA256:+AES128-SHA256:+SHA:!3DES 
    

    TOMCAT sous apache APR

    <Connector port="443" maxHttpHeaderSize="8192"
    ...
                     SSLEnabled="true"
                     SSLCertificateFile="${SERVICE_HOME}/conf/certificat.cer"
                     SSLCertificateKeyFile="${SERVICE_HOME}/conf/clefprivee.key"
                     SSLCertificateChainFile="${SERVICE_HOME}/conf/chain-certificats.txt"
    ...
    

    3- Relancez Apache et testez

    Une fois la configuration en place, relancez le serveur Apache.
    service httpd restart
    ou
    /etc/init.d/apache restart
    Vérifiez le log (en cas d'erreur de syntaxe) et testez alors l'accès à votre site sécurisé avec IE 6 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

    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. Attention, cela peut poser des problèmes de compatibilité avec d'anciennes versions de navigateurs qui ne comprennent pas cette fonctionnalité du protocole SSL V3.
    • 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
        SSLProtocol all -SSLv2 -SSLv3
        SSLCertificateFile chemin/certificat-xxxx.cer
        SSLCertificateKeyFile chemin/clefprivee-xxxw.key
        SSLCertificateChainFile chemin/chain-xxx.txt
        </Virtual Host>
        
        <VirtualHost *:443>
        ServerName www.mywebsite.com
        DocumentRoot /var/www/mywebsite.com
        SSLEngine on
        SSLProtocol all -SSLv2 -SSLv3
        SSLCertificateFile chemin/certificat-yyyy.cer
        SSLCertificateKeyFile chemin/clefprivee-yyyy.key
        SSLCertificateChainFile chemin/chain-yyyy.txt
        </Virtual Host>
        
      ...
      

    Désactiver la compression TLS

    Si votre compression TLS est activée, nous vous recommandons de la désactiver afin de lutter contre l'attaque CRIME. Si votre version d'Apache est supérieure ou égale à 2.4.3, alors ajoutez la directive suivante à votre configuration de virtualhost:

    SSLCompression off

    Si votre version est inférieure, vous devez exporter la variable d'environnement suivante: OPENSSL_NO_DEFAULT_ZLIB=1 d'une manière lisible par votre serveur web. Par exemple, dans le cas d'un serveur Redhat/Centos, vous pouvez ajouter export OPENSSL_NO_DEFAULT_ZLIB=1 au fichier /etc/sysconfig/httpd. Plus d'informations sur le bugtracker Redhat.

    Liens externes sur le SNI

    Documentation externe

    Documentation similaire :

    Liens utiles


    Vérifiez l'installation de votre certificat grâce à CO-PiBot :

    Sur votre page statut du certificat, dans votre espace client chez TBS INTERNET, Vous y trouverez un bouton "Vérifier votre certificat" pour tester la bonne installation de votre certificat.