Browse Source

Merge branch 'master' of ssh://git.lecygnenoir.info:2223/LecygneNoir/blog.victor-hery.com

pull/4/head
LecygneNoir 3 years ago
parent
commit
672e9aa974
8 changed files with 150 additions and 134 deletions
  1. +7
    -7
      content/2018/routeur-4g-lvl1-boostez-votre-connexion-a-la-maison.rst
  2. +4
    -4
      content/2019/rudder-outil-conformite.rst
  3. +4
    -4
      content/Réseaux/proxmox-lan-au-sein-d-une-dedibox-online.md
  4. +22
    -22
      content/Système/configurer-reverse-proxy-apache.md
  5. +33
    -32
      content/Système/configurer-reverse-proxy-haproxy.md
  6. +42
    -31
      content/Système/connexion-ssh-par-cle.md
  7. +18
    -18
      content/Système/use-letsencrypt-haproxy.md
  8. +20
    -16
      content/Système/utiliser-letsencrypt-haproxy.md

+ 7
- 7
content/2018/routeur-4g-lvl1-boostez-votre-connexion-a-la-maison.rst View File

@ -72,7 +72,7 @@ Dès que la connexion au WT3020 est établie, on peut se connecter en telnet. Pa
Les identifiants par défaut sont ci-dessous :
.. code::
.. code-block:: bash
$ telnet 192.168.8.1
Trying 192.168.8.1...
@ -85,7 +85,7 @@ Les identifiants par défaut sont ci-dessous :
On va ensuite récupérer l'image openwrt. Pensez à aller vérifier si c'est bien la dernière en date ;-)
.. code::
.. code-block:: bash
# cd /tmp
# wget http://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7620/openwrt-15.05-ramips-mt7620-wt3020-8M-squashfs-sysupgrade.bin
@ -101,7 +101,7 @@ La première chose que l'on va faire, c'est dégager telnet et configurer ssh.
Pour cela, on va se reconnecter une dernière fois en telnet. **Notez que OpenWRT par défaut utilise 192.168.1.0/24 comme réseau.**
.. code::
.. code-block:: bash
$ telnet 192.168.1.1
Trying 192.168.1.1...
@ -114,7 +114,7 @@ Pour cela, on va se reconnecter une dernière fois en telnet. **Notez que OpenWR
Comme l'indique si gentiment le motd, il suffit de configurer un mot de passe à l'aide de ``passwd`` pour activer le SSH et désactiver telnet, il n'y a plus qu'à :
.. code::
.. code-block:: bash
root@OpenWrt:/# passwd
Changing password for root
@ -162,7 +162,7 @@ Openwrt n'a pas de base les drivers nécessaires pour reconnaître les périphé
Connectez vous en SSH au routeur et installez les paquets :
.. code::
.. code-block:: bash
opkg update
opkg install kmod-usb-net kmod-usb-net-rndis kmod-usb-net-cdc-ether usbutils udev
@ -183,7 +183,7 @@ Connectez votre clef 4G, puis connectez vous en ssh au routeur.
La commande
.. code::
.. code-block:: bash
ip a
@ -251,7 +251,7 @@ Connectez vous sur l'interface web d'OpenWRT, et rendez-vous dans l'onglet Netwo
Rajoutez à la fin du fichier une règle iptables comme suit, en utilisant l'interface réseau de la clef 4G utilisée plus haut :
.. code::
.. code-block:: bash
iptables -t mangle -I POSTROUTING -o INTERFACE_4G -j TTL --ttl-set 66

+ 4
- 4
content/2019/rudder-outil-conformite.rst View File

