Localización Española

¡Bienvenido a los foros Aeodoo!

Somos la comunidad de Odoo internacional hispanohablante.
Estos foros son para compartir y debatir dudas técnicas, funcionales y mejores prácticas para Odoo. Recuerda que no están permitidos los insultos, descalificaciones o spam, cualquier conducta reprobable supondrá el baneo del usuario.

 
Ocultar IntroRegistro

0

Error gestión certificado en Odoo 16 - Docker

Avatar
JOINSO

Estoy intentando configurar un certificado AEAT.
Dispongo del certificado en formato pfx, lo subo, grabo, y despues al intentar obtener claves, introduzco la clave y me sale este error:
'NoneType' object has no attribute 'private_bytes'
Conectandome a la instancia docker he visto que a cada intento se van generando estos ficheros:

root@odoo16:~/.local/share/Odoo/certificates/16.0/odoodb16/joinso# ls -ltr

total 0

-rw------- 1 root root 0 Aug 19 15:59 private_t6zj0z_7.pem

-rw------- 1 root root 0 Aug 19 15:59 private_ufeaghw3.pem

-rw------- 1 root root 0 Aug 19 16:01 private_b9em8vem.pem

-rw------- 1 root root 0 Aug 19 16:13 private_jwpkfcl8.pem

-rw------- 1 root root 0 Aug 19 16:24 private_ec3kfaad.pem

-rw------- 1 root root 0 Aug 19 16:30 private_w5su_pk4.pem

-rw------- 1 root root 0 Aug 19 16:32 private_4aggt8gt.pem


En conclusión, y tengo esta intuición, podría ser por que el problema es que no encuentra el certificado que se ha subido o que realmente no se sube?

Alguna idea?

Gracias!

Avatar
Descartar
2 Respuestas
0
Avatar
Enric Tobella
Mejor respuesta

A ver el error 'NoneType' object has no attribute 'private_bytes' da a pensar que no esta importando correctamente el fichero. Que tipo de fichero estas intentando importar?


También podria ser que el password no fuera correcto o algo así

3 Comentarios
Avatar
Descartar
Avatar
JOINSO
-

El fichero es un pfx.
El password es correcto (probado en otras máquinas sin problemas).
Que no está importando el fichero correctamente es mi intuición desde el principio.
El hecho de que genere los ficheros private_****.pem es que está intentando extraer la clave privada del fichero, y queda a 0 bytes por que no lo consigue.
El error que indica "has no attribute 'private_bytes" parece indicar que no puede obtener la clave privada, y el 'NoneType' parece ser que está apuntando a algo "nulo".
Estoy por debugar el módulo para ver que no esta encontrando.
El fichero parece subirse correctamente, aunque tiene un comportamiento extraño.
Me explicaré:
Cuando cargas el fichero, aparece un ristra de caracteres como si hubiera leído el certificado ... por ejemplo MII24AADAD ..... en el campo de subir el certificado.
Una vez grabado el certificado, ese campo se convierte en algo como 6 K, es decir el tamaño que ocupa el fichero.
Si despues le das a descargar, te baja el fichero 6 K, que es el archivo original.
Si lo renombramos a xxxx.pfx, lo puedes cargar en local sin problemas.
Creo que Pedro Baeza me dijo que esto era "normal" que hiciera esto.
A partir de aquí tengo varias líneas de investigación:
1) Ver si el fichero llega a "buen puerto", se graba donde tiene que grabarse, etc...
2) Probar de repetir en local el proceso de extraer clave pública y privada. Si no funciona quizás ahí esté el problema.
3) Y por último, si el paso 2 funciona, existiría alguna forma de subir manualmente el certificado junto sus claves públicas y privadas, e indicarle a odoo donde están?

Saludos y gracias por la ayuda de antemano.

Avatar
JOINSO
-

Y creo que he encontrado el problema.
En otra máquina he intentando extraer certificado y clave privada siguiendo esta guía:
https://www.sonicwall.com/support/knowledge-base/how-to-extract-a-public-certificate-and-private-key-from-pfx-for-use-in-gms-analytics/170502327527209
Y este es el resultado:

