Cómo Crear Un Certificado SSL Autofirmado para Apache en Ubuntu 18.04 - DigitalOcean
Cómo Crear Un Certificado SSL Autofirmado para Apache en Ubuntu 18.04 - DigitalOcean
Cómo Crear Un Certificado SSL Autofirmado para Apache en Ubuntu 18.04 - DigitalOcean
04 | DigitalOcean
TUTORIAL
By Brian Boucheron
Español
Posted January 9, 2020 11.5k
Introducción
La TLS, o seguridad en la capa de transporte, y la SSL, plataforma antecesora cuya sigla
significa “capa de sockets seguros”, son protocolos web que se utilizan para envolver el
tráfico normal con una cobertura protegida cifrada.
Mediante esta tecnología, los servidores pueden enviar tráfico de forma segura entre
servidores y clientes sin la posibilidad de que los mensajes sean interceptados por
terceros. El sistema de certificado también ayuda a los usuarios a verificar la identidad de
los sitios con los que establecen conexión.
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 1/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Requisitos previos
Antes de comenzar, deberá contar con un usuario no root configurado con privilegios
sudo . Puede aprender a configurar una cuenta de usuario de este tipo siguiendo nuestra
Configuración inicial de servidores con Ubuntu 18.04.
También deberá tener instalado el servidor web de Apache. Si desea instalar una pila
LAMP completa (Linux, Apache, MySQL y PHP) en su servidor, puede seguir nuestra guía
de configuración de LAMP en Ubuntu 18.04. Si solo quiere el servidor web de Apache,
omita los pasos correspondientes a PHP y MySQL.
Una vez que cumpla con los requisitos previos, siga los pasos que se muestran a
continuación.
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-
través de él. Queremos crear un nuevo certificado X.509, por lo que usaremos este
subcomando.
-x509: modifica aún más el subcomando anterior al indicar a la utilidad que deseamos
crear un certificado autofirmado en lugar de generar una solicitud de firma de
certificados, como normalmente sucede.
-nodes: indica a OpenSSL que omita la opción para proteger nuestro certificado con una
frase de contraseña. Necesitamos que Apache pueda leer el archivo, sin intervención del
usuario, cuando se inicie el servidor. Una frase de contraseña evitaría que esto suceda
porque tendríamos que ingresarla tras cada reinicio.
-days 365: esta opción establece el tiempo durante el cual el certificado se considerará
válido. En este caso, lo configuramos por un año.
-newkey rsa:2048: especifica que deseamos generar un nuevo certificado y una nueva
clave al mismo tiempo. No creamos la clave que se requiere para firmar el certificado en
un paso anterior, por lo que debemos crearla junto con el certificado. La parte rsa:2048
le indica que cree una clave RSA de 2048 bits de extensión.
-keyout: esta línea indica a OpenSSL dónde colocar el archivo de clave privada
generado que estamos creando.
Output
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some-State]: New York
Locality Name (eg, city) []: New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Bouncy Castles, Inc.
Organizational Unit Name (eg, section) []: Ministry of Water Slides
Common Name (e.g. server FQDN or YOUR name) []: server_IP_address
Email Address []: admin@your_domain.com
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 3/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
2. Modificaremos el archivo de host virtual de Apache SSL incluido para apuntar a los
certificados SSL que generamos.
Para configurar Apache SSL de forma segura, usaremos las recomendaciones que Remy
van Elst da en el sitio de Cipherli.st. Este sitio está diseñado para proporcionar
configuraciones de cifrado fáciles de utilizar para software popular.
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 4/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Las configuraciones propuestas en el sitio del vínculo anterior ofrecen una seguridad confiable.
A veces, esto se hace a costa de una mayor compatibilidad con el cliente. Si necesita ofrecer
compatibilidad con clientes anteriores, existe una lista alternativa a la que se puede acceder
haciendo clic en el enlace de la página con la etiqueta “Sí, quiero un conjunto de cifrado que
funcione con el software anterior o heredado”. Esa lista puede sustituirse por los elementos
copiados a continuación.
La elección de la configuración que utilizará dependerá en gran medida de aquello para lo que
deba ofrecer compatibilidad. Ambas opciones proporcionarán una gran seguridad.
La precarga del HSTS proporciona una mayor seguridad, pero puede tener
consecuencias importantes si se habilita accidentalmente o de forma incorrecta. En esta
guía, no habilitaremos las configuraciones, pero puede aplicar una modificación si está
seguro de comprender las implicaciones.
Antes de tomar una decisión, tómese un momento para informarse sobre seguridad
estricta de transporte de HTTP, o HSTS, y en particular sobre la funcionalidad “preload”.
/etc/apache2/conf-available/ssl-params.conf
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preloa
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 5/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Antes de continuar, realizaremos una copia de seguridad del archivo original de host
virtual de SSL:
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 6/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Haremos algunos ajustes menores en el archivo. Configuraremos las cosas normales que
querríamos ajustar en un archivo de host virtual (dirección de correo electrónico de
ServerAdmin, ServerName, etc.), y ajustaremos las directivas SSL para que apunten a
nuestros archivos de certificados y claves.
Tras realizar estos cambios, su bloque de servidor debe tener un aspecto similar a este:
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName server_domain_or_IP
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 7/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Para ajustar el archivo de host virtual no cifrado de modo que se redireccione todo el
tráfico y cuente con cifrado SSL, podemos abrir el archivo
/etc/apache2/sites-available/000-default.conf :
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
. . .
</VirtualHost>
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 8/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Si antes sólo permitía tráfico HTTP regular, su resultado puede tener este aspecto:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Output
Status: active
To Action From
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 9/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
A continuación, podemos habilitar nuestro host virtual SSL con el comando a2ensite :
También debemos habilitar nuestro archivo ssl-params.conf , para leer los valores que
configuramos:
En este punto, nuestro sitio y los módulos necesarios quedarán habilitados. Deberíamos
comprobar que no haya errores de sintaxis en nuestros archivos. Podemos hacerlo
escribiendo lo siguiente:
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, us
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 10/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Syntax OK
La primera línea es solo un mensaje que le indica que la directiva ServerName no está
configurada a nivel global. Si quiere deshacerse de ese mensaje, puede establecer
ServerName en el nombre de dominio o la dirección IP de su servidor en
/etc/apache2/apache2.conf . Esto es opcional, ya que el mensaje no causará problemas.
https:// server_domain_or_IP
Debido a que el certificado que creamos no está firmado por una de las autoridades de
certificados de confianza de su navegador, es probable que vea una advertencia de
aspecto intimidante como la que aparece a continuación:
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 11/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Esto está previsto y es normal. Sólo nos interesa el aspecto de cifrado de nuestro
certificado. No nos importa la validación de terceros de la autenticidad de nuestro host.
Haga clic en “ADVANCED” y luego en el enlace proporcionado para acceder a su host de
cualquier manera:
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 12/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
http:// server_domain_or_IP
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 13/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
. . .
</VirtualHost>
Cuando esté listo, reinicie Apache para que el redireccionamiento sea permanente:
Conclusión
De esta manera, habrá configurado su servidor de Apache para aplicar un cifrado seguro
a las conexiones de los clientes. Esto le permitirá proporcionar las solicitudes de forma
segura y evitará que individuos externos lean su tráfico.
By Brian Boucheron
Posted January 9, 2020 11.5k
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 14/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
Report an issue
Related
TUTORIAL TUTORIAL
TUTORIAL TUTORIAL
1 Comment
Leave a comment...
Sign In to Comment
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 16/19
28/5/2020 Cómo crear un certificado SSL autofirmado para Apache en Ubuntu 18.04 | DigitalOcean
BECOME A CONTRIBUTOR
DigitalOcean Products Droplets Managed Databases Managed Kubernetes Spaces Object Storage
Marketplace
Learn More
Company Products
Community Contact
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04-es 19/19