Serveur Duniter avec SSL

serveur
ssl

#1

Salut !

Je suis en train de passer mes serveurs Duniter G1/GTest derrière mon reverse proxy nginx avec SLL, mais je n’obtient que des 502 Bad Gateway.

Config duniter :

% duniter wizard network
2018-01-23T10:26:32+01:00 - debug: Plugging file system...
2018-01-23T10:26:32+01:00 - debug: Loading conf...
2018-01-23T10:26:32+01:00 - debug: Configuration saved.
? IPv4 interface eth0 163.172.219.69
? IPv6 interface None
? Port 10901
? Remote IPv4 eth0 163.172.219.69
? Remote port 443
? Does this server has a DNS name? Yes
? DNS name: duniter-g1.nanocryk.fr
2018-01-23T10:26:57+01:00 - debug: Configuration saved.

Ma config nginx (avec symlink dans sites-enabled) :

server {
    #listen 80;
    listen 443 ssl;

    server_name duniter-g1.nanocryk.fr;

    ssl_certificate /etc/letsencrypt/live/duniter-g1.nanocryk.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/duniter-g1.nanocryk.fr/privkey.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

    location /.well-known {
        alias /var/www/duniter-g1.nanocryk.fr/.well-known;
    }

    location / {
        proxy_pass http://127.0.0.1:10901;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Le certificat est bien valide et je ne vois pas d’où ça peut venir.

Merci d’avance pour votre aide.


Cesium 1.2.9 : problème de connexion sur un node
Comment faire tourner Duniter Ḡ1 et Ḡ1-Test sur un même serveur?
#2

Dans ta conf Duniter essaye lo 127.0.0.1 pour IPv4 interface comme ce qui est indiqué dans ta conf location de nginx.
ça à réglé le soucis chez moi.


#3

Merci ! En plus le port n’est plus exposé à l’extérieur, donc pas besoin de config un pare-feu =D


#4

Si ça peux aider pour d’autres j’ai fait un article : http://crazypanda.fr/2018/01/23/duniter-configurer-un-noeud-derriere-un-reverse-proxy-nginx/


#5

Excellent ! Quelques remarques !

  • J’ai l’impression que ce reverse proxy n’est pas compatible WS2P (mais je ne comprends pas bien WS2P, c’est pas encore suffisamment documenté… @elois @cgeek vous en pensez quoi ? )
  • Il faut penser à ajouter un endpoint “BMAS” pour que les clients puissent utiliser ton noeud ! ( https://duniter.org/fr/wiki/duniter/commandes/ ) :

duniter --addep “BMAS [ipv4] [ipv6] [dns] [port]”

Avec un obligatoire parmi les trois (ipv4, ipv6, dns), et le port obligatoire.


#6

@crazypanda @Inso

Je viens de regarder, c’est une bonne config mais effectivement elle ne gère que BMA. Pour gérer également WS2P sur 443 derrière le même reverse proxy il faut renseigner le paramètre “remotepath” dans la config ws2p et ajouter les deux blocs suivants au reverse proxy nginx :

upstream websocket-ws2p {
                server 127.0.0.1:20901;
}

location /ws2p {
                proxy_pass http://websocket-ws2p;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
}

ici pour remotepath="/ws2p"


#7

Je ne comprends pas bien ce point. Peux-tu m’expliquer ce que c’est exactement ?


#8

J’ai pas compris du coup, je dois modifier ma config actuelle ?


#9

Merci pour ton retour @elois je vais modifier mon article en ajoutant cette partie sur le WSP2.


#10

@crazypanda attention je ne t’ai pas indiquer comment configurer ws2p coté duniter, je l’ai écris ici : https://duniter.org/fr/wiki/duniter/configurer/#configurer-ws2p


#11

oui mon noeud est bien configuré, c’est juste la partie Nginx qui ne l’est pas.
Mais je doit développer ce point dans l’article.


#12

@crazypanda en fait la commande --addep sert juste a déclarer manuellement un endpoint, ainsi les clients indiqueront dans leur vue réseau “ce noeud utilise SSL”


#13

ta config nginx oui, elle empêche ton WS2P Public de fonctionner


#14

En quoi elle l’empêche ?


#15

Du coup, si Cesium l’indique c’est que c’est bon non ? Ou faut quand même l’ajouter ?


#16

Ce n’est pas que ça !

Sakia par exemple est très strict : pour se connecter en SSL sur un endpoint, celui-ci doit être déclaré en mode “BMAS”. Sinon, Sakia tentera une connexion non-sécurisée et ça échouera.

Pour résumer pour @crazypanda :

  • Les noeuds diffusent une “fiche de pair” sur le réseau décentralisé pour se faire connaitre des autres noeuds et clients
  • Entre les noeuds, ce sont les endpoints “WS2P” qui sont utilisés
  • Les clients utilisent les endpoint “BMA”
    • Ce endpoints existent sous 2 mode, SSL (“BMAS”) ou non (“BMA_ENDPOINT_API”)
    • Pour que les clients puisse prendre connaissance correctement des méthodes d’accès à ton noeud, il faut configurer les endpoints BMA (par exemple, pour que le noeud soit joignable sur le port 80 et 443, BMAS duniter.crazypanda.fr 443 en SSL et BMA_ENDPOINT_API duniter.crazypanda.fr 80 en HTTP non sécurisé)

#17

Ok donc il faut ajouter la config avec : duniter config --addep "BMAS duniter.crazypanda.fr 443" ?


#18

ok, bon, maintenant j’apparais 3 fois sur Cesium… 2x en SSL et 1x en WS2P… Pas facile de s’y retrouver :thinking:
J’ai appliqué duniter config --ws2p-remote-path /ws2p c’est correct ?

Y’a peut-etre un truc à changer dans la conf nginx pour la ligne proxy_pass http://websocket-ws2p ? Non ?


#19

Perso j’ai pas mis le upstream et j’ai mis proxy_pass http://127.0.0.1:20901;


#20

C’est normal vu ta fiche de peer : https://duniter.crazypanda.fr/network/peering

  "endpoints": [
    "BMAS duniter.crazypanda.fr 443",
    "BASIC_MERKLED_API duniter.crazypanda.fr 51.254.208.250 443",
    "WS2P ec97d94f 51.254.208.250 10901 /ws2p"
  ],

En fait le, problème viens de cesium, contrairement a sakia il affiche l’icone SSL pour les endpoint BASIC_MERKLED_API sur 443 :confused: