Firma digital en Linux: Sinadura.net y Adobe Acrobat

Recordemos que habíamos configurado la aplicación Sinadura para firmar un PDF desde Linux con certificado digital (en hardware, es decir, certificado disponible en tarjeta criptográfica, en concreto la tarjeta de la autoridad de certificación IZENPE). Habíamos conseguido firmar el PDF sin problemas, pero cuando lo abríamos en Acrobat Reader, veíamos que la firma no se podía validar (Signature validity is unknown).

¿Cómo solucionarlo? Lo primero, nos descargaremos los certificados raíz y los de ciudadano, empresa, etc. desde la página oficial.

Los descomprimimos y procedemos a su instalación en Adobe Acrobat Reader. Para ello, desde Reader, pulsamos en Document / Manage trusted identities. En Display, elegimos «Certificates». Por el momento sólo está el de la propia Adobe. Pulsamos en «Add Contacts…», a continuación en Browse… e importamos uno a uno los 5 certificados:

ca_raiz.crt ca_aapp_no_reconocidos.crt ca_aapp_reconocidos.crt norecSCI_csrs.crt ca_ciudadanos_entidades_reconocidos.crt

Una vez hecho, veremos una pantalla como la de la figura de la izquierda. Ahora sólo falta editar el grado de confianza del certificado raíz de Izenpe (pulsamos en «Edit trust»), eligiendo una de las opciones (puedes informarte más al respecto aquí). Yo sólo he marcado la opción «Trust this certificate for: Signatures and as a trusted root» (es decir, no he marcado «Certified documents») Pulsamos OK hasta cerrar todas las ventanas que hemos ido abriendo, recargamos el documento y ¡por fin!, vemos que la firma está reconocida como válida por Acrobat Reader.

