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
- 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
- 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).
- Utilice el siguiente comando para habilitar UFW
$ sudo ufw enable
- Permita la configuración de Apache predefinida para el firewall con el siguiente comando
$ sudo ufw allow 'Apache Full'
- 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)
- Para permitir conexiones futuras, permita OpenSSH
$ sudo ufw allow 'OpenSSH'
Paso 3: configurar el host virtual Apache
- 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
FilesMatch>
SSLOptions + StdEnvVars
Directory>
VirtualHost>
IfModule>
1. Edite lo siguiente: ServerAdmin webmaster @ localhost de la siguiente manera:
ServerAdmin email@example.net
- Agregue esto justo debajo de la línea ServerAdmin:
Nombre del servidor ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
- 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
FilesMatch>
SSLOptions + StdEnvVars
Directory>
VirtualHost>
IfModule>
- Guarde el archivo y ciérrelo.
Paso 4: Habilite el módulo SSL de Apache
- Habilite el módulo SSL con el siguiente comando
$ sudo a2enmod ssl
- Ahora active el sitio en el que acaba de trabajar:
$ sudo a2ensite default-ssl.conf
- Reinicie Apache:
$ sudo service apache2 restart
- 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.