Outils pour utilisateurs

Outils du site


issue126:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue126:c_c [2017/11/08 09:15] d52frissue126:c_c [2017/11/09 15:31] (Version actuelle) auntiee
Ligne 1: Ligne 1:
 **As the web moves towards a “secure by default” approach, enabling HTTPS on your website is becoming more and more important. I’ve spent the last few weeks updating the websites I manage to run HTTPS, including some that run in docker. As some readers may have noticed, I have also switched the fullcirclemagazine.org website over to HTTPS. The reason for this is simple - Google (and others) are encouraging the use of HTTPS by clearly denoting (with a green padlock) encryption on websites. This month’s article will therefore be dedicated to what HTTPS is, how to get set up with Let’s Encrypt, and how to combine it with docker.** **As the web moves towards a “secure by default” approach, enabling HTTPS on your website is becoming more and more important. I’ve spent the last few weeks updating the websites I manage to run HTTPS, including some that run in docker. As some readers may have noticed, I have also switched the fullcirclemagazine.org website over to HTTPS. The reason for this is simple - Google (and others) are encouraging the use of HTTPS by clearly denoting (with a green padlock) encryption on websites. This month’s article will therefore be dedicated to what HTTPS is, how to get set up with Let’s Encrypt, and how to combine it with docker.**
  
-Comme le Web évolue vers une approche "sécurisée par défaut", l'autorisation du HTTPS sur votre site Web devient de plus en plus important. J'ai passé les quelques dernières semaines à mettre à jour les sites Web que je gère pour qu'il fassent tourner HTTPS, dont certains tournent sous docker. Comme certains lecteurs pourraient l'avoir noté, j'ai aussi modifié le site Web fullcirclemagazine.org en HTTPS. La raison de ceci est simple Google et (d'autres) encouragent l'utilisation de HTTPS en indiquant clairement (avec un cadenas vert) le cryptage des site Web. L'article de ce mois sera donc dédicacé à ce qu'est HTTPS, comment l'installer avec Let's Encrypt et comment le marier avec docker.+Comme le Web évolue vers une approche « sécurisée par défaut », l'activation du HTTPS sur votre site Web devient de plus en plus importante. J'ai passé ces dernières semaines à mettre à jour les sites Web que je gère pour qu'il fassent tourner HTTPS, y compris certains qui tournent sous Docker. Comme certains lecteurs pourraient l'avoir remarqué, j'ai aussi modifié le site Web fullcirclemagazine.org en HTTPS. La raison en est simple Google (et d'autres) encouragent l'utilisation de HTTPS en indiquant clairement (avec un cadenas vert) le cryptage des sites Web. L'article de ce mois sera donc dédié à ce qu'est HTTPS, comment l'installer avec Let's Encrypt et comment le marier à Docker.
  
 **What is HTTPS and Let’s Encrypt? **What is HTTPS and Let’s Encrypt?
Ligne 11: Ligne 11:
 Qu'est-ce que HTTPS et Let's Encrypt ? Qu'est-ce que HTTPS et Let's Encrypt ?
  
-HTTPS aide à protéger les données privées quand on s'identifie, quand on utilise des formulaires HTML ou, autrement, quand on partage des informations sur un site Web. L'information est sécurisée via un cryptage et peut aussi prévenir les attaques du genre homme-au-milieu (man-in-the-middle - quand une autre équipement intercepte vos paquets). Suivant votre hôte, il peut être automatiquement configuré ou une option peut être payée pour. Avant, les certificats SSL étaient émis seulement par quelques sociétés (en payant) et les certificats auto-signés n'étaient pas considérés comme sûrs.+HTTPS aide à protéger les données privées quand on s'identifie, quand on utilise des formulaires HTML ou, autrement, quand on partage des informations sur un site Web. L'information est sécurisée via un cryptage et peut aussi prévenir les attaques du genre homme-au-milieu (man-in-the-middle - quand un autre équipement intercepte vos paquets). Selon votre hôte, il peut être  configuré automatiquement ou une option pour laquelle il faut payer. Avant, les certificats SSL étaient émis seulement par quelques sociétés (en payant) et les certificats auto-signés n'étaient pas considérés comme sûrs.
  
-Ça a changé récemment avec Let's Encrypt, qui crée des certificats sûrs et fiables gratuitement. La principale différence entre les certificats payants et ceux gratuits par l'intermédiaire de Let's Encrypt est la durée. Les certificats de Let's Encrypt expirent après 90 jours ce qui signifie que vous devez les renouveler par vous-même plus souvent que les certificats payants. Cependant, ceci peut être fait avec un outil d'aide (j'utilise un « certbot ») et, en combinaison avec crontab, les certificats seront maintenus à jour sans grand effort.+Ça a changé récemment avec Let's Encrypt, qui crée des certificats sûrs et fiables gratuitement. La principale différence entre les certificats payants et ceux gratuits par l'intermédiaire de Let's Encrypt est la durée. Les certificats de Let's Encrypt expirent au bout de 90 joursce qui signifie que vous devez vous-même les renouveler plus souvent que les certificats payants. Cependant, ceci peut être fait avec un outil d'aide (j'utilise « certbot ») et, en combinaison avec crontab, les certificats seront maintenus à jour sans grand effort.
  
 **What is Docker? **What is Docker?
