0 votos

Sincronización con el servidor taskwarrior de escritorio (local) en Ubuntu 16.04 en Windows 10

Después de instalar el Taskwarrior y el servidor Taskwarrior en Ubuntu 16.04 en Windows 10 y de sincronizar con éxito el Taskwarrior con el servidor Taskwarrior en ese portátil, estoy intentando sincronizar la app fdroid taskwarrior en LineageOS 7.1.2 con el portátil.

  • O bien cuando están localmente en la misma red wifi, sin un router configurable,
  • O a través de Internet, preferiblemente sin depender de servicios externos servicios externos.

Así que la pregunta es, ¿qué solución/valor de taskd.server en la aplicación apk me permitiría conectarme a mi pc local con dirección ip estática local: y dirección ip compartida pública? ?^

^Mientras se satisfacen las restricciones:

  • Preferiblemente sin dependencia de servicios externos
  • Por lo demás, es un servicio de pago que permite mantener su propia seguridad/certificados.

Ahora no espero una respuesta sencilla, Agradecería mucho las confirmaciones de las suposiciones o las explicaciones de por qué mis suposiciones o razonamientos son inválidos/incompletos.

Información que describe los pasos de instalación seguidos:

  1. Para simplificar, todas las opciones se multiplican por aplicadas dos veces, para alternarlas con la siguiente configuración:

ciphers=NORMAL ciphers=SECURE256

Como se sugiere aquí: https://bitbucket.org/kvorobyev/taskwarriorandroid/issues/2/provide-a-taskrcandroid-with-options-and

  1. Los certificados se copian de la carpeta en Ubuntu /home/a/.task a la carpeta C:/exportcertificates en el sistema operativo Windows 10 con el siguiente comando:

    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

siguiente en Windows, ca.cert.pem se abre en subliminal. Todo el texto anterior -----BEGIN CERTIFICATE----- para asegurarse de que el certificado ca.cert.pem comienza con -----BEGIN CERTIFICATE----- finaliza con -----END CERTIFICATE----- como sugirió el propietario del repo aquí: https://bitbucket.org/kvorobyev/taskwarriorandroid/issues/19/failed-sync-on-Android-601-nexus-6

A continuación, se copian estos 3 certificados en el almacenamiento interno del teléfono Android con LineageOS, Android 7.1.2.

  1. La ubicación del almacenamiento de los certificados se crea manualmente en el almacenamiento interno del teléfono como :

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

Dónde está la clave de usuario en la instalación original de Ubuntu de taskserver, como se especifica aquí: https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/13/2 . Esto se adhiere al protocolo según: https://wiki.archlinux.org/index.php/Taskd

A continuación se crea una nueva cuenta y la ubicación que la acompaña es la creada anteriormente <uuid> .

  1. Hay n claves, y certificados producidos, algunos podrían estar basados en la información en El archivo /var/taskd/vars que contiene la línea "CN=localhost".

Si uno de los 3 certificados exportados, muy probablemente ca.cert.pem se basa en que CN=localhost podría producir un error ya que el "archivo de configuración" de la aplicación taskwarrior necesita referirse a un host diferente/externo si quiere conectarse al localhost de ese pc. Como creo que está implícito aquí: https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/9/2

  1. El pc tiene IP local: 172.XX.YY.4 y todos los ordenadores de todo el edificio (más de 200 ordenadores) comparten la siguiente dirección IP externa: 89.AAA.BBB.4 . Así que lo primero que intenté fue acceder al router del edificio en la puerta de enlace por defecto para configurar un portforward. Eso no fue posible, ni con https://github.com/kaklakariada/portmapper y el admistrador del sistema indicado:

Los routers no se suministran al edificio, usted en su lan individual se le da a través de DHCP una dirección IPv4 pública. Si usted conecta su PC a la lan no necesita portforward. Si Si quieres puedes poner un router entre la toma de corriente y tu pc para para hacer el portforward.

Eso parece sugerir que sin el portforward debería conectarse directamente al localhost.

Pero no entiendo cómo puedo decirle que vaya desde la dirección IP pública 89.AAA.BBB.4 a la dirección IP local 89.AAA.BBB.4 en el puerto 53589 .

  1. Actualmente estoy trabajando en forzar todos los intentos de conexión a localhost en otro PC de la lista. La lista contiene la configuración de la aplicación taskwarrior F-droid:"

si no se especifican las siguientes líneas, se añaden en la configuración como

    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

O:

    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

Lista de intentos actuales:

    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

Luego traté de hacer un túnel con un host externo usando ngrok (Fuente: https://dashboard.ngrok.com/get-started )

He descargado y desempaquetado el ngrok.exe a c:/ngrok/ abrió cmd>cd c:/ngrok e introducir los siguientes comandos:

    ngrok http 80

Que volvió:

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

Así que el archivo de configuración en el archivo APK se estableció en:

    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

Y a:

    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

Y a:

    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

Y a:

    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

Y a:

    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

Y a:

    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

Sin un número de puerto especificado al final, por ejemplo taskd.server=https://f59195a3.ngrok.io , devuelve inmediatamente el siguiente error:

Sincronización desactivada: fallo de carga del certificado

Con un puerto especificado, por ejemplo taskd.server=f59195a3.ngrok.io:80 y taskd.server=f59195a3.ngrok.io:53589 la sincronización está configurada con éxito y lo intenta y falla después de unos minutos con el error:

Fallo en la recepción de datos: Error no conocido -1 sync failed. No se pudo conectar al servidor de tareas.

Este procedimiento se repite con los diferentes túneles seguros por ngrok utilizando el reenvío al puerto 53589 (que se establece abierto en el firewall de Windows. TODO: Presentar pruebas de que es alcanzable desde un sistema externo (no wifi local)).

    ngrok http 53589
    ngrok tcp 53589

Sin un syc exitoso.

A continuación se utiliza un enfoque similar utilizando https://localtunnel.github.io/www/ . después de la instalación los siguientes comandos se utilizan para configurar un túnel seguro al servidor en Windows 10.

    lt --port 53589

que regresan: https://ancient-octopus-100.localtunnel.me

De forma análoga a ng, los servidores sin el puerto especificado fallan inmediatamente por el error de certificado descrito anteriormente.

Y los que tienen especificación de puerto lo intentaron pero fallaron después de unos minutos con el mismo error especificado arriba.

Luego estaba el impresionante sitio de https://www.freecinc.com/ que proporciona un servicio de alojamiento. Sin embargo sólo permite utilizar las claves que genera ese servicio. Por lo que tengo entendido, al usar eso, se pierde la seguridad, lo cual agradezco.

El otro equivalente impresionante es https://inthe.am/ que requiere una cuenta de Google. Que estoy tratando de evitar.

La siguiente opción es modificar el cn=.. en el archivo de configuración en el propio servidor de alojamiento (mi portátil) para que coincida con el valor que de lo que eventualmente necesita ser rellenado en la aplicación Android taskwarrior. Sin embargo, ya que no he determinado este valor todavía, y asumo que el ca.cert.pert depende del valor "cn=.." en el archivo de configuración que necesitan ser transferidos cada iteración, por lo que es un proceso bastante enrevesado.

En contra de las recomendaciones estoy tratando de usar un portátil como servidor de alojamiento, y estaría extasiado si el teléfono Android y el portátil pudieran sincronizarse si están en la misma red wifi de casa.

Aquí se sugiere https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/10/1 para utilizar "el nombre completo de su máquina para una correcta direccionabilidad en la red". hostname -f devuelve DESKTOP-2XXXXXT.localdomain No creo que ese sea el "nombre completo de la máquina".

1voto

a.t. Puntos 21

La respuesta corta está clasificada por la guía de configuración de Taskwarrior como "una mala idea". Fuente: https://taskwarrior.org/docs/taskserver/taskwarrior.html

Establecer el taskd.trust a ignore hostname con la siguiente línea:

sudo task config taskd.trust -- ignore hostname

Este enfoque se combinó con la solución sugerida en esta pregunta que encontré después: https://superuser.com/questions/1314916/when-listening-to-a-port-taskserver-should-the-local-address-be-localhost-or

Sugiere que se fije el CN=localhost:portnr a CN=0.0.0.0:53589 en el /pki antes de generar los certificados. CN=0.0.0.0:53589 significaría que sólo las instancias de taskwarrior que están en la misma máquina, por ejemplo, virtualbox ubuntu con Taskwarrior o Android emulado con la aplicación Taskwarrior F-droid, podrían acceder al servidor.

Sin embargo, el establecimiento de CN=0.0.0.0:53589 no permitió que el servidor de Taskwarrior en Ubuntu en Windows 10 (a través de Windows Store) se sincronizara consigo mismo. Por eso, el nombre de host ignorado una mala idea se ha añadido para que funcione.

Eso también significó que la aplicación Taskwarrior F-droid pudo sincronizarse con ella desde una red wifi diferente en el mismo edificio.

Hay dos momentos en los que hay que introducir la dirección IP del host y el nombre del puerto.

  1. En el archivo vars del pki en la línea CN=...
  2. Después de decirle a taskserver dónde se encuentran los certificados recién generados, con la línea sudo taskd config --force server 0.0.0.0:53589 --data $TASKDDATA

Tengo la intención de probar las siguientes configuraciones para obtener una respuesta definitiva.

  1. Poniendo la dirección Ip estática de mi portátil y viendo si puedo sincronizar el taskserver en Ubuntu en Windows 10 y la app taskwarrior con el servidor en el pc si introduzco la estática. Con y sin ingerir el nombre de host en taskd.trust

  2. Configuración CN=127.0.0.1:53589 y ver si puedo sincronizar el taskserver en Ubuntu en Windows 10 y la app taskwarrior con el servidor en el pc si introduzco la estática. Con y sin ingoring el nombre de host en taskd.trust

  3. Realización de una búsqueda de problemas más exhaustiva con CN=0.0.0.0:53589 para tratar de sincronizar sin ignorar hostname en taskd.trust .

  4. Cambiando un carácter en cada certificado (uno a la vez) en la aplicación F-droid Taskwarrior y comprobando si la sincronización exitosa se convierte en infructuosa debido a un certificado inválido. De esto se podría concluir que la respuesta que sugiero, ignorar el nombre de host, vulnera la seguridad de la ubicación del nombre de host, y no la comprobación completa de la seguridad del certificado.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X