Generación en Python de certificados X.509 con "Subject Alternative Name" y una entidad de certificación privada (o autofirmados)

Hay infinidad de recetas OpenSSL en internet para generar certificados X.509 autofirmados o firmados por una autoridad de certificación privada, pero lo cierto es que, cuando entra el juego el Subject Alternative Name, la cosa se complica mucho.

Subject Alternative Name o SAN es una extensión de X.509 que permite que un mismo certificado X.509 cubra varios nombres diferentes. Esto es muy útil, por ejemplo, si tenemos un servidor web que atiende varios dominios distintos y queremos protegerlos con un único certificado X.509.

Utilizar OpenSSL, la opción habitual, para generar un certificado X.509 con SAN es un auténtico dolor de muelas, como puedes ver en mi artículo Generación de certificados X.509 autofirmados con "Subject Alternative Name". En fin, masoquismo. No obstante, el uso de SAN se ha hecho obligatorio desde 2016. Los navegadores (Firefox 48, Chrome 58) e incluso algunas bibliotecas Python nos obligan a ello.

Considerando eso, que tenía la necesidad de generar fácilmente un montón de certificados X.509 con SAN firmados por una Autoridad de certificación privada y que generarlos a mano con OpenSSL era un infierno... Pues eso, toca picar código:

Leer más…

Elimina los mensajes duplicados en tu IMAP4 (III)

La solución propuesta en Elimina los mensajes duplicados en tu IMAP4 (II) funciona perfectamente y es rápida si nuestro servidor IMAP4 mantiene un índice actualizado de las fechas de entrada de cada mensaje en cada buzón. En Dovecot, mi servidor IMAP4, los índices son automáticos: Si se busca por un campo determinado, se creará un índice apropiado de forma automática. Ese índice se gestionará y actualizará automáticamente. Si transcurre un tiempo sin utilizarse, el índice se destruye de forma transparente.

Hace un año tenía varios scripts IMAP4 que utilizaban esos índices de forma rutinaria. Utilizar los índices varias veces por semana los mantenía vivos. Perfecto.

En este tiempo he ido actualizando mis scripts para utilizar la sincronización nativa IMAP4 descrita en RFC 5162 (actualizada en RFC 7162). Al no usar los índices, Dovecot los ha ido eliminando.

¿Ya no son necesarios?.

Tras meses, he vuelto a necesitar hacer limpieza de mensajes duplicados. Sin índices, he tenido que cancelar el proceso antes de terminar, cuando llevaba prácticamente diez horas de trabajo generando índices para ser utilizados una sola vez y ser destruídos de nuevo dentro de unas semanas.

Así que paré el script Python de limpieza y preparé una nueva versión que tenía en mente hace mucho:

Leer más…