@ -65,7 +65,7 @@ En outre rudder conseille de séparer vos partitions, notamment /var où il écr
Lançons donc notre petite installation, pour du debian :
.. code::
.. code-block:: bash
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -
echo "deb http://repository.rudder.io/apt/5.0/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.list
@ -75,7 +75,7 @@ Lançons donc notre petite installation, pour du debian :
Une fois l'installation terminée, rudder met à disposition un script pour permettre de configurer le serveur en répondant à quelques questions :
.. code::
.. code-block:: bash
/opt/rudder/bin/rudder-init
@ -101,7 +101,7 @@ Mais pour l'exemple, on va en installer un 2eme.
Sur une machine différente du serveur rudder :
.. code::
.. code-block:: bash
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -
echo "deb http://repository.rudder.io/apt/5.0/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.list
@ -114,7 +114,7 @@ Il va falloir lui spécifier où est son serveur via le fichier `/var/rudder/cfe
Une fois cela fait vous pouvez le démarrer :
.. code::
.. code-block:: bash
rudder agent start

+ 4
- 4
content/Réseaux/proxmox-lan-au-sein-d-une-dedibox-online.md View File

@ -80,7 +80,7 @@ Status: published
<pre class="brush:bash;">
$ iptables -t nat -A POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
$ echo 1 &gt; /proc/sys/net/ipv4/ip_forward
</pre>
```
<p>
Cela va permettre d'activer l'ip forwarding sur votre interface, et va faire en sorte que toutes vos VM en 192.168.0.0/16 seront nattées lorsqu'elles essaieront de joindre une machine qui n'est pas en 192.168.0.0/16.</p>
@ -96,7 +96,7 @@ Status: published
<p>
<pre class="brush:bash;">
vzctl set VMID --netif_add eth1,,,,vmbr1 --save
</pre>
```
<p>
Ceci va permettre de rajouter à la machine VMID une interface eth1, branchée sur vmbr1. L'adresse MAC sera générée automatiquement. Le --save rend la modification permanente même après redémarrage de la VM.</p>
<p>
@ -119,7 +119,7 @@ vzctl set VMID --netif_add eth1,,,,vmbr1 --save
echo 1 &gt; /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
</pre>
```
<p>
De cette façon, le NAT sera configuré au démarrage sur vmbr0.</p>
<p>
@ -129,7 +129,7 @@ post-down iptables -t nat -D POSTROUTING -o vmbr0 -s 192.168.0.0/16 ! -d 192.168
addresse 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.0.255
</pre>
```
<p>
&nbsp;</p>
<p>

+ 22
- 22
content/Système/configurer-reverse-proxy-apache.md View File

@ -81,17 +81,17 @@ Status: published
<p>Connectez vous sur votre serveur (mandataire), puis tapez :</p>
<pre>
```
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http</pre>
$ sudo a2enmod proxy_http```
<p>&nbsp;</p>
<p>Redémarrez ensuite Apache un petit coup</p>
<pre>
$sudo /etc/init.d/apache restart</pre>
```
$sudo /etc/init.d/apache restart```
<p>&nbsp;</p>
@ -103,14 +103,14 @@ $sudo /etc/init.d/apache restart
<p>Editez un fichier dans /etc/apache2/site-available/</p>
<pre>
$ sudo nano /etc/apache2/sites-available/monsite</pre>
```
$ sudo nano /etc/apache2/sites-available/monsite```
<p>&nbsp;</p>
<p>Puis configurez votre hôte comme suit :</p>
<pre>
```
&lt;VirtualHost *:80&gt;
#
ServerName nomdedomaine.tld #
@ -119,7 +119,7 @@ ProxyRequests off
ProxyPass / http://IPSERVEURWEBINTERNE/
ProxyPassReverse / http://IPSERVEURWEBINTERNE/
#
&lt;/VirtualHost&gt;</pre>
&lt;/VirtualHost&gt;```
<p>&nbsp;</p>
@ -133,9 +133,9 @@ ProxyPassReverse / http://IPSERVEURWEBINTERNE/
<p>Faites</p>
<pre>
```
$ sudo a2ensite monsite
</pre>
```
<p>pour chaque fichier que vous avez créé.</p>
@ -143,8 +143,8 @@ $ sudo a2ensite monsite
<p>Ensuite, rechargez la configuration Apache (pas besoin de redémarrer)</p>
<pre>
$ sudo /etc/init.d/apache2 reload</pre>
```
$ sudo /etc/init.d/apache2 reload```
<p>&nbsp;</p>
@ -184,26 +184,26 @@ $ sudo /etc/init.d/apache2 reload
<p>Il vous faudra activer le SSL sur votre reverse proxy :&nbsp;</p>
<pre>
```
$ sudo a2enmod ssl
$ sudo /etc/init.d/apache2 restart
</pre>
```
<p>Ensuite, placez vos certificats (clef publique, clef privée) dans le dossier /etc/apache2/ssl/.</p>
<pre>
```
$ sudo cp moncertificat.* /etc/apache2/ssl/
</pre>
```
<p>Créez l'hôte virtuel qui servira pour votre redirection :</p>
<pre>
```
sudo nano /etc/apache2/site-available/monproxySSL
</pre>
```
<p>Et remplissez le avec ceci :</p>
<pre>
```
&lt;VirtualHost *:443&gt;
# Décommentez cette ligne et indiquez-y l'adresse courriel de l'administrateur du site
@ -290,14 +290,14 @@ sudo nano /etc/apache2/site-available/monproxySSL
Redirect permanent / https://monsite.tld/
&lt;/VirtualHost&gt;
</pre>
```
<p>N'oubliez pas bien sûr d'activer votre nouvel hôte virtuel :</p>
<pre>
```
$ sudo a2ensite monproxyssl
$ sudo /etc/init.d/apache2 reload
</pre>
```
<p>Et voila, votre reverse proxy doit fonctionner en HTTPS :)</p>

+ 33
- 32
content/Système/configurer-reverse-proxy-haproxy.md View File

@ -79,9 +79,10 @@ Status: published
<p>Si vous voulez plus de détails sur les versions à installer, rendez vous sur <a href="http://haproxy.debian.net/">http://haproxy.debian.net/</a></p>
<pre>
```
aptitude update
aptitude install haproxy</pre>
aptitude install haproxy
```
### Global et default
@ -97,14 +98,14 @@ aptitude install haproxy
<p>Nous allons voir ici une configuration de frontend basique. Il est possible de faire des choses très compliquées, mais on va rester simple pour l'instant :-)</p>
<pre>
```
frontend http-in
bind IP_PUBLIQUE:80
mode http
option httplog
acl your_acl hdr(host) votresiteweb.tld
use_backend backend1 if your_acl
</pre>
```
<p>Attention, l'indentation est importante !</p>
@ -131,14 +132,14 @@ frontend http-in
<p>Maintenant que notre frontend est prêt à recevoir les requêtes publiques, il faut créer le backend qui sera à même de savoir <strong></strong> envoyer ces requêtes.</p>
<pre>
```
backend backend1
mode http
option httpchk
option forwardfor except 127.0.0.1
http-request add-header X-Forwarded-Proto https if { ssl_fc }
server web-server1 IP_SERVEUR_WEB:80 maxconn 32
</pre>
```
<p>De la même manière que pour le frontend, attention à l'indentation pour que les paramètres soient décalés en dessous du mot clef <em>backend</em></p>
@ -157,8 +158,8 @@ backend backend1
<p>Bien sûr, redémarrez haproxy pour appliquer la configuration.</p>
<pre>
systemctl restart haproxy</pre>
```
systemctl restart haproxy```
## Un peu plus loin : https
@ -168,14 +169,14 @@ systemctl restart haproxy
<p>Mettre en place un frontend https est tout ce qu'il y a de plus simple. On va tout simplement créer un deuxième frontend, cette fois bindé sur le port 443</p>
<pre>
```
frontend https-in
bind IP_PUBLIQUE:443 ssl crt /etc/haproxy/cert/ no-sslv3
mode http
option httplog
acl your_acl hdr(host) votresiteweb.tld
use_backend backend1 if your_acl
</pre>
```
<p>On voit quelques différences par rapport à la configuration définie plus haut.</p>
@ -186,8 +187,8 @@ frontend https-in
<li>crt /etc/haproxy/cert/ : définit le répertoire dans lequel vous mettre vos certificats. haproxy gère les certificats au format pem, que vous pouvez simplement créer de la façon suivante en mergeant le .crt et le .key :</li>
</ul>
<pre>
cat domain.tld.crt domain.tld.key &gt; domain.tld.pem</pre>
```
cat domain.tld.crt domain.tld.key &gt; domain.tld.pem```
<ul>
<li>no-sslv3 : cela permet de spécifier à haproxy de refuser d'utiliser le protocole sslv3, considéré désormais comme non sécurisé.</li>
@ -226,22 +227,22 @@ cat domain.tld.crt domain.tld.key > domain.tld.pem
<p>Cela se fait très simplement, en utilisant plusieurs acl dans le frontend, par exemple :</p>
<pre>
```
acl site1 hdr(host) site1.tld
acl sous-domaine hdr(host) sousdomain.site1.tld
acl toto-site2 hdr(host) toto.site2.tld
</pre>
```
<p>Vous pouvez ensuite utiliser un ou plusieurs backend selon les acl :</p>
<pre>
use_backend backend1 if site1 or sous-domaine or toto-site2</pre>
```
use_backend backend1 if site1 or sous-domaine or toto-site2```
<p>Ou encore :</p>
<pre>
```
use_backend backend1 if site1 or sous-domaine
use_backend backend2 if toto-site2</pre>
use_backend backend2 if toto-site2```
### Test de domaine dans un frontend
@ -251,11 +252,11 @@ use_backend backend2 if toto-site2
<p>Cela peut permettre de créer une acl qui gérera tout ce qui se termine par site.tdl, tout ce qui contient www., etc</p>
<pre>
```
acl test1 hdr_beg(host) www. #On match ce qui commence par www.
acl test2 hdr_end(host) domain.tld #On match tout ce qui termine par domain.tld
acl test3 hdr_reg(host) REGEX #On match tout ce qui correspond à l'expression régulière REGEX
</pre>
```
<p>Vous êtes ensuite libre d'utiliser ces acl dans les backend que vous voulez.</p>
@ -265,7 +266,7 @@ acl test3 hdr_reg(host) REGEX #On match tout ce qui correspond à l'expression r
<p>Pour cela, il suffit d'ajouter dans le frontend le mot clef <em>default_backend</em> qui permet de définir un backend qui sera utilisé pour les requêtes n'ayant matché aucune acl dans le frontend, et de créer un backend qui renverra par exemple une erreur 403 "accès interdit" :</p>
<pre>
```
frontend http-in
[...]
default_backend poubelle
@ -273,7 +274,7 @@ frontend http-in
backend poubelle
mode http
http-request deny
</pre>
```
### Répartition de charge avec un backend
@ -281,23 +282,23 @@ backend poubelle
<p>Mais il est également possible de définir des poids pour ces serveurs, si par exemple l'un d'eux est plus puissant, plus à même de recevoir des requêtes</p>
<pre>
```
backend backend1
[...]
server server1 ip1:80 weight 1
server server2 ip2:80 weight 2
</pre>
```
<p>Ici server2 encaissera 2 fois plus de requêtes que server1</p>
<p>Vous pouvez utiliser le mot clef backup :</p>
<pre>
```
backend backend1
[...]
server server1 ip1:80
server server2 ip2:80 backup
</pre>
```
<p>Ici, server1 recevra <strong>toutes</strong> les requêtes, <strong>mais</strong> si haproxy détecte qu'il n'est plus accessible, alors il enverra automatiquement toutes les requêtes vers server2</p>
@ -307,7 +308,7 @@ backend backend1
<p>Il est possible de dire à haproxy, dans votre frontend sur le port 80, que tel site doit absolument utiliser l'HTTPS. Auquel cas, si haproxy reçoit une requête en HTTP, alors il redirigera immédiatement le visiteur vers exactement la même requête mais en HTTPS :</p>
<pre>
```
frontend http-in
[...]
# On a plusieurs acl
@ -317,7 +318,7 @@ frontend http-in
redirect scheme https code 301 if !{ ssl_fc } site1.tld or sous-domaine
use_backend backend2 if toto-site2
</pre>
```
<p>Ici, on va forcer via un code 301 (redirection permanente) la redirection vers l'HTTPS (on détecte que le protocole ssl n'est pas utilisé) pour les accès sur site1.tld et sousdomaine.site1.tld, mais on reste en HTTP et on utilise backend2 si la visite est sur toto.site2.tld</p>
@ -329,22 +330,22 @@ frontend http-in
<p>Par exemple, si le frontend devant le backend est en https, vous pouvez ajouter un en-tête qui indiquera au serveur web derrière qu'il y a eu traitement https, ce même si le serveur web ne voit jamais le certificat puisque c'est haproxy qui s'en occupe :</p>
<pre>
```
backend backend1
[...]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
</pre>
```
<p>Vous pouvez ainsi écrire (ou réécrire) n'importe quel en-tête.</p>
<p>Par exemple pour réécrire l'en tête serveur :</p>
<pre>
```
backend backend1
[...]
rspidel ^server #On commence par effacer l'en tête serveur déjà présent
rspadd Server:\ Vous\ utilisez\ mon\ super\ serveur\ ! #On rajoute un nouvel en-tete Server (attention à bien protéger les espaces par des \)
</pre>
```
<p>&nbsp;</p>

+ 42
- 31
content/Système/connexion-ssh-par-cle.md View File

@ -20,8 +20,9 @@ Status: published
<p></p>
<p>
Cependant, l'un des gros problèmes d'un script automatique, c'est qu'un mot de passe, il a un peu de mal à le taper. Alors, on peut bidouiller me direz-vous :</p>
<pre class="brush:bash;">
echo "motdepasse" ssh root@serveurIP</pre>
```
echo "motdepasse" ssh root@serveurIP
```
<p>
Pourquoi pas. Mais bon, ça oblige à mettre le mot de passe en clair, ça ne marche pas toujours selon la configuration de votre serveur ssh, et la connexion en root, c'est mal.</p>
<p></p>
@ -52,46 +53,49 @@ echo "motdepasse" ssh root@serveurIP
Sur votre machine cliente, il va d'abord falloir générer la fameuse clé. Ou plutôt, le couple de clé, la clé publique et la clé privée.&nbsp;<a href="http://fr.wikipedia.org/wiki/Cryptographie_asymétrique">(Voir la cryptographie asymétrique)</a></p>
<p>
Si ce n'est pas déjà fait, installez donc le client openssh :</p>
<pre class="brush:bash;">
$ sudo aptitude update &amp;&amp; sudo aptitude install openssh-client</pre>
```
$ sudo aptitude update &amp;&amp; sudo aptitude install openssh-client
```
<p>
(Bien sûr, openssh serveur est installé sur votre machine distante)</p>
<p>
Ensuite, générez la clé pour votre client :</p>
<pre class="brush:php;">
```
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.</pre>
<p>
Generating public/private rsa key pair.
```<p>
Il vous faut ensuite répondre à plusieurs questions. La valeur par défaut est correcte, il suffit donc d'appuyer sur Entrée à chaque fois. Pour la passphrase, laissez vide pour qu'elle ne soit pas utilisée (c'est ce que l'on veut pour la connexion automatique)</p>
<p>
Une fois la clé générée, un petit resumé est affiché :</p>
<pre class="brush:bash;">
```
Your identification has been saved in /home/utilisateur/.ssh/id_rsa.
Your public key has been saved in /home/utilisateur/.ssh/id_rsa.pub.
The key fingerprint is:
XX:8a:XX:91:XX:ae:XX:23:XX:2e:XX:ed:XX:4e:XX:b8 utilisateur@machinecliente</pre>
<p>
XX:8a:XX:91:XX:ae:XX:23:XX:2e:XX:ed:XX:4e:XX:b8 utilisateur@machinecliente
```<p>
Les deux clés (publique et privée) sont donc stockées directement dans votre dossier home, dans un dossier caché nommé .ssh/</p>
## Envoi de la clé au serveur : tuyau crypté
<p>
Le moment délicat est arrivé. Il vous faut transmettre votre clé au serveur, de préférence via un moyen crypté. (Bah oui, envoyer la clé en clair via ftp par exemple vous expose à vous la faire piquer, et donc potentiellement pirater...)</p>
<p>
Pour ça, le meilleur moyen reste encore ssh ! Il va vous falloir une dernière fois votre mot de passe pour vous connecter au serveur. Grâce aux outils ssh, il suffit de faire :</p>
<pre class="brush:bash;">
```
$ ssh-copy-id -i /home/login/.ssh/id_rsa.pub login@machineserveur
Password :</pre>
<p>
Password :
```<p>
Entrez votre mot de passe, et la clé sera directement copiée dans le dossier .ssh/authorized_keys de votre serveur. Ce dossier est dans le home de l'utilisateur du serveur (pas root hein ??)</p>
<pre class="brush:bash;">
```
Now try logging into the machine, with "ssh 'login@machineserveur'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.</pre>
to make sure we haven't added extra keys that you weren't expecting.
```
<p>
Une fois celà fait, vous pouvez maintenant vous connecter à votre serveur sans avoir besoin d'aucun mot de passe.</p>
<p>
Pour testez, faites donc un petit :</p>
<pre class="brush:bash;">
ssh login@machineserveur</pre>
```
ssh login@machineserveur
```
<p>
La connexion doit s'effectuer sans mot de passe ! Vous pouvez maintenant utiliser à loisir ssh, scp, rsync, ... dans vos scripts !</p>
## Problèmes éventuels : il peut arriver que...
@ -105,32 +109,38 @@ ssh login@machineserveur
<ol>
<li>
Les droits du dossier personnel de votre utilisateur sont corrects :&nbsp;
<pre class="brush:bash;">
```
$ ls -l /home
drwxr-xr-x 5 login login 4096 3 jui. 2012 login</pre>
drwxr-xr-x 5 login login 4096 3 jui. 2012 login
```
Les droits doivent être identiques à l'exemple, c'est à dire en 755. Pour eventuellement corriger ça, faites&nbsp;
<pre class="brush:bash;">
$ chmod 755 /home/login</pre>
```
$ chmod 755 /home/login
```
<p></p>
</li>
<li>
Les droits du dossier .ssh sont corrects :
<pre class="brush:bash;">
```
$ ls -l /home/login
drwx------ 2 login login 4096 9 sept. 2011 .ssh</pre>
drwx------ 2 login login 4096 9 sept. 2011 .ssh
```
De même que précedemment, si les droits ne sont pas corrects, faites&nbsp;
<pre class="brush:bash;">
$ chmod 700 /home/login/.ssh</pre>
```
$ chmod 700 /home/login/.ssh
```
<p></p>
</li>
<li>
Les droits du fichier authorized_keys sont corrects :
<pre class="brush:bash;">
```
$ ls -l /home/login/.ssh/authorized_keys
-rw------- 2 login login 4096 9 sept. 2011 authorized_keys</pre>
-rw------- 2 login login 4096 9 sept. 2011 authorized_keys
```
Si ce n'est pas correct, un petit :
<pre class="brush:bash;">
$ chmod 600 /home/login/.ssh/authorized_keys</pre>
```
$ chmod 600 /home/login/.ssh/authorized_keys
```
devrait faire l'affaire
</li>
</ol>
@ -142,8 +152,9 @@ $ chmod 600 /home/login/.ssh/authorized_keys
<p>
La solution est assez simple, il faut lui passer en tant qu'option ssh, de la manière suivante :&nbsp;</p>
<p></p>
<pre class="brush:bash;">
$ ssh-copy-id -i /home/login/.ssh/id_dsa.pub '-pPORT login@machineserveur'</pre>
```
$ ssh-copy-id -i /home/login/.ssh/id_dsa.pub '-pPORT login@machineserveur'
```
<p>
En fait vous pouvez même passer toutes les options propres à ssh en mettant ça entre ''. (Par exemple l'algorithme de chiffrement, ...)</p>
<p></p>

+ 18
- 18
content/Système/use-letsencrypt-haproxy.md View File

@ -86,12 +86,12 @@ You can next directly use the binary to get your new certificate (at least, once
<p>So we are going to configure a haproxy ACL which match this path to redirect it to a specific backend!</p>
<pre>
```
frontend http-in
acl app_letsencrypt path_beg /.well-known/acme-challenge/
[...]
use_backend bk-letsencrypt if app_letsencrypt
</pre>
```
<ul>
<li>path_beg: match the path (the part just after the first /) that begin by <em>.well-known/acme-challenge/</em></li>
@ -107,12 +107,12 @@ frontend http-in
<p>About the backend, we are going to configure it to redirect request to the server launched by Let's Encrypt client.</p>
<pre>
```
backend bk-letsencrypt
log global
mode http
server srv_letsencrypt 127.0.0.1:63443
</pre>
```
<ul>
<li>mode http: allow to check the HTTP consistency of the request</li>
@ -123,8 +123,8 @@ backend bk-letsencrypt
<p>Of course, you need to reload haproxy after doing these modifications.</p>
<pre>
systemctl reload haproxy.service</pre>
```
systemctl reload haproxy.service```
## Configure and use of Let's Encrypt
@ -134,12 +134,12 @@ systemctl reload haproxy.service
<p>By default, the client uses the file <em>/etc/letsencrypt/cli.ini</em>. So this is the file we are going to edit.</p>
<pre>
```
rsa-key-size = 4096
email = your_admin_email
authenticator = standalone
standalone-supported-challenges = http-01
</pre>
```
<ul>
<li>rsa-key-size: tell letsencrypt to direclty generate 4096 bits certificate, more strong that default 2048. You can downgrade to 2048 (but never less!) if your server is low performance to gain some generation time</li>
@ -154,8 +154,8 @@ standalone-supported-challenges = http-01
<p>The command line to use to generate your certificate is the following:</p>
<pre>
/root/letsencrypt/certbot-auto certonly --domains yourdomain.tld --renew-by-default --http-01-port 63443 --agree-tos</pre>
```
/root/letsencrypt/certbot-auto certonly --domains yourdomain.tld --renew-by-default --http-01-port 63443 --agree-tos```
<ul>
<li>certonly: tell the client that we only want to generate the certificate, not using some installation plugin to install certificate somewhere.</li>
@ -180,15 +180,15 @@ standalone-supported-challenges = http-01
<p>In order to use with haproxy, you need to concatenate fullchain.pem and privkey.pem, and store it where haproxy read its certificates.</p>
<pre>
cat fullchain.pem privkey.pem &gt; domain.tld.pem</pre>
```
cat fullchain.pem privkey.pem &gt; domain.tld.pem```
<p>For example for the following HTTPS frontend:</p>
<pre>
```
frontend https-in
bind IP:443 ssl crt /etc/haproxy/cert/
</pre>
```
<p>Here we need to store the domain.tld.pem file in <em>/etc/haproxy/cert/</em></p>
@ -208,13 +208,13 @@ frontend https-in
<p>So remember to configure a cron job on your server to renew certificate:</p>
<pre>
```
crontab -e
</pre>
```
<pre>
```
#renew certificate
30 01 01,10,20,30 * * /root/letsencrypt/certbot-auto renew</pre>
30 01 01,10,20,30 * * /root/letsencrypt/certbot-auto renew```
<p>This cron task will launch the renew command each 10 days to be sure your certificates will stay valids.</p>

+ 20
- 16
content/Système/utiliser-letsencrypt-haproxy.md View File

@ -88,12 +88,12 @@ Vous pouvez ensuite directement utiliser le binaire pour activer vos certificats
<p>Nous allons donc configurer une acl qui cherchera cette chaine pour la rediriger vers un backend spécifique !</p>
<pre>
```
frontend http-in
acl app_letsencrypt path_beg /.well-known/acme-challenge/
[...]
use_backend bk-letsencrypt if app_letsencrypt
</pre>
```
<ul>
<li>path_beg : cherche les URL dont le path (ce qui est après le premier / de l'url) commence par <em>.well-known/acme-challenge/</em></li>
@ -109,12 +109,12 @@ frontend http-in
<p>Concernant le backend, nous allons le configurer pour rediriger les requêtes vers le serveur qui sera lancé en local par le client Let's Encrypt.</p>
<pre>
```
backend bk-letsencrypt
log global
mode http
server srv_letsencrypt 127.0.0.1:63443
</pre>
```
<ul>
<li>mode http : permet, tant qu'à faire, de vérifier qu'il s'agit bien d'une requête http qui passe par ce backend</li>
@ -125,8 +125,9 @@ backend bk-letsencrypt
<p>Bien sûr, rechargez haproxy après ces modifications.</p>
<pre>
systemctl reload haproxy.service</pre>
```
systemctl reload haproxy.service
```
## Configurer et utiliser Let's Encrypt
@ -136,12 +137,12 @@ systemctl reload haproxy.service
<p>Let's Encrypt utilise par défaut le fichier <em>/etc/letsencrypt/cli.ini</em><em>. </em>Nous allons donc taper dedans directement.</p>
<pre>
```
rsa-key-size = 4096
email = your_admin_email
authenticator = standalone
standalone-supported-challenges = http-01
</pre>
```
<ul>
<li>rsa-key-size ; permet de générer directement des certificats de 4096 bit, plus robustes que le 2048 par défaut. Vous pouvez redescendre à 2048 (mais pas en dessous !) si votre serveur est peu puissant pour gagner du temps de génération.</li>
@ -156,8 +157,9 @@ standalone-supported-challenges = http-01
<p>La ligne de commande à utiliser pour générer votre certificat est la suivante :</p>
<pre>
/root/letsencrypt/certbot-auto certonly --domains yourdomain.tld --renew-by-default --http-01-port 63443 --agree-tos</pre>
```
/root/letsencrypt/certbot-auto certonly --domains yourdomain.tld --renew-by-default --http-01-port 63443 --agree-tos
```
<ul>
<li>certonly : précise que l'on souhaite simplement générer le certificat, et pas utiliser un plugin d'installation pour stocker les certificats quelque part</li>
@ -182,15 +184,16 @@ standalone-supported-challenges = http-01
<p>Pour haproxy, vous devez concaténer fullchain.pem et privkey.pem dans un seul fichier, et le placer là ou votre haproxy lit ses certificats.</p>
<pre>
cat fullchain.pem privkey.pem &gt; domain.tld.pem</pre>
```
cat fullchain.pem privkey.pem &gt; domain.tld.pem
```
<p>Un exemple :</p>
<pre>
```
frontend https-in
bind IP:443 ssl crt /etc/haproxy/cert/
</pre>
```
<p>Ici, nous devons mettre notre fichier.pem dans le répertoire <em>/etc/haproxy/cert/</em></p>
@ -210,10 +213,11 @@ frontend https-in
<p>Pensez donc à configurer une tache cron sur votre serveur pour renouveler le certificat régulièrement</p>
<pre>
```
crontab -e
#renew certificate
30 01 01,10,20,30 * * /root/letsencrypt/certbot-auto renew</pre>
30 01 01,10,20,30 * * /root/letsencrypt/certbot-auto renew
```
<p>Cette tâche permettra de lancer la commande tous les 10 jours, afin d'être sur d'avoir des certificats à jour.</p>

Loading…
Cancel
Save