Projet

Général

Profil

Actions

Demande #5614

fermé

Rendre le service XMPP joignable sur le port 443

Ajouté par pitchum . il y a environ 3 ans. Mis à jour il y a 6 mois.

Statut:
Fermé
Priorité:
Normale
Assigné à:
Version cible:
Début:
06/10/2021
Echéance:
% réalisé:

0%

Temps estimé:
Difficulté:
3 Moyen

Description

Ça permettrait de rendre le service utilisable depuis certains campus universitaires par exemple, où la connectivité vers internet est très limitée.
Ça impliquerait de publier des méta-données sur https://chapril.org/.well-known/host-meta et d'activer un module nginx stream_ssl_preread sur bastion.

Mis à jour par pitchum . il y a 9 mois

Expérimenté sur mon serveur perso, ça nécessite de modifier tous les vhosts nginx pour qu'ils écoutent sur un port différent du port 443.

Ajouter ce bloc stream dans /etc/nginx/nginx.conf :

diff --git a/nginx/nginx.conf b/nginx/nginx.conf
index f52668a..c1dd930 100644
--- a/nginx/nginx.conf
+++ b/nginx/nginx.conf
@@ -81,3 +81,48 @@ http {
 #              proxy      on;
 #      }
 #}
+
+stream {
+
+   upstream httpserver {
+       server 127.0.0.1:442;
+   }
+
+   upstream xmppserver {
+       server xmpp.cluster.chapril.org:5223;
+   }
+
+   map $ssl_preread_alpn_protocols $upstream {
+       default httpserver;
+       "xmpp-client" xmppserver;
+   }
+   server {
+       listen 443;
+
+       ssl_preread on;
+       proxy_pass $upstream;
+       proxy_protocol on;
+   }
+}

Puis patcher tous les vhosts ainsi :

sed -ri 's/listen (.*)443/listen \1442/g' /etc/nginx/sites-available/*
# puis
sed -ri 's/listen (.*) default_server/listen \1 proxy_protocol/g' /etc/nginx/sites-available/*

Pour continuer d'avoir les IPs dans les logs (pour fail2ban notamment), créer le fichier /etc/nginx/conf.d/real_ip.conf contenant ceci :

set_real_ip_from 127.0.0.1;
set_real_ip_from ::1/128;
real_ip_header proxy_protocol;

Ajouter au bloc listen: du fichier /etc/ejabberd/ejabberd.yml :

  -
    port: 5225
    use_proxy_protocol: true
    ip: "::" 
    module: ejabberd_c2s
    tls: true
    max_stanza_size: 65536
    shaper: c2s_shaper
    access: c2s

Adapter les enregistrements DNS :

_xmpps-client._tcp.chapril.org.        86400   IN      SRV  5 10 5223  xmpp.chapril.org.
_xmpps-client._tcp.chapril.org.        86400   IN      SRV 10 10  443  xmpp.chapril.org.

Mis à jour par pitchum . il y a 6 mois

  • Description mis à jour (diff)

Mis à jour par pitchum . il y a 6 mois

  • Statut changé de Nouveau à Résolu

Ayé, c'est enfin mis en place.
Ça a nécessité des changements sur les VMs bastion (pour nginx ssl_preread), sur dns (1 nouvel enregistrement) et sur xmpp (firewall + config ejabberd).

Mis à jour par Quentin Gibeaux il y a 6 mois

  • Statut changé de Résolu à Fermé
Actions

Formats disponibles : Atom PDF