Aller au contenu
mprinfo

Installation reverse proxy Haproxy et Cerbot (letsencrypt) sur debian

Recommended Posts

curl https://haproxy.debian.net/bernat.debian.org.gpg \
      | gpg --dearmor > /usr/share/keyrings/haproxy.debian.net.gpg

rien de grave pour ton haproxy au pire tu peux installlés avec

 

apt install haproxy

 

mais tu auras une ancienne version

 

pour avoir la derniere version il faut ajouté des dépots

 

Partager ce message


Lien à poster
Partager sur d’autres sites

voila ce qu'il faut faire qu'en tu es sous esxi et que tu veux faire des tests

 

@jojo tu es sous esxi donc pas vraiment de besoin d'une machine de test pour cela

 

tu crées un snapshots

 

1.jpg.96f462038814f4bcf079fee59cb99363.jpg

 

2.jpg.f16e80c5b8924f6cca37d91a6c5f610f.jpg

 

tu fais tes bidouilles et si cela merdouille tu restaures ton snapshot

3.jpg.ed1230e6de4b71ee5ade36ea89850347.jpg

 

Cest simple et rapide

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai vu trop tard ta suggestion de faire un snapshot de ma VM. C'était une excellente idée (pour une prochaine fois ...)

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 13 minutes, mprinfo a dit :

curl https://haproxy.debian.net/bernat.debian.org.gpg \
      | gpg --dearmor > /usr/share/keyrings/haproxy.debian.net.gpg

rien de grave pour ton haproxy au pire tu peux installlés avec

 

apt install haproxy

 

mais tu auras une ancienne version

 

pour avoir la derniere version il faut ajouté des dépots

 

j'en suis à cette instruction ...

Mais elle me la met toujours sur 2 lignes (= 2 commandes).

L'objectif de tout ce bazard, c'est quand-même d'avoir une version plus récente, donc pas simplement

apt install haproxy

qui serait le dernier recours

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ok, c'est passé !

peux-tu SVP me donner sous le même format l'instruction suivante ? (echo ...)

Partager ce message


Lien à poster
Partager sur d’autres sites

echo deb "[signed-by=/usr/share/keyrings/haproxy.debian.net.gpg]" \ http://haproxy.debian.net buster-backports-2.6 main \ > /etc/apt/sources.list.d/haproxy.list

 

 

cette commande crée un fichier haproxy.list dans /etc/apt/sources.list.d

 

si la commande ne passe pas du va dans le dossier /etc/apt/sources.list.d

tu crées un nouveau fichier haproxy.list et tu y mets cela

deb "[signed-by=/usr/share/keyrings/haproxy.debian.net.gpg]" \ http://haproxy.debian.net buster-backports-2.6 main \ > /etc/apt/sources.list.d/haproxy.list

tu sauvegardes, t regardes si les propriétés du fichier sont a 0644 en faisant un clic droit sur le fichier

 

puis tu fais un

 

apt update

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo ca donne quoi ?

 

 

pourrais tu me donnés le dernier chiffre de l'adresse ip de ton haproxy STP

 

Partager ce message


Lien à poster
Partager sur d’autres sites

j'étais entrain de manger (des sushis ....)

