Configuration du serveur Apache pour utiliser SSL

From CC Doc
Jump to: navigation, search
This page is a translated version of the page Configuring Apache to use SSL and the translation is 100% complete.

Other languages:
English • ‎français

Page enfant de Creating a Webserver on CC-Cloud

Le terme SSL réfère à la fois au protocole Transport Layer Security (TLS) et à son prédécesseur Secure Sockets Layer (SSL). Ils servent au chiffrement des données communiquées sur les réseaux. Le chiffrement protège les données critiques qui transitent sur l'Internet, par exemple les mots de passe.

Certificat signé

Un certificat signé par une Autorité de certification (CA, pour Certificate Authority) permet aux utilisateurs d'un site Web de s'assurer qu'un tiers (le CA) confirme l'identité du site et prévient ce qu'on appelle une attaque de l'homme du milieu.
Plusieurs CAs exigent des frais annuels, contrairement à let's encrypt. Un certificat SSL signé par ce CA peut être créé et renouvelé automatiquement par l'outil Certbot qui configure aussi votre serveur Web pour l'utilisation de ce même certificat. Lisez la documentation certbot.

Certificat autosigné

Cette section décrit la procédure de création d'un certificat SSL autosigné et la configuration d'Apache pour le chiffrement. Il n'est pas recommandé d'utiliser un certificat autosigné sur un site de production d'importance; ces certificats conviendront cependant à la production sur des sites restreints à usage local, ou encore dans un environnement de test.

Les étapes suivantes décrivent la procédure sous Ubuntu. On trouvera certaines différences sous d'autres systèmes d'exploitation, notamment en ce qui a trait aux commandes, aux localisations ou aux noms des fichiers de configuration.

  1. Activer le module SSL
    Installez Apache (voir Installing Apache), puis activez le module SSL ainsi :
      [name@server ~]$ sudo a2enmod ssl
      [name@server ~]$ sudo service apache2 restart
  2. Créer un certificat SSL autosigné
    Question.png
    [name@server ~]$  sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt

    Si on vous demande une phrase de passe, assurez-vous de relancer la commande avec la syntaxe correcte, y compris l'option -node. Vous devrez ensuite répondre aux questions qui suivent, pour lesquelles nous donnons des exemples de réponse.

     Country Name (2 letter code) [AU]:CA
     State or Province Name (full name) [Some-State]:Nova Scotia
     Locality Name (eg, city) []:Halifax
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:Compute Canada
     Organizational Unit Name (eg, section) []:ACENET
     Common Name (e.g. server FQDN or YOUR name) []:XXX-XXX-XXX-XXX.cloud.computecanada.ca
     Email Address []:<your email>
    

    La réponse à Common Name est la plus importante; il s'agit du nom de domaine de votre serveur. Pour une machine virtuelle sur un nuage de Calcul Canada, remplacez les X dans l'exemple par l'adresse IP flottante associée à la machine virtuelle.

  3. Définir le propriétaire et les autorisations
    Pour définir le propriétaire et les autorisations associés à la clé privés, entrez les commandes
      [name@server ~]$ sudo chown root:ssl-cert /etc/ssl/private/server.key
      [name@server ~]$ sudo chmod 640 /etc/ssl/private/server.key
  4. Configurer Apache pour utiliser le certificat
    Modifiez le fichier de configuration SSL avec la commande
    Question.png
    [name@server ~]$ sudo vim /etc/apache2/sites-available/default-ssl.conf

    et remplacez les deux lignes suivantes

    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    

    par les trois lignes

    SSLCertificateFile      /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
    SSLCertificateChainFile /etc/ssl/certs/server.crt
    
  5. Vérifiez que le chemin pour DocumentRoot correspond au chemin défini dans /etc/apache2/sites-available/000-default.conf , en autant que SSL s'applique à ce site.

  6. Renforcer la sécurité
    Redirigez les requêtes http vers https; exigez des versions plus à jour de SSL; utilisez de meilleures options de chiffrement, d'abord en modifiant le fichier ainsi
    Question.png
    [name@server ~]$ sudo vim /etc/apache2/sites-available/default-ssl.conf
    et ensuite en ajoutant
     ServerName XXX-XXX-XXX-XXX.cloud.computecanada.ca
      SSLProtocol all -SSLv2 -SSLv3
     SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4
     SSLHonorCipherOrder on
    

    dans le bas, à l'intérieur de la balise <VirtualHost>; remplacez les X aux deux endroits par l'IP de la machine virtuelle (notez qu'il faut utiliser des tirets dans l'IP plutôt que des points). Entrez une commande de redirection sur le serveur virtuel en modifiant le fichier de configuration du site Web par défaut avec

    Question.png
    [name@server ~]$  sudo vim /etc/apache2/sites-available/000-default.conf
    et en ajoutant la ligne
    Redirect permanent / https://XXX-XXX-XXX-XXX.cloud.computecanada.ca
    

    à l'intérieur de la balise <VirtualHost>.

  7. Activer le site sécurisé
      [name@server ~]$ sudo a2ensite default-ssl.conf
      [name@server ~]$ sudo service apache2 restart