«Producir y nutrir,
producir y no poseer,
obrar y no retener,
acrecentar y no regir,
son el misterio de la vida.»
Compiling node.js for Android Lollipop
While participating in the Nordic IoT Hackathon 2015 our team Hello North (wrongly tagged as «HackLab team») wanted to explore the potential of running node.js applications running native in Android.
Happily this was solved by Yaron Y. Goland and described in a post. Using his method I've compiled node.js against android-ndk-r10d running the example on a 4.2.2 rooted device.
The next step was to try in a unrooted one, but only got at first a 5.0 Lollipop one. Execution failed with a error: only position independent executables (PIE) are supported. error message. Some investigation got me to a solved bug report. The magic trick seems to be just this patch.
It took me some time to understand how to add this to the node.js building configuration system but seems got fixed just like this:
--- /home/olea/node/android-configure~ 2015-04-11 02:46:04.063966802 +0200
+++ /home/olea/node/android-configure 2015-04-11 01:56:34.470154253 +0200
@@ -6,14 +6,16 @@
--toolchain=arm-linux-androideabi-4.8 \
--arch=arm \
--install-dir=$TOOLCHAIN \
- --platform=android-9
+ --platform=android-16
export PATH=$TOOLCHAIN/bin:$PATH
export AR=arm-linux-androideabi-ar
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
export LINK=arm-linux-androideabi-g++
+export CPPFLAGS="-fPIE"
+export LDFLAGS="-fPIE -pie -L$PREFIX/lib"
And this is the test:
¡Yepa!
PS: Just checked the same build using android-16 platform runs in 4.2.2. ¡Double Yepa!
Qué es el procomún
El siguiente texto lo he preparado a la sazón del programa
de actividades complementarias del Almería
Creative Commons Film Festival, el primer festival, y casi la primera actividad, en Almería exclusivamente
dedicado a este mundo. Me ha gustado tanto que he querido
publicarlo en mi propio blog. Aquí queda:
¿QUÉ ES EL PROCOMÚN?
El DRAE lo define como
procomún. ( De pro, provecho, y común). 1. m. Utilidad pública.
pero el filósofo Antonio Lafuente va mucho más allá:
«lo que es de todos y de nadie al mismo tiempo»
Para Antonio la expresión procomún es la traducción al español más acertada para el término inglés commons. Pero ¿tiene que ver el procomún con nuestra vida diaria? Absolutamente: el aire, el futuro, los sentimientos, el ADN, todos son procomunes cotidianos, casi personales. Otros son más distantes pero igualmente indispensables: las pesquerías, parques naturales… la lista es ¿infinita?. Y tenemos otros procomunes que están floreciendo avivados por el galopante desarrollo tecnológico: el software libre, la Wikipedia, Internet y la Web dentro de ella. El mismo HackLab Almería es un modesto procomún que nos empeñamos en construir para ponerlo a vuestra disposición.
¿Cambios en la AC FNMT-RCM? Probando el servidor OCSP
A raíz de un
hilo en Twitter sobre la inexistencia del servicio de CRL de la Autoridad de Certificación de la FNMT sólo se me ha
ocurrido que en vez de dedicarme a mis responsabilidades me era imperioso saber qué se estaba cociendo... La noticia más
chocante es la actividad reciente en la infame entrada
#435736
del bugzilla de Mozilla (abierta desde 2008 para que Mozilla acepte el certificado raiz de la AC FNMT). Parece que por fin
alguien se está aplicando a resolver el problema. Y entre las perlas más suculentas allí recogidas está un documento titulado
General Certification Practices Statement en el que aparecen detalles como, precisamente, las URIs de publicación de
los CRL o los varios servicios OCSP aparentemente disponibles. Si eres de los que han estudiado anteriormente el uso de
CERES-FNMT probablemente hayas levantado una
ceja. Sí: parece que están habilitando por fin estos servicios. El que no conozca la causa de nuestra sorpresa deberá saber
que hasta ahora el servicio de validación de certificados de CERES FNMT para certificados de usuario final (por ejemplo
de ciudadanos corrientes y molientes)
ha sido de pago (ver ilustración). Para algunos esta ha sido otra de las causas que han lastrado la adopción de la
firma digital en España.
Entre los detalles me han llamado la atención las URIs de los servicios OCSP:
- ROOT AC. Access: http://ocspfnmtrcmca.cert.fnmt.es/ocspfnmtrcmca/OcspResponder
- Public Administration AC Subordinate Certificate. Access: http://ocspap.cert.fnmt.es/ocspap/OcspResponder
- Computer Components AC Subordinate Certificate. Access: http://ocspcomp.cert.fnmt.es/ocsp/OcspResponder
y claro, inmediatamente he querido verificar si ya estaban operativos, con la triste circunstancia de que no tengo ni idea de cómo hacerlo. Tras algo de investigación y con oportunismo de corta y pega he dado con una orden que creo serviría:
openssl ocsp -issuer AC_Raiz_FNMT-RCM_SHA256.cer -serial 0x36f11b19 -url http://ocspfnmtrcmca.cert.fnmt.es/ocspfnmtrcmca/OcspResponder -CAfile AC_Raiz_FNMT-RCM_SHA256.cerSiendo:
- -issuer AC_Raiz_FNMT-RCM_SHA256.cer el certificado raiz de la AC en cuestión;
- -serial 0x36f11b19 el número de serie de un certificado FNMT emitido en 2005 y caducadísimo;
- -url http://ocspfnmtrcmca.cert.fnmt.es/ocspfnmtrcmca/OcspResponder la URI del servicio OCSP que usaremos, en este caso he elegido el que arriba aparece denominado «ROOT AC. Access» porque me ha parecido el más general para el servicio de particulares comparado con los otros dos;
- -CAfile AC_Raiz_FNMT-RCM_SHA256.cer realmente no sé porqué habría de usar este parámetro, entiendo que es para verificar el resultado ofrecido por el servicio OCSP y todos los ejemplos que he encontrado lo usan de alguna forma; curiosamente sólo he conseguido eliminar los mensajes de error usando el mismo certificado que en -issuer pero no sé si es el comportamiento correcto o si en este caso funciona así por ser un certificado raiz autofirmado.
El resultado obtenido es el siguiente:
Response verify OK
0x36f11b19: good
This Update: Nov 18 12:11:20 2014 GMT
Next Update: May 17 11:11:20 2015 GMT
Y podréis decir «pues qué bien, ¿no?». O no. No lo sé. Ignoro los intríngulis de protocolo OCSP pero me esperaba otra respuesta para un certificado caducado hace más de ocho años. El caso es el que servicio sí está levantado y podemos ver más detalles usando la opción -text de openssl oscp:
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: C = ES, O = FNMT-RCM, OU = AC RAIZ FNMT-RCM, CN = SERVIDOR OCSP AC RAIZ FNMT-RCM
Produced At: Feb 18 16:27:29 2015 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: BADF8AE3F7EB508C94C1BAE31E7CDC3A713D4437
Issuer Key Hash: F77DC5FDC4E89A1B7764A7F51DA0CCBF87609A6D
Serial Number: 36F11B19
Cert Status: good
This Update: Nov 18 12:11:20 2014 GMT
Next Update: May 17 11:11:20 2015 GMT
El caso es que he probado a usar variantes del número serie aleatorias así como de certificados en vigor y siempre da un «good» por respuesta. Y lo poco que me ha podido contar alguien más familiarizado con la tecnología de AC es que este tipo de comportamiento en un servicio OCSP sería normal.
Dudas:
- El servicio OCSP de FNMT, o al menos el que he usado, está levantado, sí, pero ¿ya está realmente operativo?
- ¿Es correcta mi manera de invocarlo desde openssl? no estoy seguro;
Otras conclusiones:
Diría que efectivamente parece FNMT se ha tomado en serio configurarse como una autoridad de certificación seria. Por fin.
Supongo que ha podido la presión de al menos los usuarios corporativos públicos que últimamente están emitiendo sus certifcados
X509 de servidor a través de
Camerfirma
(verbigracia la Agencia Tributaria), supongo que cansados de que los usuarios menos avezados se hagan un lío con el proceso
de instalación del certificado raiz adecuado y de no saber interpretar correctamente los mensajes de precaución de los
navegadores. También parece que empiezan a dejar de usar el nombre Ceres para referirse al servicio. Al menos ha sido mi
impresión.
Si alguien detecta errores en lo aquí mostrado estaré encantado de corregir lo que haga falta.