LinuxParty

Ratio:  / 2
MaloBueno 

Los servidores web utilizan HTTP por defecto, que es un protocolo de texto claro. Como su nombre indica, un protocolo de texto no cifrado que no aplica ningún tipo de encriptación de los datos. Mientras el servidor web basado en HTTP es muy fácil de configurar, tiene una desventaja importante en términos de seguridad. Exponerse a cualquier ataque "man-in-the-middle" capaz de ver el contenido de los paquetes en tránsito con analizadores de paquetes cuidadosamente colocados. En caso de una vulnerabilidad, un usuario malintencionado puede incluso configurar un servidor "impostor" en la ruta de tránsito, que a continuación, se hace pasar por el servidor web de destino. En este caso, los usuarios finales pueden comunicarse realmente con el servidor impostor en lugar del servidor de destino real. De esta manera, el usuario malintencionado puede engañar a los usuarios finales para que entreguen información confidencial, como nombre de usuario y las contraseñas a través de falsos formularios cuidadosamente elaborados.

Para hacer frente a este tipo de vulnerabilidades, la mayoría de los proveedores a menudo prefieren HTTPS en sus servidores web. Para los sitios donde los usuarios sólo leen el contenido y en realidad no introducen cualquier información, HTTP sigue siendo una opción viable. Sin embargo, para los sitios que mantienen la información y/o sitios donde se conectan usuarios donde obtienen servicios sensibles, HTTPS es una necesidad. HTTPS permite que una página proporcionae los siguientes servicios.

  • Asegura que todos los paquetes de tránsito hacia y desde los servidores están cifrados.
  • Establece la confianza con un certificado digital oficial, de manera que los servidores impostores no pueden pretender ser el servidor real.

La primera cosa necesaria para la creación de HTTPS es un certificado digital. Los certificados digitales se pueden obtener de cualquiera de los métodos siguientes.

Los certificados autofirmados se recomiendan para fines de pruebas y proyectos personales. Los certificados autofirmados son aplicables también para los proveedores de servicios donde los usuarios del cliente son específicas y el círculo de la confianza es limitada. Los certificados autofirmados no cuestan dinero.

Los certificados se pueden obtener de proveedores de certificados basados en la comunidad, tales como StartSSL y CACert . Estos certificados no cuestan dinero tampoco, se recomiendan para proyectos personales.

Para proyectos comerciales donde se accede a los sitios web a nivel mundial, se recomienda comprar un certificado de una autoridad certificadora de confianza conocido. Estos certificados cuestan dinero, pero aumentan la credibilidad del proveedor de servicios web.

Preparación

En esta demostración, vamos a utilizar un certificado auto-firmado. Se supone que el servidor web Apache ya está instalado en CentOS. Para generar un certificado auto-firmado, se utiliza openssl. Si openssl no está instalado, se puede instalar para tal uso.

# yum install mod_ssl openssl

Generar un certificado autofirmado

Los siguientes comandos se pueden utilizar para generar un certificado auto-firmado.

En primer lugar, generar una clave privada con cifrado de 2048 bits.


# openssl genrsa -out ca.key 2048

Luego genere solicitud de firma de certificado (CSR).

# openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:es
State or Province Name (full name) []:Caceres
Locality Name (eg, city) [Default City]:Caceres
Organization Name (eg, company) [Default Company Ltd]:LinuxParty
Organizational Unit Name (eg, section) []:Prensa
Common Name (eg, your name or your server's hostname) []:LinuxParty
Email Address []:Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:passworddeprueba
An optional company name []:ExtreHost

Por último, generar un certificado auto-firmado de tipo X 509, que tiene una validez de 365 keys.

# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

Una vez creado el certificado, copia los archivos en los directorios necesarios.

# cp ca.crt /etc/pki/tls/certs/
# cp ca.key /etc/pki/tls/private/
# cp ca.csr /etc/pki/tls/private/

Configuración del servidor Web Apache

Ahora que el certificado está listo, es hora de verlo en funcionamiento.

En primer lugar, edite el archivo de configuración siguiente.

 
# vim /etc/httpd/conf.d/ssl.conf 

### overwrite the following parameters ### SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key ### The following parameter does not need to be modified in case of a self-signed certificate. ### ### If you are using a real certificate, you may receive a certificate bundle. The bundle is added using the following parameters ### SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle

A continuación, reinicie el servicio httpd para que los cambios surtan efecto.

# service httpd restart

El servidor web ya está listo para usar HTTPS.

Ajuste de máquinas virtuales

El Servidor web Apache se puede configurar para alojar múltiples sitios web. Estos sitios se declaran como hosts virtuales en el archivo de configuración httpd. Por ejemplo, supongamos que nuestro servidor web Apache tendrá 1un sitio "virtual-web.example.com", y todos los archivos del sitio se almacenan en el directorio /var/www/html/virtual-web

Para el host virtual, la configuración típica para HTTP se vería así.

# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
    DocumentRoot /var/www/html/virtual-web
    ServerName virtual-web.example.com
</VirtualHost>

Tenemos que crear una definición similar para HTTPS también.


# vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:443

<VirtualHost *:443>
	SSLEngine on
	SSLCertificateFile /etc/pki/tls/certs/ca.crt
	SSLCertificateKeyFile /etc/pki/tls/private/ca.key
	<Directory /var/www/html/virtual-web>
		AllowOverride All
	</Directory>
	ServerAdmin Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
DocumentRoot /var/www/html/virtual-web
ServerName virtual-web.example.com
</VirtualHost>

Para cada host virtual, etiquetas similares deberían ser definidas. Después de agregar los hosts virtuales, el servicio web se reinicie.

# service httpd restart

Ahora las máquinas virtuales están listos para usar HTTPS también. Opcional: Forzar Apache Web Server a utilizar siempre HTTPS

Si, por alguna razón, usted decide utilizar siempre HTTPS en el servidor web, usted tendrá que redirigir todas las solicitudes HTTP entrantes (puerto 80) hacia el puerto HTTPS (puerto 443).

El Servidor web Apache puede ser fácilmente ajustado para hacer esto.

1. Forzar el Sitio principal solamente

Para forzar el sitio principal para usar siempre HTTPS, modificamos el fichero de configuración httpd.

# vim /etc/httpd/conf/httpd.conf

 

ServerName www.example.com:80
Redirect permanent / https://www.example.com
# service httpd restart

 

2. Forzar Hosts virtuales

Si desea forzar HTTPS en algún host virtual, así, la definición de HTTP se puede reescribir como sigue.


# vim /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
    ServerName virtual-web.example.com
    Redirect permanent / https://virtual-web.example.com/
</VirtualHost>

# Service httpd restart

En resumen, HTTPS siempre se recomienda para los sitios donde se conectan los usuarios. Esto mejora la seguridad tanto en el servidor y los usuarios que lo utilizan. Los certificados pueden ser obtenidos en diversos medios, como los auto-firmado, impulsado por la comunidad o incluso las autoridades comerciales. El administrador debe ser prudente al seleccionar el tipo de certificado que se utilizará.

Espero que esto ayude.

Comentarios   

0 # Cesar 22-12-2014 22:45
Hola,

Como agrego el puerto 443 en CentOS? solo agregarlo, sin instalar SSL
Responder | Responder con una citación | Citar
0 # Maikel 23-12-2014 08:17
Cito a Cesar:
Hola,

Como agrego el puerto 443 en CentOS? solo agregarlo, sin instalar SSL


Lo primero que tienes que hacer, es abrir el puerto 443 en el firewall, y ya está.
Responder | Responder con una citación | Citar
0 # Javier H 27-11-2016 15:18
Para abrir el puerto 443 usa el comando

firewall-cmd --zone=public --add-port=443/ tcp --permanet
Responder | Responder con una citación | Citar

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Encuesta de LinuxParty

¿Qué valoras más al visitar una Web?

1.- Que tenga muchas imágenes y muchos vídeos (Pese a que pese) - 2.9%
2.- Que sea muy elegante, con mucho JavaScript y CSS e imágenes - 5.8%
3.- Que cargue rápido y clara, con la cantidad justa de JS, CSS e imágenes - 41%
4.- Que sea clara y concisa, que pueda llegar al destino rápido, sin florituras - 41.6%
5.- Que sea HTML 1.x, sin JS, ni CSS, ni PHP, ni Ruby, ni "nada de nada". - 1.2%
6.- Que se cargue rápidamente, en un módem de 56 Kb, beep, beeeep - 7.5%

Total votes: 173
The voting for this poll has ended on: 27 Ene 2017 - 00:00

Donar a LinuxParty

La mejor forma de darnos las gracias, es hacer una donación.


¿Quién está online?

Hay 237 invitados y ningún miembro en línea

Tutorial de Linux