0 votes

Synchronisation avec le serveur taskwarrior du bureau (local) sur Ubuntu 16.04 sous Windows 10

Après avoir installé Taskwarrior et le serveur Taskwarrior sur Ubuntu 16.04 sur Windows 10 et réussi à synchroniser Taskwarrior avec le serveur Taskwarrior sur cet ordinateur portable, j'essaie de synchroniser l'application fdroid taskwarrior sur LineageOS 7.1.2 avec l'ordinateur portable.

  • Soit lorsqu'ils sont localement sur le même réseau wifi, sans routeur configurable,
  • Ou par internet, de préférence sans dépendance vis-à-vis de l'extérieur externes.

La question est donc la suivante , quelle solution/valeur de taskd.server dans l'application apk me permettrait de me connecter à mon PC local avec une adresse IP statique locale : et une adresse IP publique partagée : ?^

Tout en respectant les contraintes :

  • De préférence sans dépendance à l'égard de services externes
  • Sinon, un service non payant qui permet de maintenir votre propre sécurité/certificats.

Maintenant, je n'attends pas une réponse simple, J'apprécierais vraiment que l'on me confirme mes hypothèses ou que l'on m'explique pourquoi mes hypothèses ou mes raisonnements sont invalides/incomplets.

Informations qui décrivent les étapes d'installation suivies :

  1. Par souci de simplification, toutes les options sont multipliées par deux, afin d'alterner pour le réglage suivant :

ciphers=NORMAL ciphers=SECURE256

Comme suggéré ici : https://bitbucket.org/kvorobyev/taskwarriorandroid/issues/2/provide-a-taskrcandroid-with-options-and

  1. Les certificats sont copiés depuis le dossier dans Ubuntu /home/a/.task dans le dossier C:/exportcertificates sur le système d'exploitation Windows 10 avec la commande suivante :

    cp /home/a/.task/first.cert.pem /mnt/c/exportcertificates
    cp /home/a/.task/first.key.pem /mnt/c/exportcertificates 
    cp /home/a/.task/ca.cert.pem /mnt/c/exportcertificates

suivant dans Windows, ca.cert.pem est ouvert en subliminal. Tout le texte ci-dessus -----BEGIN CERTIFICATE----- est supprimé, pour s'assurer que le certificat ca.cert.pem commence avec -----BEGIN CERTIFICATE----- la fin se termine par -----END CERTIFICATE----- comme le suggère le propriétaire du dépôt ici : https://bitbucket.org/kvorobyev/taskwarriorandroid/issues/19/failed-sync-on-Android-601-nexus-6

Ensuite, ces 3 certificats sont copiés sur le stockage interne du téléphone Android avec LineageOS, Android 7.1.2.

  1. L'emplacement du stockage des certificats est créé manuellement dans le stockage interne du téléphone comme :

/storage/self/primary/Android/data/kvj.taskw/files/<uuid>

Où est la clé utilisateur dans l'installation Ubuntu originale de taskserver, comme spécifié ici : https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/13/2 . Cela respecte le protocole selon : https://wiki.archlinux.org/index.php/Taskd

Ensuite, un nouveau compte est créé et l'emplacement qui accompagne ce compte est l'emplacement créé précédemment. <uuid> .

  1. Il y a n les clés et les certificats produits, certains pourraient être basés sur les informations contenues dans : le fichier /var/taskd/vars qui contient la ligne "CN=localhost".

Si l'un des 3 certificats a été exporté, il est probable que ca.cert.pem est basé sur ce CN=localhost cela pourrait produire une erreur puisque le "fichier de configuration" de l'application Taskwarrior doit faire référence à un hôte différent/externe s'il veut se connecter à l'hôte local sur ce PC. Comme je pense que c'est implicite ici : https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/9/2

  1. Le pc a une IP locale : 172.XX.YY.4 et tous les PC de l'immeuble (200+ PC) partagent l'adresse IP externe suivante : 89.AAA.BBB.4 . J'ai donc d'abord essayé d'accéder au routeur de l'immeuble au niveau de la passerelle par défaut pour configurer un portforward. Cela n'a pas été possible, ni avec https://github.com/kaklakariada/portmapper et l'administrateur du système a indiqué :

Les routeurs ne sont pas fournis au bâtiment, vous êtes sur votre propre réseau. individuels, on vous donne une adresse IPv4 publique via DHCP. Si vous connectez votre ordinateur au réseau local, vous n'avez pas besoin d'effectuer une redirection de port. Si Si vous voulez, vous pouvez mettre un routeur entre la prise murale et votre ordinateur pour portforward.

Cela semble indiquer que, sans la redirection de port, il devrait se connecter directement à l'hôte local.

Mais je ne comprends pas comment je peux lui dire de passer par une adresse IP publique. 89.AAA.BBB.4 à l'adresse IP locale 89.AAA.BBB.4 au port 53589 .

  1. Je travaille actuellement sur le forçage brutal de toutes les tentatives de connexion à localhost sur un autre pc listé ci-dessous. La liste contient les paramètres de l'application taskwarrior F-droid :"

si les lignes suivantes ne sont pas spécifiées, elles sont ajoutées dans les paramètres comme soit :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=NORMAL

Ou :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=SECURE256

Liste des tentatives en cours :

    taskd.server=localhost:53589

    taskd.server=127.0.0.1:53589

    taskd.server=172.XX.YY.4:53589  

    taskd.server=89.AAA.BBB.4:53589

Ensuite, j'ai essayé de tunneliser un hôte externe en utilisant ngrok (Source : https://dashboard.ngrok.com/get-started )

J'ai téléchargé et décompressé le ngrok.exe a c:/ngrok/ ouvert cmd>cd c:/ngrok et entré les commandes suivantes :

    ngrok http 80

Qui est revenu :

    http://f59195a3.ngrok.io -> localhost:80
    https://f59195a3.ngrok.io -> localhost:80

Donc le fichier de configuration dans le fichier APK était réglé sur :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.server=http://f59195a3.ngrok.io
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=NORMAL

Et à :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.server=http://f59195a3.ngrok.io
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=SECURE256

Et à :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.server=https://f59195a3.ngrok.io
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=NORMAL

Et à :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.server=https://f59195a3.ngrok.io
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=SECURE256

Et à :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.server=f59195a3.ngrok.io
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=NORMAL

Et à :

    taskd.certificate=first.cert.pem
    taskd.key=first.key.pem
    taskd.ca=ca.cert.pem
    taskd.server=f59195a3.ngrok.io
    taskd.credentials=<organisation>\/<username of taskwarrior>\/<User key>
    ciphers=SECURE256

Sans numéro de port spécifié à la fin, par ex. taskd.server=https://f59195a3.ngrok.io il renvoie immédiatement l'erreur suivante :

Sync désactivée : échec du chargement du certificat

Avec un port spécifié, par exemple taskd.server=f59195a3.ngrok.io:80 y taskd.server=f59195a3.ngrok.io:53589 la synchronisation est configurée avec succès et elle essaie et échoue après quelques minutes avec l'erreur :

Échec de la réception des données : Unkown error -1 sync failed. Impossible de se connecter au Taskserver.

Cette procédure est répétée avec le différent tunnel sécurisé par ngrok en utilisant forward to port 53589 (qui est ouvert dans le pare-feu de Windows. TODO : Présenter la preuve qu'il est joignable depuis un système externe (pas le wifi local)).

    ngrok http 53589
    ngrok tcp 53589

Sans une sycologie réussie.

Ensuite, une approche similaire est utilisée en utilisant https://localtunnel.github.io/www/ . après l'installation, les commandes suivantes sont utilisées pour configurer un tunnel sécurisé vers le serveur sur Windows 10.

    lt --port 53589

retour : https://ancient-octopus-100.localtunnel.me

De manière analogue à ng, les serveurs sans le port spécifié ont immédiatement échoué sur l'erreur de certificat décrite ci-dessus.

Et ceux avec la spécification du port ont essayé mais ils ont échoué après quelques minutes sur la même erreur comme spécifié ci-dessus.

Ensuite, il y avait le site génial de https://www.freecinc.com/ qui fournit un service d'hébergement. Cependant, il ne permet d'utiliser que les clés générées par ce service. D'après ce que je comprends, en utilisant cela, vous perdez votre sécurité, ce que j'apprécie.

L'autre équivalent génial est https://inthe.am/ qui nécessite un compte google. W

La prochaine option est de modifier le cn=.. dans le fichier de configuration sur le serveur d'hébergement (mon ordinateur portable) lui-même afin qu'il corresponde à la valeur de ce qui doit éventuellement être rempli dans l'application Android taskwarrior. Cependant, comme je n'ai pas encore déterminé cette valeur, et je suppose que le ca.cert.pert dépend de la valeur "cn=.." dans le fichier de configuration, ils doivent être transférés à chaque itération, ce qui en fait un processus plutôt alambiqué.

Contre les recommandations, j'essaie d'utiliser un ordinateur portable comme serveur d'hébergement, et je serais ravi si le téléphone Android et l'ordinateur portable pouvaient se synchroniser s'ils sont sur le même réseau wifi domestique.

Il est suggéré ici https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/10/1 d'utiliser "le nom complet de votre machine pour une adressabilité correcte du réseau". hostname -f renvoie à DESKTOP-2XXXXXT.localdomain Je ne pense pas que ce soit le "nom complet de la machine".

1voto

a.t. Points 237

La réponse courte est classée par le guide de configuration de Taskwarrior comme "une mauvaise idée". Source : https://taskwarrior.org/docs/taskserver/taskwarrior.html

Définissez le taskd.trust a ignore hostname avec la ligne suivante :

sudo task config taskd.trust -- ignore hostname

Cette approche a été combinée avec la solution proposée dans cette question que j'ai trouvée par la suite : https://superuser.com/questions/1314916/when-listening-to-a-port-taskserver-should-the-local-address-be-localhost-or

Il suggère que l'on définisse les CN=localhost:portnr a CN=0.0.0.0:53589 dans le /pki avant de générer les certificats. CN=0.0.0.0:53589 Cela signifierait que seules les instances de taskwarrior qui se trouvent sur la même machine, par exemple virtualbox ubuntu avec Taskwarrior ou Android émulé avec l'application Taskwarrior F-droid, seraient en mesure d'accéder au serveur.

Cependant, il suffit de mettre CN=0.0.0.0:53589 ne permettait pas au serveur Taskwarrior sous Ubuntu sur Windows 10 (via Windows Store) de se synchroniser avec lui-même. C'est pourquoi le nom d'hôte ignorer une mauvaise idée a été ajouté pour que cela fonctionne.

Cela signifie également que l'application Taskwarrior F-droid a pu se synchroniser avec lui à partir d'un autre réseau wifi dans le même bâtiment.

Il y a deux moments où l'on doit entrer l'adresse IP de l'hôte et le nom du port.

  1. Dans le fichier vars du pki dans la ligne CN=...
  2. Après avoir indiqué au serveur de tâches où se trouvent les certificats fraîchement générés, avec la ligne : sudo taskd config --force server 0.0.0.0:53589 --data $TASKDDATA

J'ai l'intention de tester les configurations suivantes pour obtenir une réponse définitive.

  1. Définir l'adresse IP statique de mon ordinateur portable et voir si je peux synchroniser le serveur de tâches sur Ubuntu sur Windows 10 et l'application taskwarrior avec le serveur sur le pc si j'entre l'adresse statique. Avec et sans l'introduction du nom d'hôte dans taskd.trust

  2. Réglage de CN=127.0.0.1:53589 et voir si je peux synchroniser le serveur de tâches sur Ubuntu sur Windows 10 et l'application taskwarrior avec le serveur sur le pc si j'entre le statique. Avec et sans l'introduction du nom d'hôte dans taskd.trust

  3. Effectuer un dépannage plus approfondi avec CN=0.0.0.0:53589 pour essayer de se synchroniser sans ignorer hostname en taskd.trust .

  4. Changer un caractère dans chaque certificat (un à la fois) dans l'application Taskwarrior de F-droid et vérifier si la synchronisation réussie devient infructueuse à cause d'un certificat invalide. On pourrait en conclure que la réponse que je propose, ignorer le nom d'hôte, viole la sécurité de l'emplacement du nom d'hôte, et non la vérification complète de la sécurité du certificat.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X