j'essaye mais je vois déjà que ce n'est pas exactement la même commande (il y a un \ et un/ en plus) (et comme je n'y connais rien ...)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

\ = retour à la ligne pour continuer la commande sur la ligne du dessous.

Donc sur une seule ligne c'est :

echo deb "[signed-by=/usr/share/keyrings/haproxy.debian.net.gpg]" http://haproxy.debian.net buster-backports-2.6 main > /etc/apt/sources.list.d/haproxy.list

Tout simplement.

 

Modifié par Kana-chan
  • Like 1
  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, mprinfo a dit :

si la commande ne passe pas du va dans le dossier /etc/apt/sources.list.d

tu crées un nouveau fichier haproxy.list et tu y mets cela

la commande est passée et a créé le fichier haproxy.list (c'est le seul fichier dans ce dossier) qui contient

deb [signed-by=/usr/share/keyrings/haproxy.debian.net.gpg]  http://haproxy.debian.net buster-backports-2.6 main

(ce n'est pas ce que tu m'as dit que  j'aurais du rentré manuellement)

 

ensuite j'ai fais apt update (mais pas un apt-get update comme dit initialement - quelle est la différence entre apt et apt-get ?)

 

puis  apt-get install haproxy=2.6.\*

je suis bien en 2.6, mais mon fichier de config n'est plus compatible ...

root@xxx:~# haproxy -c -V -f /etc/haproxy/haproxy.cfg
[NOTICE]   (10950) : haproxy version is 2.6.16-1~bpo10+1
[NOTICE]   (10950) : path to executable is /usr/sbin/haproxy
[ALERT]    (10950) : config : parsing [/etc/haproxy/haproxy.cfg:84] : The 'reqadd' directive is not supported anymore since HAProxy 2.1. Use 'http-request add-header' instead.
[ALERT]    (10950) : config : parsing [/etc/haproxy/haproxy.cfg:133] : The 'reqadd' directive is not supported anymore since HAProxy 2.1. Use 'http-request add-header' instead.
[ALERT]    (10950) : config : parsing [/etc/haproxy/haproxy.cfg:236]: Missing LF on last line, file might have been truncated at position 23.
[ALERT]    (10950) : config : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT]    (10950) : config : Fatal errors found in configuration.

j'ai mis en commentaire les lignes 84 & 133,  pour la ligne 236, j'ai ajouté un CR

et maintenant :

root@xxx:~# haproxy -c -V -f /etc/haproxy/haproxy.cfg
Configuration file is valid

puis quand je démarre HAProxy, j'ai

root@xxx:~# systemctl start haproxy.service
Broadcast message from systemd-journald@haproxy (Sat 2024-01-06 15:35:30 CET):
haproxy[10967]: backend NotExist has no server available!
Broadcast message from systemd-journald@haproxy (Sat 2024-01-06 15:35:30 CET):
haproxy[10967]: backend NotExist has no server available!

mais mon HAProxy fonctionne :74:

voici la config de mon backend NotExist

backend NotExist
	mode	http
	option	httpchk
 	redirect scheme https if !{ ssl_fc }
	server www-1 127.0.0.1:8888 check

 

il y a une heure, mprinfo a dit :

pourrais tu me donnés le dernier chiffre de l'adresse ip de ton haproxy STP

2

Partager ce message


Lien à poster
Partager sur d’autres sites
backend NotExist
    mode http
    http-request deny

ou

backend NotExist
   redirect scheme https if !{ ssl_fc }
   server www-1 192.168.1.100:8080 check

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai pris la première option, car je la trouve moins spécifique (pas d'IP).

Maintenant je n'ai plus qu'à mettre en place le script pour automatiser le renouvellement des certificats.

Merci pour ton aide

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 03/01/2024 à 17:02, mprinfo a dit :

normal c'est @jojo qui a merdu :D

 

je te donne le script que j'utilise il est trés simple

 


##################################################################
#    copier le fichier renew_certs.sh vers /usr/local/bin        #
#                                                                #
#		-- le rendre executable                                  #
#		   chmod -x renew_certs.sh                               #
#                                                                #
#		-- execution automatique tout les lundi a 1h30           #
#		   crontab -e                                            #
#		   30 1 * * 1 /usr/local/bin/renew_certs.sh              #
#		                                                         #
#		-- verification                                          #
#		   crontab -l                                            #
#                                                                #
##################################################################

VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"

haproxy_pem_path="/etc/haproxy/certs"

#renew des certificats
/usr/bin/certbot renew #--force-renewal
if [ $? -eq 0 ]; then
    echo -e "$CYAN ________________________________________________________________________________________ $NORMAL"
	echo ""
	echo -e "$(date +%c)  $CYAN Certificates renewed ! Transfert certs vers HAPROXY .pem $NORMAL"
	echo -e "$CYAN ________________________________________________________________________________________ $NORMAL"
else
    echo -e "$ROUGE ________________________________________________________________________________________ $NORMAL"
	echo -e "$(date +%c) $ROUGE Erreur lors du renouvellement des certificats avec code d'erreur $?, Fin du script... $NORMAL"
	echo -e "$ROUGE ________________________________________________________________________________________ $NORMAL"
	exit 1
fi

#Then, create domain.pem containing fullchain et privkey for haproxy
    
for domainconf in $(ls /etc/letsencrypt/renewal/); do
	domain=${domainconf%.conf}
    echo -e "$(date +%c)create $VERT ${domain}.pem $NORMAL"
	cat /etc/letsencrypt/live/${domain}/fullchain.pem /etc/letsencrypt/live/${domain}/privkey.pem > ${haproxy_pem_path}/${domain}.pem
done

echo -e "$CYAN ________________________________________________________________________________________ $NORMAL"
echo ""
echo -e "$JAUNE $(date +%c) Redemarrage de Haproxy $NORNAL"
echo ""
systemctl reload haproxy
echo ""

echo -e "$BLEU ============================================================== $NORMAL"
echo -e "$BLEU = $NORMAL STATUS haproxy"
echo -e "$BLEU ============================================================== $NORMAL"
systemctl status haproxy.service

copier le fichier renew_certs.sh vers /usr/local/bin

- lien du fichier :  renew_certs.sh

 

-- le rendre executable                                 
           chmod -x renew_certs.sh

 

-- on test si cela fonctionne

          /usr/local/bin/renew_certs.sh

 

-- execution automatique tout les lundi a 1h30  

         crontab -e

        30 1 * * 1 /usr/local/bin/renew_certs.sh

 

-- verification
         crontab -l

 

voila tout les lundi a 1h30 du matin il y aura une vérifications de certificats, si ils ont moins de 30 jours de vailidité ils seront alors renouvelés et concaténés

 

on peut oublier cette VM  enfin presque

 

de temps en temps on peut faire

    apt update && apt upgrade

 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

j'avais vu que tu avais proposé qqch, mais je voulais reposer mon neurone ...

et donc je viens de le parcourir, il est super générique : si on rajoute un sous-domaine, il fait automatiquement le taf :13: (et peu importe quand on le rajoute puisqu'il vérifie tous les lundis).

 

Une suggestion : comme je n'irai JAMAIS voir les logs de la machine,

Pouurait-il envoyer un mail (adresse mail à mettre en variable au début du script) à la fin de son exécution avec la liste des domaines dont il à mis à jour le certificat (liste vide si pas de mise à jour, cela fera une sorte de keeep alive hebdomadaire) ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@jojo j'y ai pensé mais pour le moment j'ai pas trouvé comment faire

 

@lazer j'ai une débian "nue" c'est a dire avec le stricte minimum, comment faire pour pouvoir envoyer un mail via un script shell

 

j'ai regarder comment tu faisais avec les backups mais cela ne fonctionne pas

 

j'ai aussi essayé d'installer "mail"  sans succés

 

a priori il y a d'autres paquets a installer ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 03/01/2024 à 17:02, mprinfo a dit :

 

-- le rendre executable                                 
           chmod -x renew_certs.sh

j'ai du renseigner le chemin complet pour que ça fonctionne

chmod -x /usr/local/bin/renew_certs.sh

(je modifie la doc du script)

Partager ce message


Lien à poster
Partager sur d’autres sites

Normal
Si tu n'étais pas dans le bon répertoire
C'est logique

Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
root@xxx:~# chmod -x /usr/local/bin/renew_certs.sh
root@xxx:~# /usr/local/bin/renew_certs.sh
-bash: /usr/local/bin/renew_certs.sh: Permission non accordée

où est mon erreur ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 41 minutes, mprinfo a dit :

Normal
Si tu n'étais pas dans le bon répertoire
C'est logique

Envoyé de mon BLA-L29 en utilisant Tapatalk
 

du coup j'ai fait la manip directement dans le répertoire

root@xxx:/usr/local/bin# chmod -x renew_certs.sh
root@xxx:/usr/local/bin# renew_certs.sh
-bash: /usr/local/bin/renew_certs.sh: Permission non accordée
root@xxx:/usr/local/bin# ls
renew_certs.sh

mais avec le chemin complet, ça devrait fonctionner depuis n'importe où

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as juste fait un copier coller du fichiers que je t'ai donné ?

Ou tu as fais un copier coller du code dans notepad ?

 

tu dois avoir cela si tu fais propiétés avec winscp

1.jpg.43774aaace999d699bbd40e195e6389d.jpg

Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

maintenant que tu as bien galéré pour ton haproxy

 

je viens de faire en -30mn

une VM debian 12

avec Haproxy 2.8

et certbot

 

toutes les commandes sont passées du premier coup

 

le script et le crontab sont inclus

 

Procédure pour mise en fonction

 

importé la VM dans esxi

lancé la VM

elle aura l'ip xxx.xxx.xxx.2

 

tu te connectes en : root

mot de passe : fibaro

 

tu as justes y mettre ton fichier config

 

ensuite soit

tu refais la manipe pour la création de tes domaines

ou

tu les récupéres sur ton "ancien" haproxy dans let encrypts

 

voici le lien pour téléchargement : https://drive.google.com/file/d/1vkZP4F0--hgawtk8yDeQFMfYvHfGpDrX/view?usp=drive_link

 

 

 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 17 heures, jojo a dit :

root@xxx:~# chmod -x /usr/local/bin/renew_certs.sh
root@xxx:~# /usr/local/bin/renew_certs.sh
-bash: /usr/local/bin/renew_certs.sh: Permission non accordée

où est mon erreur ?

 

L'erreur est dans le texte initial :

chmod -x ==> enlève le droit d'exécution pour tout le monde.
chmod +x ==> ajoute le droit d'exécution pour tout le monde.

Donc dans votre cas pour que cela fonctionne c'est :

root@xxx:~# chmod +x /usr/local/bin/renew_certs.sh
root@xxx:~# /usr/local/bin/renew_certs.sh

Voilà ... :D

 

  • Like 1
  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

merci j'avais pas fais gaffe

 

tu as l'air de t'y connaitre en linux saurait tu me dire comment je pourrais faire pour envoyer un mail en shell

 

j'ai essayer "mail" mais cela ne fonctionne pas

 

j'ai une débian 12 avec le minimum

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×