Ligne 21: Ligne 21:
 qu'est-ce que Docker ? qu'est-ce que Docker ?
  
-Docker est un système pour faire tourner des services dans des conteneurs virtuels et il est construit sur le noyau Linux existant. Ceci signifie qu'il est plus rapideet qu'il demande moins d'espaces disque et RAM que des environnements complètement virtualisés (comme Vagrant). Vous pouvez l'utiliser pour faire tourner un nombre quelconque de systèmes, et des conteneurs multiples peuvent communiquer entre eux via un réseau privé.+Docker est un système pour faire tourner des services dans des conteneurs virtuelset il est construit sur le noyau Linux existant, ce qui signifie qu'il est plus rapide et qu'il demande moins d'espace disque et RAM que des environnements complètement virtualisés (comme Vagrant). Vous pouvez l'utiliser pour faire tourner un nombre quelconque de systèmes, et des conteneurs multiples peuvent communiquer entre eux via un réseau privé.
  
 **Prerequisites **Prerequisites
Ligne 31: Ligne 31:
 Prérequis Prérequis
  
-Dans mon cas, les services avec lesquels je travaillais couvraient 3 conteneurs. L'un faisait tourner une image d'un nginx-proxy de jwilder, un autre une image d'un nginx de base et un autre une image d'un apache de base. les images des base de nginx et apache étaient liées ensemble sous forme de serveur LEAMP (une serveur Apache derrière un serveur Nginx, où Nginx s'occupe des fichiers statiques et Apache gère les fichiers PHP).+Dans mon cas, les services avec lesquels je travaillais couvraient 3 conteneurs. L'un faisait tourner une image de nginx-proxy de jwilder, un autreune image d'un nginx de base et un autreune image d'un apache de base. Les images de base de nginx et apache étaient liées entre elles sous forme de serveur LEAMP (un serveur Apache derrière un serveur Nginx, où Nginx s'occupe des fichiers statiques et Apache gère les fichiers PHP).
  
 Nginx-proxy est une image qui dirige et gère automatiquement le trafic vers divers autres conteneurs (de sorte que les URL conduisent vers le bon conteneur). Nginx-proxy est une image qui dirige et gère automatiquement le trafic vers divers autres conteneurs (de sorte que les URL conduisent vers le bon conteneur).
Ligne 44: Ligne 44:
 Par où commencer ? Par où commencer ?
  
-Ma première recherche ne m'a pas donné trop de messages sur ce sujet particulier. Il y en avait plein sur le paramétrage de nginx et apache pour des serveurs de sites HTTPS. Cependant, la complication vient de l'utilisation de nginx-proxy. Comme le trafic est techniquement transmis à 3 conteneurs, j'ai présumé au début que j'aurai besoin de configurer SSH sur les deux conteneurs Nginx-proxy et Nginx.+Ma première recherche ne m'a pas donné trop de messages sur ce sujet précis. Il y en avait plein sur le paramétrage de nginx et apache pour desservir des sites HTTPS. Cependant, la complication vient de l'utilisation de nginx-proxy. Comme le trafic est techniquement transmis à 3 conteneurs, j'ai présumé au début que j'aurais besoin de configurer SSH sur les deux conteneurs Nginx-proxy et Nginx.
  
-Heureusement, après quelques essais et erreurs, il est apparu que vous n'avez besoin de configurer HTTPS que sur Nginx-proxy et que les paramètres sont ensuite partagés.+Heureusement, après un peu de tâtonnement, il s'avère que vous n'avez besoin de configurer HTTPS que sur Nginx-proxy et que les paramètres sont ensuite partagés.
  
 **Create Certificate **Create Certificate
Ligne 60: Ligne 60:
 Créer un certificat Créer un certificat
  
-Pour le faire, vous devez installer un certbot, qui dépend de l'OS de votre serveur et de sa version. Pour la plupart des versions d'Ubuntu, vous devrez ajouter le ppa certbot/certbot (instructions ici : https://certbot.eff.org/all-instructions/).+Pour ce faire, vous devez installer certbot, ce qui dépend de l'OS de votre serveur et de sa version. Pour la plupart des versions d'Ubuntu, vous devrez ajouter le ppa certbot/certbot (instructions ici : https://certbot.eff.org/all-instructions/).
  
-Une fois le certbot installé, vous voudrez créer votre certificat. Je l'ai fait en utilisant la commande certonly, car je ne veux pas que le certbot tente de tout auto-configurer. Pour configurer le certificat, lancez la commande suivante :+Une fois certbot installé, vous pourrez créer votre certificat. Je l'ai fait en utilisant la commande certonly, car je ne veux pas que certbot tente d'auto-configurer quoi que ce soit. Pour configurer le certificat, lancez la commande suivante :
  
 certbot certonly certbot certonly
  
-Puis répondez aux questions (vous aurez besoin de le faire pointer sur la vraie racine de votre site Web qui est accessible publiquement, autrement Let's Encrypt ne peut pas certifier votre propre domaine et le certificat n'est pas créé). Une fois le certificat créé, il sera stocké dans /etc/letsencrypt/live/<URL>/fullchain.pem et /etc/letsencrypt/live/<URL>/privkey.pem.+Puis répondez aux questions (vous aurez besoin de le faire pointer sur la vraie racine de votre site Web qui est accessible publiquement, autrement Let's Encrypt ne peut pas certifier que le domaine vous appartient et le certificat n'est pas créé). Une fois le certificat créé, il sera stocké dans /etc/letsencrypt/live/<URL>/fullchain.pem et /etc/letsencrypt/live/<URL>/privkey.pem.
  
 **Create folder for docker volume **Create folder for docker volume
Ligne 82: Ligne 82:
 Créer un dossier pour le volume docker Créer un dossier pour le volume docker
  
-Alors que vous pouvez lier le dossier de letencrypt avec docker, je vous recommanderais de créer un nouveau dossier auquel vous pourrez facilement accéder (dans votre répertoire home d'utilisateur, par exemple).+Alors que vous pouvez relier le dossier de letsencrypt à docker, je vous recommanderais de créer un nouveau dossier auquel vous pourrez facilement accéder (dans votre répertoire home, par exemple).
  
 Une commande qui fonctionne pour cela serait : Une commande qui fonctionne pour cela serait :
Ligne 90: Ligne 90:
 cp /etc/letsencrypt/live/<URL>/{fullchain,privkey}.pem ~/nginxproxy-certs/ cp /etc/letsencrypt/live/<URL>/{fullchain,privkey}.pem ~/nginxproxy-certs/
  
-Si vous voulez que nginx-proxy utilise automatiquement les certificats, vous devrez les avoir stocké dans le style de <URL>.crt et <URL>.key. Ils peuvent être des liens symboliques, si vous voulez créer un sous-dossier dans nginxproxy-certs pour chaque URL. cependant, les liens doivent être au plus haut niveau du répertoire (directement dans nginxproxy-certs).+Si vous voulez que nginx-proxy utilise automatiquement les certificats, vous devrez les avoir stockés dans le style de <URL>.crt et <URL>.key. Ils peuvent être des liens symboliques, si vous voulez créer un sous-dossier dans nginxproxy-certs pour chaque URL. Cependant, les liens doivent être au plus haut niveau du répertoire (directement dans nginxproxy-certs).
  
 **Link Certificate to Nginx-Proxy **Link Certificate to Nginx-Proxy
Ligne 110: Ligne 110:
 docker run -d -p 80:80 -p 443:443 -v /path/to/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy docker run -d -p 80:80 -p 443:443 -v /path/to/certs:/etc/nginx/certs -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
  
-Remplacez /path/to/certs avec le vrai dossier dans lequel vous avez placé le certificat. Si vous avez indiqué correctement les noms des fichiers, vous aurez juste à vous assurer que la ligne VIRTUAL_HOST est correcte pour chaque conteneur docker.+Remplacez /path/to/certs par le vrai dossier dans lequel vous avez placé le certificat. Si vous avez indiqué correctement le nom des fichiers, vous aurez juste à vous assurer que la ligne VIRTUAL_HOST est correcte pour chaque conteneur docker.
  
-Si vous préférez avoir plus de contrôle (ou si vous avez un certificat pour plusieurs domaines), vous pouvez, à la place, paramétrer la variable CERT_NAME dans l'environnement du conteneur. Si vos fichiers s'appellent example.crt et example.key, « example » sera juste lu dans CERT_NAME.+Si vous préférez avoir plus de contrôle (ou si vous avez un seul certificat pour plusieurs domaines), vous pouvez, à la place, paramétrer la variable CERT_NAME dans l'environnement du conteneur. Si vos fichiers s'appellent example.crt et example.key, « example » sera juste lu dans CERT_NAME.
  
-Pour une utilisation et une gestion facilitée des variables, je recommanderais d'utiliser docker-compose, plutôt que de la faire directement au lancement de docker.+Pour une utilisation et une gestion facilitée des variables, je recommanderais l'utilisation de docker-compose, plutôt que de le faire directement au lancement de docker.
  
 **Possible issues **Possible issues
Ligne 122: Ligne 122:
 Problèmes possibles Problèmes possibles
  
 +J'ai rencontré un problème quand j'ai relié par erreur le fichier cert au lieu de la clé privée, ce qui a entraîné le non-fonctionnement de nginx -s reload sur nginx-proxy. Il n'y avait pas d'erreurs évidentes, mais ça avait pour résultat que le port 443 était fermé et que la connexion était refusée. Aussi, si nginx-proxy ne fonctionne pas pour vous, assurez-vous que vous êtes relié au bon dossier et que vous avez les permissions en lecture/écriture ; ensuite, lancez nginx -s reload manuellement pour voir s'il n'y a pas d'erreur.
  
 **Where can I find more information on Docker? **Where can I find more information on Docker?
Ligne 130: Ligne 130:
 I hope this article proves useful for anyone who, like me, was making the process much more complicated than necessary, or was running into a similar issue as I did. If you have any questions, comments, or article suggestions, feel free to contact me at lswest34+fcm@gmail.com. ** I hope this article proves useful for anyone who, like me, was making the process much more complicated than necessary, or was running into a similar issue as I did. If you have any questions, comments, or article suggestions, feel free to contact me at lswest34+fcm@gmail.com. **
  
-**Possible issues+Où puis-je trouver plus d'information sur Docker ?
  
-I ran into an issue where I had mistakenly linked the cert file in place of the private key, which resulted in nginx -s reload failing on nginx-proxy. There were no obvious errorsbut it resulted in the port 443 being closed, and the connection being refusedSo if nginx-proxy isn’t working properly for youmake sure you are linking the correct folder, and have read/write permissions; then run nginx -s reload manually to see if there are any errors.**+Les pages hub de Docker pour les différentes images vous disent typiquement comment les configurer. Si vous lisez la page de documentation de docker-composevous pourrez l'utiliser aussi sans problèmeSi vous voulez lire mon article sur Dockervous pouvez le trouver dans le n° 107 du FCM.
  
-**Where can I find more information on Docker?+J'espère que cet article se montrera utile à toute personne qui, comme moi, rend les processus plus compliqués que nécessaire, ou qui tombe sur un problème comme le mien. Si vous avez une question, un commentaire ou un suggestion d'article, n'hésitez pas à me contacter par courriel à lswest34+fcm@gmail.com.
  
-The docker hub pages for the various images typically tell you how to configure them. If you read the documentation page on docker-compose, you’ll also be able to use that without issue. If you want to read my article on Docker, you can find it in FCM#107. 
- 
-I hope this article proves useful for anyone who, like me, was making the process much more complicated than necessary, or was running into a similar issue as I did. If you have any questions, comments, or article suggestions, feel free to contact me at lswest34+fcm@gmail.com. ** 
issue126/c_c.1510128914.txt.gz · Dernière modification : 2017/11/08 09:15 de d52fr