Twitter Facebook RSS Feed

miércoles, 29 de junio de 2016 a las 23:55hs por Gustavo Cantero (The Wolf)

Let's EncryptCada vez es más necesario el utilizar el protocolo https (Hypertext Transfer Protocol Secure) en nuestros desarrollos, ya sea para mejorar el posicionamiento en Google, realizar transacciones seguras (por ejemplo, para el cobro de nuestro servicios), login de nuestros usuarios sobre un canal seguro, intercambio de información entre sitios, etc.  Para esto es necesario tener el certificado X.509 (ver mi otro  artículo “Conceptos de Certificado Digital y Firma Digital”) que nos permita encriptar la información entre nuestro servidor y los navegadores de nuestros usuarios.  En el artículo “Crear certificados de prueba para servidor y cliente” explico cómo crear un certificado “autofirmado” (self-signed), lo cual nos sirve para sitios de prueba, pero para los sitios de producción no sirven, ya que los navegadores no pueden verificar que este certificado sea válido debido a que fue firmado por una entidad desconocida (o sea, nuestra máquina de desarrollo), por lo que es necesario utilizar un certificado SSL emitido por alguna entidad que los sistemas operativos ya tengan cargada como “conocida”, por ejemplo, Comodo, GoDaddy, GeoTrust.com, etc.

Afortunadamente existe Let’s Encrypt, un servicio creado por la organización sin fines de lucro Internet Security Research Group (ISRG), el cual ofrece certificados gratuitos y libres para todos, contando actualmente con más de 5 millones de certificados para más de 7 millones de dominios, y con importantes sponsors como Mozilla, Akamai, Cisco, Chrome, Hewlett Packard, Facebook, Shopify, IdenTrust (quien justamente vende certificados digitales), 3CX y varios más.

Estos certificados no sirven para validar la autoría del sitio, que es lo que se ve a la izquierda en la barra de direcciones (ver imagen), ni poseen seguro contra un posible robo de identidad como ofrecen la mayoría de los proveedores de certificados, pero sirven perfectamente para encriptar la comunicación, lo cual no es poca cosa.

¿Cómo se puede obtener?

La idea es sencilla: se debe utilizar una herramienta para obtener el certificado, en el sitio recomiendan certbot (cuyo sitio justamente utiliza un certificado de Let’s Encrypt) aunque sólo sirve para Linux/Unix, pero también se puede elegir entre muchas otras herramientas o incluso podemos crear la nuestra propia utilizando alguna librería de las que ofrecen o escribiendo una desde cero.  Las distintas herramientas cliente y librerías se pueden ver y descargar desde acá: Client Options.

A grandes rasgos al momento de solicitar una certificado con la herramienta que hayamos elegido pasa esto: se comunicará con uno de los servidores de Let’s Encrypt (dependiendo si pedimos un certificado de prueba o uno de producción) y le pasará los dominios que queremos incluir en ese certificado, por ejemplo, www.scientia.com.ar y scientia.com.ar, el servicio le devolverá una información para validar que los dominios son nuestros, que puede ser un valor a poner en el DNS o un archivo a publicar en los sitios solicitados (este último es el más común), nuestra herramienta hace lo pedido, por ejemplo, crea el archivo pedido en nuestro sitio con el nombre solicitado por el servicio y le avisa que ya está, el servicio valida que esté todo bien y, en caso que todo haya salido bien, nos envía el certificado.

El siguiente paso es instalar el certificado en el/los servidores web correspondientes, lo cual podremos hacer a mano o a través de la herramienta.

El certificado recibido es válido sólo por 90 días, o sea, antes de que se cumplan los 3 meses debemos volver a pedir un nuevo certificado, pero para eso éstas herramientas nos permiten automatizar las renovaciones de los certificados, para lo cual debemos agregar una tarea programada a nuestro servidor Windows o un cron a nuestro Linux para que periódicamente haga estas renovaciones.

Con esto ya tendremos un certificado para usar en producción, gratis y con renovación automática.

Sin dudas esto va a generar un gran cambio haciendo que muchos más sitios puedan utilizar canales seguros, o sea, mejorando la privacidad y seguridad de internet.

En los próximos artículos voy a explicar cómo utilizar algunas de estas herramientas para solicitar un certificado y automatizar las renovaciones.

¡Suerte!

4 comentarios »

  1. Miguel dice:

    Hola, como tendria que pedir el certificado si no tengo un nombre de dominio, por ejemplo para un servidor QA que solo tengo IPs?.
    Salu2.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.