Subido por Edgar Javier Juarez Villalvazo

HTTP Y HTTPS

Anuncio
Secretaría de Educación Pública
Tecnológico Nacional de México
Instituto Tecnológico de Ciudad Guzmán
Ingeniería en Sistemas Computacionales
Administración de redes
Unidad 2
Servicios de red
Reporte de práctica
HTTP Y HTTPS
Docente: Felipe Alfonso Ordóñez García
Equipo 9
Ciudad Guzmán Jalisco a 30 de marzo de 2019
Introducción
En el documento se redactara, instalara y configurara un servidor HTTP cuyo sistema
operativo es Ubuntu, pero debido a las condiciones del equipo actual se utilizara una máquina
virtual llamada Virtual Box, además se configurara un cliente.
¿Qué es un servidor HTTP?
HTTP es un protocolo utilizado para solicitar y transmitir archivos a través de Internet u
otra red informática, especialmente páginas web y componentes de páginas web, está
orientado a transacciones y opera a través de un esquema petición-respuesta, entre un
“cliente” y un “servidor”. Al cliente que efectúa la petición (un navegador o un spider) se lo
conoce como “user agent” (agente del usuario, como es el Internet Explorer).
HTTP es el protocolo usado en cada transacción Web (WWW), define la sintaxis y la
semántica que utilizan los elementos software de la arquitectura web (clientes, servidores,
proxis) para comunicarse. Es un protocolo sin estado, es decir, que no guarda ninguna
información sobre conexiones anteriores.
El servidor es aquel en donde se almacenan las páginas de Internet. A la información
transmitida se la llama recurso y se la identifica mediante un URL. Los recursos pueden ser
archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la
traducción automática de un documento, etc.
Instalación del servidor HTTP
1. Para instalar el servidor basta con poner un comando. El comando es el siguiente:

sudo apt-get install apache2
Tras ejecutar el comando, se nos instalará el servidor Apache.
2. Tras instalar el servidor, instalaré también el intérprete de PHP. Para ello debemos
introducir el comando a continuación:

sudo apt-get install php7 libapache2-mod-php7
Tras ejecutar este comando, se nos instalará el php, la última versión.
3. Ahora después de instalar el servidor web y el intérprete, podemos comenzar a configurar
el servidor.
CONFIGURACION
1. Comenzaremos configurando el fichero por defecto del servidor, para que en vez de
mostrarnos la página de Apache cuándo ponemos su IP en una URL del navegador del
cliente, nos salga lo que nosotros queramos poner. En mi caso será un fichero “.php”, de
ahí que hayamos instalado el intérprete.
Nos vamos a la ruta “/var/www/html” y creamos un fichero en su interior, en esta carpeta
introducimos ese fichero que sustituirá al que viene por defecto.
2. En el fichero introduciré en mi caso ese contenido, que nos mostrará por pantalla la
versión de php y demás información sobre este.
3. Entramos en el fichero “dir.conf” para poner ese fichero que hemos creado anteriormente
en primer lugar para que nos salga, en vez de el de por defecto. La ruta es “sudo nano
/etc/apache2/mods-available/dir.conf“.
4. Colocaremos el primero el nombre de nuestro fichero, en nuestro caso info.php.
Como se puede observar en la imagen he introducido el nombre del fichero que he
creado anteriormente y lo he colocado por delante de los que vienen por defecto. Esto
quiere decir que al cargar la web buscará primero si hay un fichero con el “info.php“, si
no lo encuentra buscará el siguiente el “index.html” y así sucesivamente. Al colocar este
al principio la página por defecto del servidor cargará con el contenido de este archivo
“info.php“.
5. Tras esto pasos ya tendríamos cambiado nuestro fichero por defecto, reiniciando el
servicio con el comando “sudo /etc/init.d/apache2 restart” ya estarían los cambios
aplicados. Vamos al siguiente paso de la configuración que es el certificado SSL.
6. Primero instalamos el OpenSSL, que es el programa con el que generaremos el
certificado. Introducimos el siguiente comando:

