miércoles, 29 de junio de 2016 a las 23:55hs por Gustavo Cantero (The Wolf)
Cada 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!
Categoria Certificados Digitales, Seguridad | Etiquetas: HTTPS, SSL
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.
Hola Miguel.
Los certificados van asociados a un dominio, porque además de hacer segura la comunicación el navegador verifica que estés entrando en el sitio del dominio del certificado.
Lo que podrías hacer, ya que es un servidor para QA, es crear un certificado de prueba. En este artículo contamos cómo hacerlo: Crear certificados de prueba para servidor y cliente.
Suerte!
Gracias por su respuesta.
Probe ese metodo pero tanto el IE como el Chrome me sigue marcando «Not secure» en rojo.
En la consola de devs tools indica «This site does not have a valid SSÑ certificate!…»
Hola Miguel.
Nosotros lo estamos usando en varios sitios web. ¿Estás seguro que se instaló bien, que el dominio es el que corresponde al sitio y que estás ingresando por https?
Saludos.