TLS (Secure Socket Layer) y SSL (Secure Socket Layer) se utilizan para proteger la transmisión de datos entre el cliente y el servidor. Estos certificados ofrecen un nivel adicional de seguridad para que los datos enviados previamente puedan ser analizados por terceros en forma de texto claro. Este tutorial le guía sobre cómo crear y activar certificados TLS / SSL en el servidor Apache en Ubuntu 18.04.

Si lo genera usted mismo, es un firmante y el navegador no verifica la identidad. Además, se advierte al usuario sobre la validez del certificado. Es posible omitir el certificado. Los sitios web públicos deben utilizar un certificado con una autoridad de certificación confiable.

Requerimientos:

  • Servidor Apache configurado e instalado

Paso 1: genera el certificado

  1. Crea un directorio para guardar el archivo
        $ mkdir ~/certificates
        $ cd ~/certificates

2. Genere una CSR y una clave privada con el siguiente comando

$ openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes

Una vez que el comando se ha ejecutado con éxito, se solicita la información sobre la solicitud de certificado. Complételo con la información adecuada.

Nombre del país (código de 2 letras) [AU]: NOSOTROS
Nombre del estado o provincia (nombre completo) [Some-State]: FL
Nombre del lugar (por ejemplo, ciudad) []: Miami
Nombre de la organización (por ejemplo, empresa) [My Company]: Mi empresa
Nombre de la unidad organizativa (p. Ej., Sección) []::

El nombre común es el nombre de su dominio o la dirección IP del servidor.

Nombre común (por ejemplo, FQDN del servidor o SU nombre) []: 192.168.2.3
Dirección de correo electrónico []: dummy@example.com

3. Ahora mueva el certificado a la misma carpeta que creó con los siguientes comandos

$ mkdir /etc/apache2/ssl
$ mv ~/certificates/* /etc/apache2/ssl/.

4. Una vez que hayamos creado el certificado, el certificado ahora funcionará con Apache.

Paso 2: configurar el firewall

  1. Asegúrese de que el puerto TCP 443 esté abierto. SSL usa el puerto 443 en lugar del puerto 80. Usaremos un cortafuegos sin complicaciones (UFW).
  2. Utilice el siguiente comando para habilitar UFW
$ sudo ufw enable
  1. Permita la configuración de Apache predefinida para el firewall con el siguiente comando
$ sudo ufw allow 'Apache Full'
  1. Puede consultar la lista de reglas actuales con el siguiente comando.
$ sudo ufw status

La configuración debería verse así:

Para comerciar desde
– —— —-
Apache Full PERMITIR en cualquier lugar
OpenSSH PERMITIR en cualquier lugar
Apache Full (v6) PERMITIR en cualquier lugar (v6)
OpenSSH (v6) PERMITIR en cualquier lugar (v6)

  1. Para permitir conexiones futuras, permita OpenSSH
$ sudo ufw allow 'OpenSSH'

Paso 3: configurar el host virtual Apache

  1. Utilice el siguiente comando para navegar al directorio de configuración predeterminado del sitio de Apache
$ sudo nano /etc/apache2/sites-available/default-ssl.conf


Este archivo de configuración le dice al servidor dónde se encuentra el certificado SSL. Debe tener un aspecto como este:


ServerAdmin webmaster @ localhost

DocumentRoot / var / www / html

ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log combinado

SSLEngine encendido

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

SSLOptions + StdEnvVars

SSLOptions + StdEnvVars



1. Edite lo siguiente: ServerAdmin webmaster @ localhost de la siguiente manera:

ServerAdmin email@example.net

  1. Agregue esto justo debajo de la línea ServerAdmin:

Nombre del servidor ADD_YOUR_IP_OR_DOMAIN_NAME_HERE

  1. Ahora edite estas líneas con la ubicación de nuestro certificado:

SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key


Nuestro archivo debería verse así:


ServerAdmin email@example.net
Nombre del servidor 203.0.113.122

DocumentRoot / var / www / html

ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log combinado

SSLEngine encendido

SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

SSLOptions + StdEnvVars

SSLOptions + StdEnvVars



  1. Guarde el archivo y ciérrelo.

Paso 4: Habilite el módulo SSL de Apache

  1. Habilite el módulo SSL con el siguiente comando
$ sudo a2enmod ssl
  1. Ahora active el sitio en el que acaba de trabajar:
$ sudo a2ensite default-ssl.conf
  1. Reinicie Apache:
$ sudo service apache2 restart
  1. El sitio web ahora es seguro. Acceda a él desde la siguiente dirección en el navegador

https: // SU_IP_SERVIDOR

Porque el navegador lee el certificado como no válido, como se explica en la introducción. Porque el certificado no está firmado. Siga los pasos en su navegador para continuar.