Exportar e importar firmas digitales en GNU/Linux

Firma digital

Firma digital

Ando liado con trámites tributarios.

La firma digital es una de esas cosas de la tecnología que te hace preguntar: ¿cómo hemos podido vivir sin esto? Puede parecer una exageración, pero el hecho de poder hacer trámites de la Agencia Tributaria o de asuntos relacionados con tu ayuntamiento desde el PC de tu casa, no tiene precio. No tienes que pedir horas en tu trabajo, no haces colas, es muy rápido e indoloro. La pega que tiene es el soporte técnico. Tiene un soporte horrible. A pesar de haber cursado asignaturas en la carrera donde se ven los certificados, firmas y demás engendros digitales, tengo que reconocer que me cuesta un poco tanto “palabroto” técnico (X.509, PKCS12, PEM, etc). No quiero imaginar a mi madre haciendo esto.

El asunto es que ayer probé a usar mi firma digital y comprobé que estaba caducada (tenia que haberla renovado por la propia web meses antes de que caducara). Era necesario volver a solicitar una nueva. El proceso es sencillo:

  1. Entras en la web de CERES y solicitas un certificado de usuario (no sé como irá el tema de los DNIe)
  2. Te piden el NIF y te generan un código que tienes que guardar.
  3. Es necesario que te presentes con el DNI en la oficina más cercana que expida firmas digitales (hay un buscador que calcula la más cercana a tu dirección).
  4. Te presentas en la oficina, enseñas el código, el DNI y firmas el contrato de adhesión.
  5. Vuelves a tu casa, te conectas a la web de CERES y especificando tu DNI y el código previamente asignado, ¡voila! el certificado se instala en tu equipo.

El proceso anterior es la teoría. En la práctica hay una letra pequeña que cuando se lee ya es tarde. Cuando vuelves de firmar el contrato y pinchas en la opción de descarga, aparece un párrafo que dice: “El certificado se descargará en el navegador y PC con el que solicitó el certificado“. El gráfico “Uppss” aparece en mi cabeza: “PC el de siempre…, navegador web… Google Chrome Beta para GNU/Linux“. Por supuesto, Chrome todavía no está preparado para gestionar este tipo de certificados personales. La cuestión es que, aún sabiendas de que posiblemente no iba a funcionar, pulsé en “Descargar“. Ni el puntero del ratón se movió. Indagando un poco en cómo gestiona Chrome los certificados, me doy con una utilidad muy potente, certutil.

Resulta que Chrome guarda los certificados bajo la ruta ~/.pki/nssdb/ en varios ficheros que suelen ser bases de datos SQLite3.

Uno de los cometidos de certutil es mostrar los certificados que existen en esa base de datos. Para ser exacto, esta línea me mostró todos los certificados

certutil -L -d sql:~/.pki/nssdb 

Qué sorpresa me lleve cuando comprobé que la última línea correspondía con mi certificado personal. Resultó que cuando le di a descargar el certificado, Chrome lo guardo ahí.

Genial. Si el certificado está ahí, seguro que puedo exportarlo e importarlo en Firefox (que sí esta soportado). ¿Cómo?

Después de buscar un poco, encontré una opción para exportar certificados para LDAP que usaba la utilidad pk12util.

El nombre de esta utilidad viene del formato de documento, PKCS12, se trata simplemente de una forma de codificar un certificado digital que contiene tu clave pública y privada mediante una contraseña para que nadie te pueda usurpar. Era necesario por tanto establecer una contraseña y guardarla en un archivo (por ejemplo, /tmp/clave”). La sintaxis que usé para exportar mi certificado fue:

 pk12util -d sql:~/.pki/nssdb -n "<nombre-certificado-mostrado-por-certutil>" -o <nombre-fichero-salida>.p12  -w /tmp/clave -k /tmp/clave 

El mensaje de salida fue: pk12util: PKCS12 EXPORT SUCCESSFUL

Faltaba la prueba de fuego: ¿funcionará en Firefox?¿cargará por fin la Oficina Virtual?

Podéis imaginar que sí🙂

Firefox, después de solicitarme la clave que especifiqué en “/tmp/clave”, importó sin problemas el certificado y la oficina virtual por fin entró.

No sé si este post servirá para alguien o no. Por lo menos dejó registró en la web por si algún día necesito recurrir a estos comandos (ya sabéis eso de volver a tropezar con la misma piedra).

He obviado algunos detalles sobre la importación y solicitud de firma digital. En la Web hay bastante información al respecto. No obstante, si teneis dudas, preguntad🙂

ACTUALIZACIÓN:

La versión 10.0.648 (y posterior) de Chrome soporta ya la gestión de  certificados.

Translate to:English
MenefanteMenéame TwitterTwitter

6 Responses to Exportar e importar firmas digitales en GNU/Linux

  1. Javi dice:

    ¡¡Gracias!! ¡¡GRACIAS!! Me tomaré unas cañas a tu salud, no sabes las vueltas que he dado intentando descargar el certificado de las narices

    • Chema dice:

      Me alegro que te valga mi experiencia “religiosa” con los certificados digitales y Chrome🙂 Gracias a ti por el comentario, me anima a seguir escribiendo.

  2. ita dice:

    Muchas gracias por esto, no podía encontrar los argumentos del comando pk12util.

    A mi el export no me iba con el símbolo “~”, tuve que utilizar $HOME (mozilla-nss-tools-3.12.6-5.5.x86_64):

    www:~> certutil -L -d sql:~/.pki/nssdb
    certutil: function failed: security library: bad database.

    www:~> certutil -d sql:$HOME/.pki/nssdb -L
    (ok)

  3. Pingback: Usar certificado digital en Google Chrome y Chromium « Informático de Guardia

  4. PT dice:

    DESDE LA MAS ABSOLUTA IGNORANCIA EN ESTOS TEMAS, EXISTE LA MISMA OPCIÓN PARA WINDOWS O SOLO ES VALIDA PARA LINUX?

  5. Chema dice:

    Hola PT, en Windows suele ser todo “más fácil” (user friendly)
    Sé que con Internet Explorer se puede exportar (creo que Firefox también).

    La verdad es a día de hoy, para poder hacer todos los trámites de Hacienda y demás, es necesario Internet Explorer, ya que los señores de la Administración usan componentes ActiveX para el firmado de documentos (ya podían usar al menos Java).

    Un saludo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: