New Feature Alert: Cilium Hubble is now part of DigitalOcean Kubernetes—for free!
Products
Solutions
Developers
Partners
Pricing Log in Sign up
Blog Docs
Get Contact
Support Sales
Tutorials Questions Learning Paths For Businesses Product Docs Social I
CONTENTS
Requisitos previos
Paso 1: Habilitar mod_ssl
Paso 2: Crear el certificado SSL
Paso 3: Configurar Apache para usar SSL
Paso 4: Redirigir HTTP a HTTPS
Conclusión
// site
This TUTORIAL //and related technologies, as described in our privacy
uses cookies MANAGE CHOICES
policy, for purposes that may include site operation, analytics, enhanced user
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences. AGREE & PROCEED
Cómo crear un certificado SSL autofirmado para Apache en
Ubuntu 20.04
Published on August 19, 2020
Ubuntu 20.04 Apache Security Ubuntu
By Erin Glass and Brian Boucheron Español
Introducción
TLS, o “seguridad de capa de transporte”, y su predecesor SSL, son protocolos utilizados para
envolver el tráfico normal en un envoltorio protegido y cifrado. Usando esta tecnología, los
servidores pueden enviar de forma segura información a sus clientes sin que sus mensajes
sean interceptados o leídos por una parte externa.
En esta guía, le mostraremos cómo crear y usar un certificado SSL autofirmado con el servidor
web Apache en Ubuntu 20.04.
Nota: Un certificado autofirmado cifrará la comunicación entre su servidor y cualquier cliente.
This site uses cookies and related technologies, as described in our privacy
Sin embargo, dado que no está firmado por ninguna de las autoridades certificadoras de
policy, for purposes that may include site operation, analytics, enhanced user
confianza incluidas con los navegadores web y los sistemas operativos, los usuarios no pueden
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
usar el certificado para validar la identidad de su servidor de forma automática. Como resultado,
sus usuarios verán un error de seguridad cuando visiten su sitio.
Debido a esta limitación, los certificados autofirmados no son apropiados para un entorno de
producción que sirve al público. Normalmente, se utilizan para probar o para asegurar servicios
no críticos utilizados por un solo usuario o un pequeño grupo de usuarios que pueden confiar en
la validez del certificado a través de canales de comunicación alternativos.
Para obtener una solución de certificado más preparado para la producción, consulte Let’s
Encrypt, una autoridad de certificado gratuita. Puede aprender a descargar y configurar un
certificado Let’s Encrypt en nuestro tutorial Cómo proteger Apache con Let’s Encrypt en Ubuntu
20.04.
Requisitos previos
Antes de iniciar este tutorial, necesitará lo siguiente:
Acceso a un servidor Ubuntu 20.04 con un usuario no root sudo habilitado. Nuestra guía
de configuración inicial de servidor con Ubuntu 20.04 puede mostrarle cómo crear esta
cuenta.
También deberá tener Apache instalado. Puede instalar Apache usando apt . Primero,
actualice el índice de paquetes locales de modo que se refleje cualquier cambio anterior:
$ sudo apt update Copy
A continuación, instale el paquete apache2 :
$ sudo apt install apache2 Copy
Y, por último, si tiene un firewall ufw configurado, abra los puertos http y https :
$ sudo ufw allow "Apache Full" Copy
Una vez que haya completado estos pasos, asegúrese de haber iniciado sesión como usuario
no root y continúe con el tutoria.
This site uses cookies and related technologies, as described in our privacy
policy,
Paso for purposes that may include
1: Habilitar site operation, analytics, enhanced user
mod_ssl
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
Antes de poder utilizar cualquiera de los certificados SSL,primero se debe habilitar mod_ssl , un
módulo de Apache que proporciona soporte para el cifrado SSL.
Habilite mod_ssl con el comando a2enmod :
$ sudo a2enmod ssl Copy
Reinicie Apache para activar el módulo:
$ sudo systemctl restart apache2 Copy
Ahora está habilitado el módulo mod_ssl y listo para su uso.
Paso 2: Crear el certificado SSL
Ahora que Apache está listo para usar cifrado, podemos continuar y generar un nuevo
certificado SSL. El certificado almacenará información básica sobre su sitio, y estará
acompañado de un archivo de claves que permite al servidor manejar de forma segura datos
cifrados.
Podemos crear la clave SSL y los archivos de certificado con el comando openssl :
Copy
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache
Tras introducir el comando, aparecerá un mensaje donde puede introducir información sobre su
sitio web. Antes de abordar eso, observemos lo que sucede en el comando que emitimos:
openssl : es la herramienta de línea de comandos para crear y administrar certificados,
claves y otros archivos de OpenSSL.
req -x509 : especifica que deseamos usar la administración de la solicitud de firma de
certificados (CSR) X.509. El “X.509” es un estándar de infraestructura de claves públicas
al que se adhieren SSL y TLS para la administración de claves y certificados.
-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 introducirla tras cada reinicio.
This site uses cookies and related technologies, as described in our privacy
-days 365 : esta opción establece el tiempo durante el cual el certificado se considerará
policy, for purposes that may include site operation, analytics, enhanced user
vá[Link]
este caso, lo configuramos
preferences. por un año. Muchos navegadores modernos
experience, or advertising. You may choose to consent to our use of these
rechazarán cualquier certificado válido por más de un año.
technologies, your own
-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.
-out : indica a OpenSSL dónde colocar el certificado que creamos.
Complete las solicitudes de forma adecuada. La línea más importante es la que solicita Common
Name . Debe introducir el nombre de host que utilizará para acceder al servidor o a la IP pública
del servidor. Es importante que este campo coincida con lo que pondrá en la barra de
direcciones de su navegador para acceder al sitio, ya que un error de concordancia causará
más errores de seguridad.
La lista completa de las instrucciones tendrá un aspecto similar a este:
Country Name (2 letter code) [XX]: US
State or Province Name (full name) []: Example
Locality Name (eg, city) [Default City]: Example
Organization Name (eg, company) [Default Company Ltd]: Example Inc
Organizational Unit Name (eg, section) []: Example Dept
Common Name (eg, your name or your server's hostname) []: your_domain_or_ip
Email Address []: webmaster@[Link]
Los dos archivos que creó se ubicarán en los subdirectorios correspondientes en /etc/ssl .
A continuación, actualizaremos nuestra configuración Apache para usar el nuevo certificado y
la clave.
Paso 3: Configurar Apache para usar SSL
Ahora que tenemos nuestro certificado y la clave autofirmados disponibles, debemos actualizar
nuestra configuración Apache para usarlos. En Ubuntu, puede colocar nuevos archivos de
configuración de Apache (deben terminar en .conf ) en /etc/apache2/sites-available/ y se
cargarán la próxima vez que se vuelva a cargar o reiniciar el proceso Apache.
Para este tutorial, crearemos un nuevo archivo de configuración mínimo. (Si ya tiene un Apache
<Virtualhost> configurado y solo necesita agregarle SSL, probablemente deberá copiar las
líneas
This site de configuración
uses que comienzan
cookies and related conas described
technologies, SSL , y cambiar el puerto VirtualHost de 80 a 443 .
in our privacy
Nos encargaremos
policy, for purposes thatdel
maypuerto
include80 enoperation,
site el siguiente paso).enhanced user
analytics,
experience, or advertising. You may choose to consent to our use of these
Abra un nuevo
technologies, archivoyourenown
or manage el directorio /etc/apache2/sites-available:
preferences.
$ sudo nano /etc/apache2/sites-available/ your_domain_or_ip .conf Copy
Pegue la siguiente configuración mínima VirtualHost:
/etc/apache2/sites-available/your_domain_or_ip.conf
<VirtualHost *:443>
ServerName your_domain_or_ip
DocumentRoot /var/www/ your_domain_or_ip
SSLEngine on
SSLCertificateFile /etc/ssl/certs/[Link]
SSLCertificateKeyFile /etc/ssl/private/[Link]
</VirtualHost>
Asegúrese de actualizar la línea ServerName a la que desea que se dirija su servidor. Puede ser
un nombre de host, un nombre de dominio completo o una dirección IP. Asegúrese de que lo
que elija coincida con Common Name que eligió al crear el certificado.
Las líneas restantes especifican un directorio DocumentRoot para que sirva los archivos, y las
opciones SSL necesarias para apuntar Apache a nuestro certificado y clave recién creados.
Ahora vamos a crear nuestro DocumentRoot y ponemos un archivo HTML en él solo para fines de
prueba:
$ sudo mkdir /var/www/ your_domain_or_ip Copy
Abra un nuevo archivo [Link] con su editor de texto:
$ sudo nano /var/www/ your_domain_or_ip /[Link] Copy
Pegue lo siguiente en el archivo en blanco:
/var/www/your_domain_or_ip/[Link]
This site uses cookies and related technologies, as described in our privacy
policy, for purposes
<h1>it that may include site operation, analytics, enhanced user
worked!</h1>
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
Esto no es un archivo HTML completo, por supuesto, pero los navegadores son indulgentes y
bastará para verificar nuestra configuración.
Guarde y cierre el archivo. A continuación, debemos habilitar el archivo de configuración con la
herramienta a2ensite :
$ sudo a2ensite your_domain_or_ip .conf Copy
A continuación, realizaremos una prueba para ver que no haya errores de configuración:
$ sudo apache2ctl configtest Copy
Si la operación se completa de forma correcta, obtendrá un resultado similar a este:
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, us
Syntax OK
La primera línea es 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/[Link] . Esto es opcional, ya
que el mensaje no causará problemas.
Si el resultado contiene Syntax OK , en su archivo de configuración no habrá errores de sintaxis.
Podemos volver a cargar Apache de forma segura para implementar nuestros cambios:
$ sudo systemctl reload apache2 Copy
Ahora cargue su sitio en un navegador, asegurándose de usar https:// al principio.
Debería ver un error. Esto es normal para un certificado autofirmado. El navegador le advierte
que no puede verificar la identidad del servidor, porque nuestro certificado no está firmado por
ninguna de sus autoridades de certificado conocidas. Para fines de prueba y uso personal,
puede estar bien. Debería poder hacer clic en avanzada o más información y elegir continuar.
This site uses cookies and related technologies, as described in our privacy
Una vez
policy, que lo haga,
for purposes su navegador
that may cargará elanalytics,
include site operation, mensajeenhanced user (¡funcionó!).
it worked!
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
Nota: si su navegador no se conecta en absoluto al servidor, asegúrese de que su conexión no
está siendo bloqueada por un firewall. Si utiliza ufw , los siguientes comandos abrirán los puertos
80 y 443 :
$ sudo ufw allow "Apache Full" Copy
A continuación, añadiremos otra sección VirtualHost a nuestra configuración para que sirva las
solicitudes HTTP sencillas y las redirija a HTTPS.
Paso 4: Redirigir HTTP a HTTPS
Actualmente, nuestra configuración solo responderá a las solicitudes HTTPS en el puerto 443 .
Es una buena práctica responder también en el puerto 80 , incluso si quiere forzar que se cifre
todo el tráfico. Configuraremos un VirtualHost para que responda a estas solicitudes no
cifradas y las redireccione a HTTPS.
Abra el mismo archivo de configuración Apache que iniciamos en pasos anteriores:
$ sudo nano /etc/apache2/sites-available/ your_domain_or_ip .conf Copy
En la parte inferior, cree otro bloque VirtualHost para que coincida con las solicitudes en el
puerto 80 . Utilice la directiva ServerName para que coincida de nuevo con su nombre de
dominio o su dirección IP. A continuación, utilice Redirect para que coincida con cualquier
solicitud y las envíe al VirtualHost SSL. Asegúrese de incluir la barra de arrastre:
/etc/apache2/sites-available/your_domain_or_ip.conf
<VirtualHost *:80>
ServerName your_domain_or_ip
Redirect / https:// your_domain_or_ip /
</VirtualHost>
Guarde y cierre este archivo cuando haya terminado, y vuelva a probar la sintaxis de
configuración y a cargar Apache:
This site uses cookies and related technologies, as described in our privacy
policy, for purposes that may include site operation, analytics, enhanced user
experience,
$ sudoorapachectl
advertising. You may choose to consent to our use of these
configtest Copy
technologies, or manage your
$ sudo systemctl ownapache2
reload preferences.
Puede probar la nueva funcionalidad de redireccionamiento visitando su sitio con http://
simple delante de la dirección. Debería redireccionarse a https:// automáticamente.
Conclusión
Ahora ha configurado Apache para que sirva las solicitudes cifradas usando un certificado SSL
autofirmado, y para redireccionar las solicitudes HTTP no cifradas a HTTPS.
Si planea usar SSL para un sitio web público, debería pensar en comprar un nombre de dominio
y usar una autoridad de certificado ampliamente compatible, como Let’s Encrypt.
Para obtener más información sobre el uso de Let’s Encrypt con Apache, consulte nuestro
tutorial Cómo proteger Apache con Let’s Encrypt en Ubuntu 20.04.
Thanks for learning with the DigitalOcean Community. Check out our offerings for
compute, storage, networking, and managed databases.
Learn more about us ->
About the authors
Erin Glass Author
Senior Manager, DevEd
Open source advocate and lover of education, culture, and community.
Brian Boucheron Author
This site uses cookies and related technologies, as described in our privacy
policy, for purposes that may include site operation, analytics, enhanced user
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
Still looking for an answer? Ask a question
Search for more help
Was this helpful? Yes No
Comments
Leave a comment
Leave a comment...
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation &
marketplace offerings and insert the link!
Sign In or Sign Up to Comment
This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 4.0 International
License.
This site uses cookies and related technologies, as described in our privacy
policy, for purposes that may include site operation, analytics, enhanced user
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
Try DigitalOcean for free
Click below to sign up and get $200 of credit to try our products over 60 days!
Sign up
Popular Topics
Ubuntu
Linux Basics
JavaScript
Python
MySQL
Docker
Kubernetes
All tutorials ->
Talk to an expert ->
This site uses cookies and related technologies, as described in our privacy
policy, for purposes that may include site operation, analytics, enhanced user
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
Get our biweekly Hollie's Hub for Good
newsletter Working on improving health and
Sign up for Infrastructure as a education, reducing inequality, and
Newsletter. spurring economic growth? We'd like
to help.
Sign up Learn more
Become a contributor
Get paid to write technical tutorials
and select a tech-focused charity to
receive a matching donation.
Learn more
Featured on Community
Kubernetes Course Learn Python 3 Machine Learning in Python
Getting started with Go Intro to Kubernetes
This site uses cookies and related technologies, as described in our privacy
policy, for purposes that may include site operation, analytics, enhanced user
experience, or advertising. You may choose to consent to our use of these
DigitalOcean Products
technologies, or manage your own preferences.
Cloudways Virtual Machines Managed Databases Managed Kubernetes
Block Storage Object Storage Marketplace VPC Load Balancers
Welcome to the developer
cloud
DigitalOcean makes it simple to launch in the
cloud and scale up as you grow — whether
you're running one virtual machine or ten
thousand.
Learn more
Get started for free
Get started
Sign up and get $200 in credit for your This promotional offer applies to new accounts
first 60 days with DigitalOcean. only.
This site uses cookies and related technologies, as described in our privacy
Company Products
policy, for purposes that may include site operation, analytics, enhanced user Community
experience, or advertising. You may choose to consent to our use of these
About Products Overview
technologies, or manage your own preferences. Tutorials
Leadership Droplets Q&A
Blog Kubernetes CSS-Tricks
Careers Paperspace Write for DOnations
Customers App Platform Currents Research
Partners Functions Hatch Startup Program
Referral Program Cloudways Shop Swag
Affiliate Program Managed Databases Research Program
Press Spaces Open Source
Legal Marketplace Code of Conduct
Privacy Policy Load Balancers Newsletter Signup
Security Block Storage Meetups
Investor Relations Tools & Integrations
DO Impact API
Nonprofits Pricing
Documentation
Release Notes
Uptime
Solutions Contact
Website Hosting Support
VPS Hosting Sales
Web & Mobile Apps Report Abuse
Game Development System Status
Streaming Share your ideas
VPN
SaaS Platforms
Cloud Hosting for Blockchain
This site uses cookies and related technologies, as described in our privacy
StartupforResources
policy, purposes that may include site operation, analytics, enhanced user
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.
© 2024 Sitemap. Cookie
DigitalOcean, LLC. Preferences
This site uses cookies and related technologies, as described in our privacy
policy, for purposes that may include site operation, analytics, enhanced user
experience, or advertising. You may choose to consent to our use of these
technologies, or manage your own preferences.