Introducción
En esta unidad os vamos a enseñar a como tener protegidos la conexión entre el servidor al cliente. Para ello tenemos que tener aclarado ciertos conceptos.
Los servidores web tiene dos protocolos habilitados para poder tener una conexión segura con el cliente que son: TLS Y SSL para poder implementar el protocolo https ( Hypertext Transfer Protocol Secure) que es el que mantiene segura la conexión sin que puedan interceptar los paquetes enviados. Con esto se evitan ataques como el man in the middle.
Hay dos tipos de certificados, auto-firmados o aprobados por un entidad certificadora, es recomendable usar una entidad certificado para las paginas web que se usen en la empresa pero en este caso para ahorrarnos tiempo usaremos una auto-firmada.
Por ello vamos a explicar tanto en un servidor Linux con apache y un servidor Windows con IIs.
Linux
Creación de Certificado y Llaves
En nuestra maquina linux con apache instalado lo primero que haremos es instalar un programa llamado openssl que es el que se utiliza para aplicar el https en las paginas web.
apt-get install openssl
Vamos a generar la clave privadas van a ser cifradas con DES. Esta llave va a usarse para encriptar el certificado con la clave privada ya que eso evita que se pueda usar de forma fraudulenta.
openssl genrsa -des3 -out web.key
Ahora vamos a crear el certificado autofirmandolo nosotros con nuestra clave privada. Aquí nos pedirán información como país, provincia, nombre de la organizacional, etc..
openssl req -new -key web.key -out Certweb.csr
Ahora que esta creado tanto el certifico como la llave vamos a firmar el certificado con nuestra clave parea así poder crear una conexión https segura.
openssl x509 -req -days 365 -in Certweb.csr -signkey web.key -out CertwebFirm.crt
Listo ya tenemos nuestro certificado auto-firmado para nuestra conexión SSL en nuestra pagina.
Configuración de apache
Ahora que ya tenemos el certificado listo tenemos que activar el modulo SSL de nuestro servidor apache si queremos activar la conexión:
a2enmod ssl
Y reiniciamos apache:
service apache2 restart
Ahora tenemos que mover tanto la llave que hemos creado como el certificado ya auto-firmado a los directorios /etc/ssl/certs
para el certificado y /etc/ssl/private
para la llave:
mv CertwebFirm.crt /etc/ssl/certs
mv web.key /etc/ssl/private
Una vez movidos nos vamos al directorio /etc/apache2/sites-available
y entramos en el fichero de configuración de SSL llamado default-ssl.conf.
nano /etc/apache2/sites-available/default-ssl.conf
Dentro nos vamos al apartado DocumentRoot lo modificamos con el directorio donde esta alojado nuestras pagina.
DocumentRoot /var/www/html/Instituto
luego donde dice SSLEngine on
y añadimos lo siguiente:
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire SSLCertificateFile /etc/ssl/certs/CertwebFirm.crt SSLCertificateKeyFile /etc/ssl/private/web.key
Después comentamos las lineas que se refieren a la llave y certificado por defecto:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Ahora iniciamos el modulo SSL:
a2ensite default-ssl
y reiniciamos el servidor:
service apache2 restart
Comprobación
Ahroa vamos a ver que al entrar con un cliente a la pagina web entramos por https:
Windows
Creación del certificado
Ahora vamos a instalar el SSL en un servidor IIS en Windows. LO primero que vamos a hacer es crear un certificado auto-firmado, para este proceso si tienes el IIS instalado no hace falta instalar el openssl
Nos dirigimos a -> Administrador del servidor -> servicio web -> Administrador de IIS -> Doraemon (nombre de la maquina) -> certificados de servidor
Una vez dentro hacemos click en crear certificado auto-firmado, se nos abrirá una ventana donde escribimos el nombre de nuestro certificado:
Configuración del IIS
Una vez lo hemos creado nos vamos a -> Administrador del servidor -> servidor web -> Administrador de IIS -> Doraemon (nombre de la maquina) -> sitios -> nombrede lapagina -> enlaces...
Una vez dentro crearemos un nuevo enlace donde escribiremos los siguiente:
- Tipo: https
- IP: 10.0.0.1
- Puerto: 443
- Certificado: Elegimos el certificador que hemos creado.
Aceptamos y listo ya lo tenemos por https nuestra pagina