En el entorno de producción, existe incluso una forma gratuita de obtener un certificado SSL a través de Let's Encrypt. Sin embargo, en un entorno local, donde trabaja para probar cosas, no necesitas un certificado SSL / TLS firmado y válido públicamente para acceder a un sitio web a través de HTTPS. Es posible usar uno firmado, que puedes comprar en Internet por un precio, por supuesto, pero, ¿por qué harías eso cuando simplemente puedes usar uno autofirmado localmente sin pagar un centavo?
En este artículo, te explicaremos cómo crear fácilmente una versión segura de un sitio web local utilizando un certificado SSL autofirmado en Ubuntu.
1. Crea un certificado SSL autofirmado
Necesitarás un certificado para que tu dominio sea compatible con HTTPS. Crea el siguiente directorio en el directorio de instalación de apache con el siguiente comando:
sudo mkdir /etc/apache2/ssl
Luego, cree el certificado dentro del directorio creado anteriormente con el siguiente comando:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
Esto iniciará un mensaje solicitando información sobre el certificado, puede completarlo con datos reales o falsos, ya que solo debe usarse en un entorno local :
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]: Blabla
Locality Name (eg, city) []: Blabla
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Blabla
Organizational Unit Name (eg, section) []: Department of Blabla
Common Name (e.g. server FQDN or YOUR name) []: mycustomdomain.com
Email Address []: [email protected]
Después de terminar, tendrá un certificado autofirmado que se puede utilizar para proporcionar soporte HTTPS para un dominio en Apache. Los archivos de salida:
- /etc/apache2/ssl/apache.key
- /etc/apache2/ssl/apache.crt
Se utilizará en el tercer paso.
2. Cree una versión HTTP del host.
Primero, necesitarás tener la versión estándar de tu VirtualHost, que escucha en el puerto 80 (http: //mycustomdomain). La configuración de este vhost generalmente depende de ti, sin embargo, hay algunas cosas que debes considerar como importantes para crear VirtualHost en la versión HTTPS también. Deberás definir exactamente:
- Nombre del servidor
- ServerAlias
- Raiz del documento
Las 3 propiedades mencionadas deben ser las mismas en la versión HTTPS, así que asegúrese de que coincidan. El siguiente vhost es un ejemplo de un vhost http básico que escucha en mycustomdomain.com
:, este archivo se ubicará en /etc/apache2/sites-available/mycustomdomain.conf
:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName mycustomdomain
ServerAlias www.mycustomdomain.com
DocumentRoot /var/www/html/mycustomdomain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/mycustomdomain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
A menos que ya tenga este vhost, deberá habilitarlo con:
# Enable site
a2ensite mycustomdomain
# Restart apache
systemctl restart apache2
Esto te permitirá navegar a mycustomdomain.com en tu navegador en la versión HTTP (asumiendo que ya tienes un alias para el host en en el archivo /etc/hosts
como por ejemplo 127.0.0.2 mycustomdomain.com
).
3. Crea la versión HTTPS
Ahora, básicamente, lo que debes hacer es crear la versión HTTPS del mismo host virtual anterior con las mismas propiedades, sin embargo, agregaremos algunas configuraciones adicionales para habilitar el soporte HTTPS:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Es importante notar que las propiedades mencionadas en el paso 2:
- Nombre del servidor
- ServerAlias
- Raiz del documento
Necesita ser EL MISMO en este vhost, de lo contrario, el host no funcionará. En este caso, nuestra versión HTTPS del host se ubicará en /etc/apache2/sites-available/mycustomdomain_ssl.conf
y tendrá el siguiente contenido:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName mycustomdomain.com
ServerAlias www.mycustomdomain.com
DocumentRoot /var/www/html/mycustomdomain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
# They should target the .key and .crt file created on the first step.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<Directory /var/www/html/mycustomdomain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
</IfModule>
Luego, habilita este host virtual y reinicie Apache:
# Habilitar sitio
a2ensite mycustomdomain_ssl
# Habilitar el soporte SSL en apache
sudo a2enmod ssl
# Reiniciar apache
systemctl restart apache2
Ahora, deberías poder acceder a tu dominio utilizando el protocolo seguro https://mycustomdomain
.
Que te diviertas ❤️!
Conviertete en un programador más sociable