Addendum: al abrir un documento PDF firmado con certificado IZENPE, Adobe Acrobat Reader realizará una comprobación OCSP para saber si el certificado que se usó para firmar está revocado o no. Durante medio segundo se puede ver una barra de progreso en pantalla (tal y como aparece en la imagen de la izquierda). En las propiedades del certificado, en la pestaña «Revocation», podemos ver si el certificado ha sido revocado o no (según la comprobación que se hace vía OCSP). En nuestro caso, se ve que el certificado no ha sido revocado (es válido por el momento 😉


 

Para saber más al respecto de la gestión de la seguridad de documentos PDF con Adobe Acrobat, existe una guía de seguridad con todo lujo de detalles técnicos.

Revista Linux+ 12/2008

Aleksandra, redactora de la revista Linux+, nos escribe para comentar los contenidos del número de diciembre:

Tema de portada: Seguridad en Linux

En el DVD adjunto encontraréis:

Fedora 9 Sulphur : Distribución basada en KDE 4.0

Y también podréis leer, entre otros, los siguientes artículos:

  • Hardening en Linux
  • WordPress 2.6: Guía de instalación
  • Hosting: Alojamiento de sitios en GNU/Linux
  • Sistemas de detección de intrusos: Reduciendo vulnerabilidades de nuestro sistema
  • Reducción del tiempo de inicio en Linux: Haciendo el sistema más rápido
  • Helix3: Bienvenido al futuro
  • Conocimiento libre: Sección dedicada a la extensión de la esencia del Software Libre a otros ámbitos del conocimiento y la cultura

Metapostariak: el blog del servicio Metaposta

Ya hablamos en DiarioLinux sobre el servicio Metaposta (y como se ve en ese post, también se habló al respecto en el Parlamento Vasco). Tras leer esos documentos, no obstante, seguro que nos quedaban muchas dudas al respecto… Pues bien, los propios administradores de Metaposta han comenzado un blog, llamado METAPOSTAriak, que tiene como objetivo informar sobre este servicio, incluyendo para empezar una descripción más detallada (con ejemplos de uso que yo echaba en falta) tal y como apareció en PCWorld, y un FAQ, donde (en la segunda parte) han tenido a bien publicar la respuesta a mis preguntas 🙂 (thanks David!) Creo que es de obligada lectura para todo usuario del servicio….

Configurar el headset USB en Ubuntu

Aprovechando que me ha tocado un mes de Zattoo (gracias a i-Gente), he querido configurar mi headset (auriculares + micro) USB en Ubuntu (8.04). El sonido funciona en Rythmbox , Skype y hasta ahora en Zattoo. Pero hoy no quería funcionar… o_O

Navegando sin rumbo he encontrado la receta para solucionarlo. Basta con indicarle a Ubuntu que la tarjeta de sonido por defecto es la que incluye el headset:

Podemos ver la lista de tarjetas disponibles así: juanan@morton:/tmp$ sudo asoundconf list Please note that you are attempting to run asoundconf as a privileged superuser, which may have unintended consequences. Names of available sound cards: nForce2 Headset UART Y poner una por defecto (la del headset USB, por ejemplo) juanan@morton:/tmp$ sudo asoundconf set-default-card Headset Please note that you are attempting to run asoundconf as a privileged superuser, which may have unintended consequences. Ya tengo Zattoo funcionando 🙂 juanan@morton:/tmp$ zattoo_player

Web Scraping: urls de ayuntamientos de Gipuzkoa

Bien, sigamos con nuestra miniserie. Necesitamos tener una hoja de cálculo con los nombres de los municipios de Gipuzkoa en una columna y las URL de los ayuntamientos de dichos municipios en la columna adyacente. Ayer vimos que eso es viable y más o menos «automatizable», siempre que dispongamos de algún servicio que nos proporcione la URL de un municipio dado su nombre como parámetro. La información en bruto la podemos encontrar en esta web de EUDEL. El objetivo es «recortar» esa información para guardarla en una simple tabla de una base de datos (usando MySQL como SGDB). Para ello, creamos primero el esquema de nuestra tabla municipios, donde guardaremos la información:

CREATE TABLE <code>municipios ( ID int(11) NOT NULL auto_increment, nombre varchar(200) NOT NULL default », url varchar(200) NOT NULL default », PRIMARY KEY (ID) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Un simple script PHP hará el resto:

<? include ("datosconexion.php"); // datos de conexión a MySQL $municipios = "<a href="http://www.eudel.net/aNG/web/eus/est/udalerriak.jsp?nIdm=1&nId=3&sNombre=Gipuzkoa">http://www.eudel.net/aNG/web/eus/est/udalerriak.jsp?nIdm=1&nId=3&sNombre=Gipuzkoa</a>"; $linea = file_get_contents($municipios); // leemos la página de EUDEL y la guardamos en el string $linea preg_match_all("/<li>(.<em>)<br><a(.</em>)>(.<em>)</a></li>/", $linea, $trozos); // expresión regular para sacar nombre_URL $i = 0; foreach ($trozos[1] as $nombre) { // recorremos el resultado de la expresión regular $url = $trozos[3][$i]; $sql = "insert into municipios set ID='', nombre='$nombre', url='$url'"; mysql_query($sql) or die("Error:" . mysql_error()); // guardamos lo obtenido en la tabla municipios echo $sql . "n"; $i++; } ?> Una vez guardadas las tuplas (nombre, url), sólo nos queda crear el servicio php correspondiente: <? include ("datosconexion.php"); // $nombre = $_GET['municipio'];<br /> $sql = "select </em> from municipios where nombre LIKE '". mysql_real_escape_string($nombre) . "%'"; // intentando evitar ataques SQL Injection // $result = mysql_query($sql) or die("Error:" . mysql_error()); if (mysql_num_rows($result) > 0){ $linea = mysql_fetch_array($result); echo $linea['url']; } ?> Ok! Todo funciona. ¿Y para qué quiero esos datos? Pronto lo veréis…