El protocolo HTTPS es una versión segura del protocolo HTTP que implementa un canal de comunicación basado en SSL (Secure Socket Layer) entre el navegador cliente y el servidor HTTP el cual provee autenticidad (mediante certificados) y privacidad (mediante encriptación). El protocolo HTTP se basa en TCP/IP, el cual es un canal de comunicación no seguro donde la información realiza un número de saltos entre diferentes routers que se encargan de hacer llegar la información desde el cliente al servidor o destino. En cada uno de estos saltos, la información es transmitida en la red local del router, pudiendo ser capturada con fines maliciosos.

Salvo que se utilice IPsec es imposible evitar que se capture nuestra información, pero utilizando HTTPS es posible codificarla para que una vez capturada (mediante sniffing) no pueda interpretarse (y así poder enviar con tranquilidad números de cuenta, datos personales, etc.).



A diferencia de HTTP, HTTPS escucha por defecto en el puerto TCP 443, y antes de transmitir los datos realiza las siguientes acciones. El cliente envía al servidor las opciones de cifrado, compresión y versión de SSL que soporta junto con algunos bytes aleatorios llamado "challenge". El servidor escoge las opciones de cifrado, compresión y versión de SSL entre las que ha ofertado el cliente y le envía su decisión junto con su certificado. Finalmente ambos negocian una clave secreta llamada "master secret" y, utilizando esta clave junto con el "challenge" y las opciones pactadas, se transmiten los datos encriptados de tal manera que de ser interceptados no se puedan descifrar.

El certificado del servidor se utiliza para que el cliente pueda determinar que el servidor es quien dice ser, es decir pueda asegurar su identidad y autenticidad. Un certificado de clave pública es un documento (archivo .crt) que certifica que el interlocutor (el servidor HTTPS en este caso) es quien realmente dice ser. Esto se necesita para evitar que un atacante pueda hacerse pasar por el servidor y recibir la comunicación segura en su lugar.

Los certificados pueden generarse con herramientas como OpenSSL y, para una mayor seguridad, pueden ser firmados por una autoridad certificante, por ejemplo:

  • VeriSign
  • Thawte
  • GoDaddy
  • GeoTrust

Aunque también puede ser autofirmado, en este caso, evitaremos desembolsar la cantidad de dinero que cobran las autoridades certificantes manteniendo el cifrado del canal de datos, aunque el cliente no tendrá total seguridad que la información está siendo enviada al servidor correcto. Con un certificado autofirmado no se puede garantizar la suplantación de identidad, aunque sí la transmisión segura de los datos.

Para concluir les dejo un par de artículos interesantes: Forzar HTTPS en Apache explica como redireccionar todo el tráfico HTTP por HTTPS utilizando un servidor Apache y Cómo crear tu propia Autoridad Certificante (CA) explica cómo crear una autoridad certificante para expedir tus propios certificados autofirmados.


Tal vez pueda interesarte


Compartí este artículo