Suite du sujet Manque de places WS2P sur le réseau Ğ1! :
Je propose qu’on en discute ici car on a dérivé hors sujet sur le thread initial.
Suite du sujet Manque de places WS2P sur le réseau Ğ1! :
Je propose qu’on en discute ici car on a dérivé hors sujet sur le thread initial.
Je prépare une ébauche sur apache en Fr. ca fera déjà une base
Voici les points a traiter auxquels je pense :
Pour chacun de ces points il faudrait pouvoir fournir des exemples Apache et nginx.
Cette configuration est utilisée dans le paquet YunoHost.
Qu’est ce que tu entends par là ? Un sous domaine par protocole ? Style bma.domain.tld et ws2p.domain.tld ?
Reste à traiter dans ce que j’ai prévu et ce que tu indiques :
Voila ou j’en suis :
Un reverse proxy apache permet la gestion du SSL pour les différents protocoles réseau de Duniter. Le serveur Apache recevra les connexions distantes en SSL et les transfèrera à Duniter.
Les directives de configuration si dessous partent du principe que Duniter est configuré pour annoncer ses différents protocoles réseau sur le port 443 et que ceux-ci écoute en localhost sur les ports suivants :
/ws2p
)duniter.mydomain.com
dans ce document, il faudra donc le remplacer par le votre.Les commandes ci-dessous sont à exécuter en tant que root.
Installation du serveur Apache :
apt-get install apache2
Installation de CertBot pour la génération des certificats SSL gratuit par LetsEncrypt :
apt-get install certbot
a2enmod ssl proxy proxy_http rewrite headers
ssl : obligatoire pour la gestion du SSL.
proxy : transfert des requêtes reçu à Duniter
proxy_http : proxy pour requête http
rewrite : réécriture des urls à la volée.
headers : personnalisation des en-têtes des requêtes (utilisé pour la connexion aux websockets)
Les fichiers de configuration sont situés dans le répertoire /etc/apache2
Les fichiers de configuration des différents sites sont situés dans le répertoire /etc/apache2/site-available
Création de notre fichier de configuration : copiez le texte ci-dessous dans le fichier /etc/apache2/site-available/duniter.mydomain.com.conf
# redirect non ssl requests to ssl port
<VirtualHost *:80>
ServerName duniter.mydomain.com
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</IfModule>
</VirtualHost>
# ssl requests port
<VirtualHost *:443>
ServerName duniter.mydomain.com
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteCond %{REQUEST_URI} ^/ws2p [NC]
RewriteRule .* ws://127.0.0.1:20901%{REQUEST_URI} [P,QSA,L]
</IfModule>
# activate ssl proxy
SSLProxyEngine on
# proxy SSL ws2p request to Duniter ws2p
ProxyPass /ws2p http://127.0.0.1:20901
ProxyPassReverse /ws2p http://127.0.0.1:20901
# proxy BMAS request to Duniter BMA port
ProxyPass / http://127.0.0.1:10901/
ProxyPassReverse / http://127.0.0.1:10901/
# deactivate direct proxy request
ProxyRequests Off
# pass the incoming request host to the proxied host via Header
ProxyPreservehost On
RequestHeader set X-Forwarded-Proto "https"
RequestHeader unset If-Modified-Since
RequestHeader unset If-None-Match
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Activate ssl
SSLEngine On
# Strong SSL
SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
# Certificat
SSLHonorCipherOrder on
SSLCertificateFile "/etc/letsencrypt/live/duniter.mydomain.com/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/duniter.mydomain.com/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/duniter.mydomain.com/chain.pem"
</VirtualHost>
Notre fichier de configuration gérant le port 80, nous pouvons supprimer la configuration par défaut d’Apache et activer notre configuration.
a2dissite 000-default
a2ensite duniter.mydomain.com
Si vous avez déjà vos certificats SSL, rechargez la configuration d’Apache et passez aux tests.
systemctl reload apache2
Si vous avez déjà vos certificats, vous pouvez passer cette étape. Assurez-vous juste de les avoir correctement renseigné dans la configuration d’Apache.
Attention : les certificats de LetsEncrypt ne sont valables que trois mois.
certbot certonly --manual --preferred-challenges dns -d duniter.mydomain.com
Renseignez les différentes informations demandées et vous devriez avoir un message comme celui-ci :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.duniter.mydomain.com with the following value:
T8zuEq7iBMm5_zrPVBY5sc0sZ4yiLWvYJsCh_pnMCEU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Vous devez rajouter l’enregistrement TXT spécifié dans la configuration de votre domaine, une fois fait, continuez.
Vos certificats sont maintenant générés.
Rechargez la configuration d’Apache.
systemctl reload apache2
Voir tuto
Oui, tout à fait.
Pas trop pour rajouter cela, je pense que ca va compliquer et que c’est réservé à des cas peu commun mais il y a peut-être un cas d’usage que je ne vois pas.
En plus va falloir gérer des certificats supplémentaires ou un certificat wildcard.
Typiquement c’est le cas d’usage dont on discutait au tout début de la conversation, pour l’accès à l’interface web. Effectivement, la multiplication des certificats est un des inconvénients, mais il existe plein d’outils pour automatiser ça de nos jours. Pour ma part j’utilise un certificat wildcard.
On part sur une configuration hybride alors. Même sous domaine pour BMA, GVA, WS2P, … et un autre sous domaine style duniter-admin.mydomain.tld pour l’iface d’administration ?
Ca reste quand même plus simple de gérer ça par le path mais ok pour rajouter les deux.
C’est celui qui fait qui décide, hein ? Et comme pour l’instant c’est toi qui fait…
Si tu ne le sens pas je proposerai une modif quand j’aurai pris le temps de me poser.
Mon idée c’était de dire « il n’y a pas qu’une seule solution ».
Haha, oui si tu veux. C’est juste qu’a la base je ne voyais pas directement l’utilité mais tu m’as convaincu avec l’iface d’admin. Et en réfléchissant, un virtual host de plus n’est pas si compliqué vu que c’est un copier/coller du reste.
Je ne suis pas familier de discourse. J’ai cru comprendre qu’il existait un mode wiki pour des posts comme celui-ci. Comment ça s’active ?
Il faut cliquer sur la clef à molette en bas à droite du message. Puis sélectionner le menu « Passer en mode wiki ». Mais ce n’est peut-être que pour les admins…
Je ne vois pas de clef à molette.
Elle apparaît en cliquant sur (…
).
Mais seulement pour les utilisateurs ayant obtenu un certain niveau de confiance sur le forum, ou uniquement les modérateurs ou admins.
Je me sens petit scarabée, d’un coup
Perso je n’ai pas droit à cette molette non plus.
Soit les admins augmentent artificiellement ton niveau de confiance, soit ils mettent en mode wiki le post en question.
Pas grave, je vais passer par git. Je maîtrise mieux.
@lciviero j’ai créé un projet sur git.duniter.org où je t’ai invité en tant que dev. Comme ça on pourra travailler sur le même document.
Oui il faut être au moins niveau 3 pour créer un wiki et tu es niveau 2, je viens d’abaisser le niveau requis à 2 du coup