LinuxParty
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.
Si lo que buscas es instalar LetsEncrypt: Tenemos estos artículos:
Generar tu certificado SSL gratis, manualmente con Let's Encrypt
Para más artículos sobre SSL, usa "Buscar, este resultado"
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.
-
Apache
- Cómo cambiar el nombre del servidor Apache por cualquier cosa personalizando el servidor
- Cómo instalar Varnish y realizar una evaluación comparativa del servidor web
- 13 consejos para reforzar la seguridad del servidor web Apache en Servidores Linux
- Cómo administrar el servidor Apache usando la herramienta "Apache GUI"
- Crear un sitio web protegido, con usuario y contraseña
- Cómo instalar Joomla en Rocky Linux y AlmaLinux
- Incrementar el rendimiento de su Web usando Nginx como Proxy con Apache
- ¿Cómo usar IPv6 en Apache?
- Cómo configurar HTTPS en Apache Web Server con CentOS
- Usar el comando occ, cómo funciona.
- Redirigir todo tu viejo dominio al nuevo dominio a través de .htaccess
- Ejemplos y Trucos de uso y configuración del htaccess de Apache
- Seguridad de Joomla: Cómo asegurar su sitio web de Joomla durante la instalación
- Securizar tu servidor Web Apache con mod_security
- Asegurar tu servidor Web Apache con ModSecurity
Comentarios
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á.
firewall-cmd --zone=public --add-port=443/ tcp --permanet
¿Alguna idea?