sh-4.2# openssl pkcs12 -in joinso.pfx -nokeys -out joinso_cert.pem
Enter Import Password:
MAC verified OK
sh-4.2# ls -ltr
total 20
-rw-rw-r-- 1 ec2-user ec2-user 6245 Aug 20 06:25 joinso.pfx
-rw-r--r-- 1 root root 9231 Aug 20 06:28 joinso_cert.pem
sh-4.2# openssl pkcs12 -in joinso.pfx -nocerts -out joinso_private_key.pem -nodes
Enter Import Password:
MAC verified OK
sh-4.2# ls -ltr
total 20
-rw-rw-r-- 1 ec2-user ec2-user 6245 Aug 20 06:25 joinso.pfx
-rw-r--r-- 1 root root 9231 Aug 20 06:28 joinso_cert.pem
-rw-r--r-- 1 root root 0 Aug 20 06:29 joinso_private_key.pem

Fijaros que la clave privada está vacía.

No sé si los pasos que he seguido son correctos.
Volveré a intentar generar el certificado
(lo extraigo de una tarjeta criptográfica con jailbreak para poder exportarlo ....)

Saludos!

Avatar
JOINSO
-

Conseguido!!!!
He ido a buscar el certificado original enviado por la FNMT, y voilà.
Funciona.
Perdón por haber hecho perder el tiempo a todos vosotros!
Os debo un cafe!
Saludos!

0
Avatar
Alejandro Aladro
Mejor respuesta

Hola, tu problema parece que son los permisos, prueba a darle permisos entrando al contenedor, a la ruta donde esta creado los certificados, algo así:

para entrar al contenedor:

docker exec -it --user root nombre_contenedor bash

una vez dentro:

chown -R odoo:odoo  :~/.local/share/Odoo/certificates

3 Comentarios
Avatar
Descartar
Avatar
JOINSO
-

No creo que sea problema de permisos.
Por ejemplo:
root@odoo16:~# cd ~/.local/share/Odoo/certificates
root@odoo16:~/.local/share/Odoo/certificates# cd 16.0/odoodb16
root@odoo16:~/.local/share/Odoo/certificates/16.0/odoodb16# ls -la
total 0
drwxr-xr-x 1 root root 12 Aug 19 15:59 .
drwxr-xr-x 1 root root 16 Aug 19 15:59 ..
drwxr-xr-x 1 root root 320 Aug 19 17:05 joinso
root@odoo16:~/.local/share/Odoo/certificates/16.0/odoodb16#
La carpeta está creada hoy al intentar cargar el certificado, y joinso es el nombre de carpeta que he puesto en odoo.
Es decir hay permisos de escritura.
Tampoco podría crear esos ficheros private_****.pem

Saludos!

Avatar
Alejandro Aladro
-

Por lo que me estas mostrando para root si tiene todo el control pero el usuario odoo que si es la imagen oficial de odoo es el usuario que ejecuta odoo no tiene nada mas que ejecucción si no estoy confundido.
propietario-grupo-otros

Avatar
JOINSO
-

No funciona.
Mismo error: 'NoneType' object has no attribute 'private_bytes'
Y ahora el owner es odoo:
root@odoo16:~/.local/share/Odoo/certificates/16.0/odoodb16/joinso# cd ~/.local/share/Odoo/certificates/
root@odoo16:~/.local/share/Odoo/certificates# ls -la
total 0
drwxr-xr-x 1 odoo odoo 8 Aug 19 15:59 .
drwxr-xr-x 1 root root 70 Aug 19 15:59 ..
drwxr-xr-x 1 odoo odoo 16 Aug 19 15:59 16.0
root@odoo16:~/.local/share/Odoo/certificates# cd 16.0/odoodb16/joinso/
root@odoo16:~/.local/share/Odoo/certificates/16.0/odoodb16/joinso# ls -ltr
total 0
-rw------- 1 odoo odoo 0 Aug 19 15:59 private_t6zj0z_7.pem
-rw------- 1 odoo odoo 0 Aug 19 15:59 private_ufeaghw3.pem
-rw------- 1 odoo odoo 0 Aug 19 16:01 private_b9em8vem.pem
-rw------- 1 odoo odoo 0 Aug 19 16:13 private_jwpkfcl8.pem
-rw------- 1 odoo odoo 0 Aug 19 16:24 private_ec3kfaad.pem
-rw------- 1 odoo odoo 0 Aug 19 16:30 private_w5su_pk4.pem
-rw------- 1 odoo odoo 0 Aug 19 16:32 private_4aggt8gt.pem
-rw------- 1 odoo odoo 0 Aug 19 17:05 private_z88z5td5.pem
-rw------- 1 root root 0 Aug 19 19:41 private_y6rql_c6.pem

Por tanto, eso descartado (creo).

Saludos!