El protocolo https es idéntico al protocolo http con la excepción de que la transferencia de información entre el cliente (navegador web) y el servidor (servidor web) viaja a través de Internet cifrada utilizando robustos algoritmos de cifrado de datos proporcionados por el paquete OpenSSL.
Los algoritmos de cifrado utilizados reunen las características necesarias para garantizar que la información que sale desde el servidor hacia el cliente, esté cifrada y solamente pueda ser descifrada por el cliente y que la información que sale desde el cliente hacia el servidor, esté cifrada y solamente pueda ser descifrada por el servidor. Si durante la transferencia de la información un 'hacker' hiciera copia de los paquetes de datos e intentara descifrarlos, los algoritmos garantizarían que no podría hacerlo por fuerza bruta (probando todas las claves posibles) en un plazo mínimo de varios años.
Durante la transmisión, se utilizan algotirmos de cifrado simétricos, pero para intercambiar las claves de cifrado, hay una sesión inicial de cifrado asimétrico.
Al instalar apache2 se instala también el módulo ssl para apache2, por lo que no es necesario instalar ningún paquete adicional. Tan solo debemos generar un certificado para el servidor y activar el módulo ssl.
// Generar certificado autofirmado# apache2-ssl-certificate
Tan solo tendremos que responder a algunas preguntas sencillas sobre nuestra ubicación geográfica y el nombre de nuestra organización. A continuación vemos un ejemplo del uso del comando:
Después de la ejecución de comando apache2-ssl-certificate, se habrá generado el archivo /etc/apache2/ssl/apache.pem que contiene la claves que permitirán al servidor utilizar cifrado asimétrico. El siguiente paso será configurar un servidor virtual para que utilice dicho certificado.
Primero crearemos una carpeta de nombre 'websegura' dentro de '/var/www'. Dicha carpeta será el raíz de documentos (DocumentRoot) de nuestro servidor virtual seguro, de modo que todo lo que coloquemos en dicha carpeta deba ser accedido vía 'https'. Eso lo indicaremos más adelante mediante el parámetro SSLRequireSSL. El protocolo https utiliza el puerto 443, por lo tanto, tendremos habilitar dicho puerto para que apache lo utilice:
// Habilitar puerto 443. Añadir en /etc/apache2/ports.confListen 443
Después debemos crear el servidor virtual en apache. Dicho servidor virtual dispondrá de una url de acceso diferente a la de nuestra web principal (websegura.ieslapaloma.com en nuestro ejemplo) y será accesible mediante https, por tanto tendremos que habilitar SSL e indicar la ruta del archivo que contiene el certificado. Todo ello lo haremos editando el archivo /etc/apache2/sites-available/default:
// Servidor virtual seguro.
// Añadir al principio en /etc/apache2/sites-available/defaultNameVirtualHost websegura.ieslapaloma.com:443
// Añadir al final en /etc/apache2/sites-available/default<VirtualHost websegura.ieslapaloma.com:443> ServerName websegura.ieslapaloma.com DocumentRoot /var/www/websegura SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined </VirtualHost> <Directory "/var/www/websegura"> Options Indexes FollowSymlinks MultiViews AllowOverride None Order allow,deny Allow from all SSLRequireSSL </Directory>
Posteriormente debemos habilitar el módulo ssl del servidor apache:
// Habilitar el módulo ssl# a2enmod ssl
Finalmente reiniciamos el servidor apache:
// Reinicio de apache# /etc/init.d/apache2 restart
Si pulsamos sobre el botón 'Examinar certificado' veremos la información tanto del certificado como de la entidad certificadora que lo firma:
Si aceptamos el certificado significa que, a pesar de estar firmado por una entidad certificadora que no es de confianza para el navegador (lo hemos firmado nosotros mismos), lo aceptamos. Tendremos que indicar al navegador si aceptamos el certificado para siempre o solo para ahora. Como tenemos la seguridad de que el certificado es bueno porque acabamos de crearle nosotros mismos, podemos aceptarlo para siempre y así el navegador no volverá a preguntarnos más sobre él ya que hemos indicado manualmente que confiamos en este certificado:
Ahora ya tenemos acceso a la web segura mediante el protocolo https lo que nos garantiza que la información de la página segura, antes de salir del servidor, ha sido cifrada y por tanto la trasferencia de datos desde el servidor a nuestro navegador se ha producido de forma segura. Al llegar a nuestro navegador, se han descifrado los datos. El candado cerrado que aparece abajo a la derecha en el navegador, indica que la trasferencia de datos se ha realizado de forma segura.
Como sabemos la ruta de la carpeta segura, si intentamos acceder a la carpeta segura utilizando el protocolo http yendo con el navegador a 'http://www.ieslapaloma.com/websegura', apache denegará el acceso ya que en 'httpd.conf' se ha especificado que la carpeta debe ser accedida mediante https:
Este proceso habría que hacerlo para todos los profesores o departamentos de nuestro centro que requieran de carpeta segura.