sudo apt-get install openssl
Una vez instalador vamos a ver cómo generar el certificado.
7. Primero crearemos la llave privada, que será de utilidad para generar el certificado.
Crearemos una llave de 1024 bits, con el algoritmo RSA. Debemos ejecutar el siguiente
comando “sudo openssl genrsa -out server.key 1024“.

sudo openssl genrsa -out server.key 1024
8. Ahora pasamos a crear un CSR (Create Signing Request), siglas que en español significan
Crear Solicitud de Firma de Certificado. Definiremos datos como el dominio,
organización, ubicación, etc… podemos generarlo las veces que queramos así que no nos
preocupemos si nos equivocamos. Si vas a adquirir un certificado SSL de un proveedor
que esté autorizado, durante la gestión, el proveedor les pedirá este archivo para crear
nuestro certificado.
Para generar el CSR ejecutamos el comando “sudo openssl req -new -key server.key -out
server.csr“. Introducimos nuestro país en formato ISO, es decir de dos letras. Introducimos
la provincia, la localidad, el nombre de nuestra organización, el sector de la organización, el
nombre del dominio (he puesto la IP de mi servidor, pero lo adecuado es poner el dominio
en el que queremos el certificado, aunque previamente ya he generado uno para el dominio
que crearé en el host virtual “listo.com”). Y por último el correo de contacto, la contraseña y
el nombre opcional de la compañía lo he dejado en blanco puesto que no es de extrema
importancia.
9. Ahora generaremos el certificado SSL y para ello necesitaremos tanto la llave privada
que hemos creado, como el CSR.
Introducimos el comando “sudo openssl x509 -req -days 365 -in server.csr -signkey
server.key -out server.crt“. El parámetro days nos define la fecha en la que expira el
certificado.
10. Copiamos como se observa en la imagen los dos archivos a la carpeta “certs”. Para ello
usamos los comandos “sudo cp server.crt /etc/ssl/certs/” y “sudo cp sercer.key
/etc/ssl/private/“.
11. En este paso habilitamos el médulo del SSL en Apache con el comando “sudo a2enmod
ssl“.
12. Vamos a editar el archivo del SSL.
Nos vamos a la ruta “/etc/apache2/sites-available” y una vez ahí ejecutamos el comando
“sudo nano default-ssl.conf“.
En este fichero nos interesa la primera parte, en “ServerAdmin” colocamos el correo del
administrador. En “ServerName” el dominio. Y por último en “DocumentRoot” la ruta
donde se encuentra.
Una vez configurado el certificado en el archivo anterior, procedemos a su
habilitación.
13. Se ejecuta el comando “sudo a2ensite default-ssl“.
14. Se ejecuta el siguiente comando para recargarla: sudo service apache2 reload
Ya hemos acabado con el certificado SSL, y por ello cedemos el turno a los host virtuales,
crearé dos host y uno de ellos llevará https y el otro una carpeta a la que accederemos
mediante autentificación.
15. Primero debemos irnos a la ruta “/var/www“, una vez ahí crearemos dos carpetas, una
por cada host. Como se aprecia en la imagen yo tengo a ar.equipo9.com y listo.com
16. En ellas crearé un fichero “.html” Este lo he creado dentro de ar.equipo9.com
17. Este otro se encuentra dentro de listo.com
Ahora que hemos creado las carpetas, vamos a procedes a configurar los
virtual host.
18. Nos vamos a la ruta “/etc/apache2/mods-enabled”. Por defecto como hemos visto al
principio, Apache incluye un archivo llamado “000-default.conf” y sobre el cual
podemos basar nuestra configuración inicial, yo he copiado ese archivo dos veces y le he
puesto el nombre de “ar.equipo9.com.conf” y al otro “listo.com.conf”.
Entramos a los dos archivos para ver la configuración, de esos host.
19. Ahí vemos la configuración del host listo.com, al copiar el archivo por defecto que
configuración, solo he cambiado los datos y adaptarlo a mi host. El número 443 es el
puerto, lo he cambiado del 80 al 443 puesto que es el dominio que tendrá https. En
ServerAdmin colocamos el correo del administrador del host, en ServerName el nombre
del dominio, en ServerAlias el nombre completo del dominio y en el DocumentRoot el
directorio principal donde se ubican los ficheros web.
20. Este sería el otro fichero de configuración del otro host.
Tras crear y configurar los host virtuales nos queda activar los nuevos
sitios, para ello usaremos la herramienta ya usada anteriormente
“a2ensite”.
21. Ejecutamos el comando “sudo a2ensite listo.com.conf” y para activar el otro sitio “sudo
a2ensite joaquin.com.conf“.
Tras acabar con los host virtuales, llegamos a la última parte de esta guía
de configuración es la autenticación en una carpeta privada.
22. Con el siguiente comando “sudo a2emod authnz_ldap“, habilitaremos dicha cosa, tras
esto reiniciamos servicio para que se aplique.
23. En la ruta”/var/www/ar.equipo9.com“, que es donde se encuentra uno de mis host, crearé
una carpeta que se llame privado. Dentro de ella colocare un archivo “.html”, por
ejemplo.
24. En este paso vamos a la ruta “/etc/apache2” y creo una carpeta a la que yo llamaré como
se ve en la imagen, ar.equipo9.com.
25. Ahora crearé el usuario que tendrá acceso a la carpeta que hemos creado anteriormente
llamada privado. Para ello se introduce el comando “sudo htpasswd -c
/etc/apache2/listo.com/passwords alex“, como se observa pongo la ruta de la carpeta
que he creado para que se cree la carpeta passwords y el usuario sea alex. Tras ejecutar
el comando pedirá una contraseña que será la que habrá que introducir para acceder a esa
carpeta que hemos creado con el nombre de privado.
Por último debemos introducir unos parámetros en el archivo de
configuración del host con la carpeta que requiere autentificación en este
caso el host “listo.com”.
26. Introducimos el comando “sudo nano /etc/apache2/sites-available/listo.com.conf“, una
vez dentro del archivo, rellenamos con los parámetros que vemos en la imagen. El
AuhName es el mensaje que saldrá cuándo nos pide el usuario y contraseña. El
AuthUserFile es la ruta del fichero que contiene el usuario y contraseña. En el Require
user, ponemos el usuario en concreto. El Order indica el orden de ejecución de las
directivas Allow y Deny. Y el Allow especifica los equipos a los que se les permite el
acceso, si ponemos Deny denegariamos el acceso a los equipos que indiquemos.
27. Ahora tras acabar la configuración nos toca reiniciar el servicio “sudo
/etc/init.d/apache2 restart” y probarlo en un cliente.
Pruebas
1. Este es el host el cual lleva certificado SSL aunque no nos lo haya dado una empresa
certificadora que este en la lista de nuestro navegador.
2. Aquí tenemos el host, pero esta vez entramos a la carpeta privada y nos pide
autentificación.
3. Este es el otro host que hemos creado.
CONCLUSION
Gracias a estos protocolos es que se puede realizar la transferencia y solicitud de archivos a
través de internet (o alguna red informática similar), generalmente en páginas web. El
HTTPS, además de cumplir las dos funciones mencionadas, también se basa en SSL/TLS,
por lo que resulta más segura la transferencia de contenidos, haciéndolo muy recomendaable
(si no que obligatorio) para páginas web que realicen actividades que involucren el uso de
información personal, pero al utilizar HTTPS no todo es color de rosas, pues la velocidad de
conexión quien se ve afectada ya que, debido a su naturaleza, al implementar el esquema de
“certificado”, el cual está firmado por alguna autoridad de la web que valida que la página
utilizando HTTPS realiza un cifrado y descifrado de todos los datos que se manejan.
Descargar