Cómo proteger a Apache con Let’s Encrypt en Ubuntu 16.04

Introducción

Este tutorial le mostrará cómo configurar un certificado TLS / SSL de Let's Encrypt en un servidor Ubuntu 16.04 que ejecute Apache como un servidor web. También cubriremos cómo automatizar el proceso de renovación de certificados.

Los certificados SSL se utilizan en los servidores web para cifrar el tráfico entre el servidor y el cliente, proporcionando seguridad adicional a los usuarios que acceden a su aplicación. Let's Encrypt proporciona una forma sencilla de obtener e instalar certificados de confianza de forma gratuita. Sigue leyendo

Cómo crear un certificado SSL auto-firmado para Apache en Ubuntu 16.04

Introducción

TLS o seguridad de capa de transporte, y su predecesor SSL , que representa la capa de sockets seguros, son protocolos web usados ​​para envolver el tráfico normal en un contenedor protegido y encriptado.

Utilizando esta tecnología, los servidores pueden enviar tráfico de forma segura entre el servidor y los clientes sin la posibilidad de que los mensajes sean interceptados por terceros. El sistema de certificados también ayuda a los usuarios a verificar la identidad de los sitios con los que se conectan.

En esta guía, le mostraremos cómo configurar un certificado SSL autofirmado para su uso con un servidor web Apache en un servidor Ubuntu 16.04.

Nota: Un certificado autofirmado cifrará la comunicación entre su servidor y cualquier cliente. Sin embargo, debido a que no está firmado por ninguna de las autoridades de certificados de confianza incluidas en los exploradores web, los usuarios no pueden utilizar el certificado para validar la identidad de su servidor de forma automática.

Un certificado autofirmado puede ser apropiado si no tiene un nombre de dominio asociado con su servidor y para instancias en las que la interfaz web cifrada no es orientada al usuario. Si hacer tener un nombre de dominio, en muchos casos, es mejor utilizar un certificado firmado. Puede averiguar cómo configurar un certificado de confianza gratuito con el proyecto Let's Encrypt aquí .

Sigue leyendo

Activar SSL en Apache2 (Ubuntu 10.04)

# Instalamos Apache
sudo aptitude install apache2

# Habilitamos el módulo SSL
sudo a2enmod ssl

# Habilitamos la configuración SSL por default

sudo a2ensite default-ssl

# Reiniciamos el servidor
sudo /etc/init.d/apache2 restart

Ya con esto queda habilitado, puedes probarlo entrando al localhost con https://127.0.0.1
Para crear  nuestro certificado, debemos seguir los siguientes pasos

# Creamos las llaves

cd /etc/apache2

sudo openssl genrsa -des3 -out server.key 1024

# Creamos el certificado con la llave
sudo openssl req -new -key server.key -out server.csr

# Creamos nuestro certificado, contestando las preguntas que nos indique recordando la contraseña


sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

#Cambiamos de carpeta la llave y certificado

sudo cp server.crt /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/

# Abrimos el archivo de configuracion default-ssl

cd /etc/apache2/sites-available
sudo vim default-ssl

# reemplazamos y habilitamos la siguiente configuracion
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key

# habilitamos el archivo

sudo a2ensite default-ssl

# Reiniciamos apache y listo!!
sudo /etc/init.d/apache2 restart

Proteger directorio en apache

Conociendo la ubicación local del directorio a proteger, para este ejemplo se usara el directorio donde tengo configurado phpMyAdmin para acceder a la Base de Datos Mysql a traves de la web. El directorio se encuentra en:
/home/httpd/html/myadmin

Se accede desde la web desde:
http://localhost/myadmin/index.php

Editamos el siguiente fichero (respetar el punto de .htaccess), y lo guardamos en /home/httpd/html/myadmin
El punto (.htaccess y .htpasswd) delante del nombre de un fichero, convierte al fichero en oculto al hacer un listado.

En el siguiente codigo, le indicamos de donde tiene que leer el fichero con los usuarios y contraseñas con las que tenemos acceso a este directorio

-------Fichero: .htaccess----------
AuthUserFile  /home/httpd/html/myadmin/.htpasswd
AuthGroupFile /dev/null
AuthName "PhpMyAdmin Server"
AuthType Basic
 
Options All
<Limit GET POST PUT>
require valid-user
</Limit>
-------Fin Fichero-------------

Este fichero hace referencia a un fichero en /home/httpd/html/myadmin/.htpasswd

Este fichero contiene los usuarios y contraseñas con las que tenemos acceso a este directorio (respetar el punto de .htpasswd)

Para generar este fichero usaremos la utilidad htpasswd, que genera un fichero de claves.

Para usarlo basta hacer:

[root@p90 myadmin]# htpasswd -c /home/httpd/html/myadmin/.htpasswd pepe
New password: (ponemos pepe como contraseña)
Re-type new password: 
Adding password for user pepe

Esto es lo que saldra en el fichero .htpasswd --> pepe:ZsXDr0J0KGuEo
La opción -c lo que hace es sobreescribir cada vez que lo ejecutais

Si quereis añadir nuevos usuarios basta hacer lo mismo sin la '-c':

[root@p90 myadmin]# htpasswd /home/httpd/html/myadmin/.htpasswd tomas

 ---------Fichero: .htpasswd------------ 
 pepe:ZsXDr0J0KGuEo
-------Fin Fichero-------------

Para poder usarlo tendremos que indicar al Apache que vamos a tener un directorio protegido. Para eso simplemente basta con añadir estas linias:

 <Directory "/home/httpd/html/myadmin">
    AllowOverride All
</Directory>

Una vez hecho todo esto, solo necesitamo reiniciar el servidor Apache de la siguiente forma:

 [root@p90 myadmin]# cd /etc/rc.d/init.d/
[root@p90 init.d]# ./httpd restart
Shutting down http: [  OK  ]
Starting httpd: [  OK  ]