Configurar SSL para cualquier sitio web es un desafío. Los visitantes del sitio, los navegadores y los motores de búsqueda recompensan un sitio web correctamente asegurado con Secure Sockets Layer (SSL). Anteriormente, este proceso implicaba comprar, instalar y configurar un certificado SSL. Pero con Cloudflare SSL, ¡puedes completar el proceso de configuración de SSL con solo unos pocos clics!
En este artículo, aprenderás cómo configurar tu sitio con cifrado SSL a través de Cloudflare. ¡Así que trabaja para obtener conexiones SSL cifradas de extremo a extremo!
**Requisitos previos**
Para seguir este tutorial, se requieren algunos requisitos previos a continuación:
- A Cloudflare account with an existing website and domain pointed to the Cloudflare nameservers.
- – Un servidor Ubuntu Linux con NGINX instalado y configurado. Este tutorial demuestra el uso de Linux y NGINX, pero el mismo proceso general funciona para IIS o Apache.
Configurar Cloudflare Universal SSL: ¡Solo el principio!
Hay varias formas en que puedes configurar un SSL usando Cloudflare. A menudo, el método más rápido es optar por SSL Universal. ¿Por qué? Con SSL Universal, en lugar de buscar y comprar un certificado SSL, Cloudflare provee un certificado, luego todo el tráfico enviado a través de Cloudflare usará ese certificado.
Después de habilitar SSL Universal, Cloudflare presenta un certificado SSL válido tanto a los visitantes como a los motores de búsqueda. Además, Cloudflare no requiere configurar el servidor o el sitio web para usar ese certificado, ¡genial!
1. Inicia tu navegador web e inicia sesión en el panel de control de Cloudflare.
2. Navega a tu sitio desde la lista de dominios de la cuenta, como se muestra a continuación.

3. Ahora, haz clic en SSL/TLS para ver las opciones de cifrado de tu sitio.

4. Elige la opción Flexible para habilitar SSL Universal. Una vez seleccionado, el cambio surte efecto inmediatamente. ¡Tu sitio ahora está cifrado entre el navegador y Cloudflare!

Configurando el cifrado SSL de extremo a extremo completo
Aunque SSL Universal es una gran opción para comenzar a asegurar sitios, deja el tráfico entre el servidor y Cloudflare sin asegurar. Afortunadamente, hay dos modos de cifrado para cifrar el tráfico desde Cloudflare hacia el servidor, Full (Completo) y Full (estricto) cada uno con principalmente diferentes requisitos de instalación de certificados.
- Completo: Requiere un certificado en el servidor, pero este puede ser un certificado autofirmado.
- Completo (estricto) – El certificado instalado en el lado del servidor debe ser un certificado válido.
Vamos a repasar la diferencia entre estas cifrados y cómo configurarlos.
Configuración de la encriptación completa SSL/TLS con un certificado autofirmado.
A diferencia del SSL Universal, la encriptación completa SSL/TLS requiere que su servidor web sirva correctamente un certificado SSL para encriptar el tráfico desde el servidor hacia Cloudflare. Hay muchas formas de lograr esto, pero este tutorial muestra los pasos en un servidor Linux con NGINX.
Generación de un certificado autofirmado.
Para encriptar la conexión entre Cloudflare y su servidor de origen, necesita un certificado SSL. Dado que el modo de encriptación completa SSL/TLS no requiere que el certificado sea completamente confiable, puede usar un certificado autofirmado para ponerlo en marcha rápidamente.
1. Secure Shell (SSH) en su servidor web Linux.
2. Cambie (cd
) al directorio SSL estándar de Ubuntu (/etc/ssl
) ejecutando el siguiente comando. cd /etc/ssl

/etc/ssl
directory3. Ahora, genere tanto la clave pública como la privada para su sitio con el comando openssl
. Para hacerlo, ejecute el siguiente comando openssl
.
Este comando realiza algunas cosas:
- Solicita (
req
) un certificado X.509 proporcionado por el parámetro-x509
. - Cuando es referenciado por NGINX, permite a NGINX leer el certificado al iniciar usando el parámetro
-nodes
. - Especifica la cantidad de
días
que el certificado es válido. - Crea una nueva clave pública y privada con
-newkey
mediante cifrado RSA de 2048 bits (rsa:2048
). - Guarda la clave privada en
/etc/ssl/private/nginx-selfsigned.key
con el parámetro-keyout
. - Guarda la clave pública en
/etc/ssl/certs/nginx-selfsigned.crt
utilizando el parámetro-out
.
Si
openssl
devuelve un error benigno deNo se puede cargar /root/.rnd en RNG
, deberás comentar la línea#RANDFILE = $ENV::HOME/.rnd
en/etc/ssl/openssl.cnf
. Todas las versiones modernas deopenssl
recurren al uso del dispositivo/dev/urandom
del sistema para datos de entropía aleatoria y no requieren un archivo específico para la inicialización.
4. Después de ejecutar el comando con éxito, openssl te pedirá información. A continuación, encontrarás todos los valores proporcionados para este tutorial.
- Nombre del país:
US
- Nombre del estado o provincia:
Illinois
- Nombre de la localidad:
Bloomington
- Nombre de la organización:
Test Company, LLC
- Nombre de la unidad organizativa: <en blanco>
- Nombre común:
test.adamlistek.me
- Dirección de correo electrónico:
[email protected]

5. Por último, verifique que el certificado exista utilizando el comando test
. Si el comando test
devuelve (echo $?
) 0
, entonces el archivo existe como se espera. Puede ver en la siguiente captura de pantalla que cada comando devolvió un valor de 0.

Configuración de NGINX
Ahora que el certificado ha sido generado y almacenado en las ubicaciones clave /etc/ssl/certs
y /etc/ssl/private
, NGINX debe configurarse para aplicar el certificado y servir el contenido del sitio.
Las configuraciones del sitio de NGINX se definen en bloques server
que típicamente se encuentran en archivos de host virtuales. En el ejemplo a continuación, la configuración básica del sitio se almacena en el archivo test.adamlistek.me.conf
e incluida en el archivo principal nginx.conf
.
1. En primer lugar, cree un nuevo archivo de host virtual con el nombre que desee, pero para este ejemplo, nómbrelo test.adamlistek.me.conf
bajo el directorio /etc/nginx/vhosts.d
. Luego copie el contenido a continuación al archivo de host virtual y guárdelo.
Sustituya el nombre de dominio
test.adamlistek.me
con el suyo propio, ya que esto es solo para fines de demostración. Y si el directorio/etc/nginx/vhosts.d
no existe, cree el directorio ejecutandomkdir /etc/nginx/vhosts.d
.
2. Verifique que su archivo de configuración principal de NGINX, /etc/nginx/nginx.conf
, contenga la línea include
necesaria dentro del bloque http
, ubicado al final del bloque.
3. Reinicie NGINX con el siguiente comando si está en systemd, que es un administrador de sistemas y servicios moderno para Linux.
4. Vuelva a Cloudflare, verifique que el certificado autofirmado esté funcionando. Para hacerlo, desactive el “orange-cloud” para el registro DNS bajo Estado del proxy, como se muestra a continuación. Deshabilitar la opción “orange-cloud” omite Cloudflare y sirve las solicitudes directamente desde el servidor web.

5. Asegúrate de que el sitio esté devolviendo el certificado autofirmado recién creado navegando al sitio web en tu navegador web. Al hacerlo, se mostrará una página de advertencia, como se muestra a continuación.

6. Finalmente, habilita el cifrado completo TLS/SSL en Cloudflare. Para hacerlo, vuelve a habilitar el estado de Proxy de Cloudflare “nube naranja” en el registro DNS que anteriormente deshabilitaste. Luego ve a la pestaña SSL/TLS y haz clic en el botón de radio Completo que se muestra a continuación.

Generación de certificados de origen para cifrado SSL/TLS completo (estricto)
El modo de cifrado completo no garantiza que el certificado presentado por el servidor web tenga una cadena de certificados válida. Por lo tanto, en lugar de eso, opta por un cifrado no estricto, y Cloudflare aceptará cualquier certificado presentado por el servidor.
Cloudflare ofrece la capacidad de generar un certificado TLS gratuito para asegurar la conexión del servidor de origen. Pero hay dos inconvenientes al usar un certificado de origen proporcionado por Cloudflare. Uno es que necesitas generar e instalar el certificado manualmente. El segundo es que el certificado parece un certificado autofirmado que ningún navegador confiaría aparte de Cloudflare.
Es posible automatizar la generación de certificados utilizando el punto de conexión API de Creación de Certificado CA de Origen, pero eso está fuera del alcance de este tutorial.
1. Navega al servidor de origen yendo a la pestaña SSL/TLS -> Servidor Original, como se muestra a continuación, y haz clic en el botón Crear Certificado.

2. Como puedes ver a continuación, las opciones predeterminadas ya están configuradas para generar un certificado comodín para el dominio con 15 años de validez. ¡Genial! Así que deja las opciones predeterminadas y genera el certificado haciendo clic en el botón Crear en la esquina inferior derecha de la página.
A wildcard certificate, shown as
*.domain.com
, means that any subdomain will also be covered by this certificate including www.

3. Añade el certificado recién creado a tu sistema Linux guardando primero las claves privadas y públicas con el editor de texto GNU nano. Dado que hay dos claves para guardar, deberás guardar los archivos de clave uno por uno.
Asegúrate de guardar la Clave Privada, ya que solo está disponible en el momento en que generaste un Certificado Original. Si pierdes esta clave accidentalmente, revoca el certificado y emite uno nuevo.
Abre una terminal, luego crea y abre el archivo de clave pública (nginx-test.adamlistek.me.crt
) en nano ejecutando el primer comando a continuación.
Después, vuelve a Cloudflare y copia la clave del Certificado de Origen (clave pública) haciendo clic en la opción Haz clic para copiar, como se muestra a continuación. Luego pega (Ctrl+U) la clave pública que copiaste en el archivo de clave pública abierto en nano. Guarda los cambios (Ctrl+O) y sal (Ctrl+X) de nano.
Después de guardar el archivo de clave pública, repite el mismo proceso desde la creación del archivo de clave, copiando la clave de Cloudfare y guardándola en el archivo de clave. Pero esta vez estás creando el archivo de clave privada (nginx-test.adamlistek.me.key
).

4. Ahora que has creado las claves pública y privada, apunta NGINX a la ubicación de los certificados. Hazlo modificando el archivo de configuración test.adamlistek.me.conf
con las siguientes líneas, modificadas para que se ajusten a tu dominio.
5. Para aplicar los nuevos certificados, reinicia NGINX con el siguiente comando.
6. Ahora regresa a la pestaña SSL/TLS en Cloudflare, actualiza el modo de encriptación SSL/TLS haciendo clic en Completo (estricto), tal como se muestra a continuación.

Habilitando el cifrado SSL/TLS completo (estricto) con LetsEncrypt
El mayor inconveniente al utilizar un certificado de origen de Cloudflare es que solo es confiable para Cloudflare. Supongamos que necesitas un certificado totalmente confiable para el navegador, ya sea como respaldo o para un mayor control. En ese caso, LetsEncrypt ofrece la capacidad de generar un certificado adecuado.
Aunque puedes utilizar cualquier certificado válido, LetsEncrypt es una opción común para generar un certificado válido. Hay múltiples clientes de LetsEncrypt disponibles, pero este tutorial demuestra el cliente acme.sh.
Dado que ya estás en Cloudflare, uno de los mejores métodos para la provisión DNS con LetsEncrypt es a través de la opción DNS.
1. Primero, abre tu terminal e instala acme.sh mediante el comando curl
.

2. A continuación, crea o modifica el archivo account.conf
ubicado en el directorio de instalación para agregar las claves API guardadas de Cloudflare. Estas claves se pueden encontrar en la sección Perfil -> Tokens de API del panel de control de Cloudflare.
Aunque puedes crear un token específico con permisos limitados, para los propósitos de este tutorial, aplica en su lugar la Clave de API Global, como se muestra a continuación.
3. Genera el certificado mediante el siguiente comando. Observa que el comando a continuación indica al cliente acme.sh
que utilice Cloudflare (dns_cf
) para verificar (--dns
) la propiedad del certificado. Luego establece el tiempo de espera (--dnsslep
) en 20 segundos antes de emitir (--issue
) el certificado para (-d
) el dominio (test.adamlistek.me
).
Cuando el comando se complete, a continuación, verás las rutas donde puedes encontrar tu certificado, la clave del certificado, el certificado de la CA intermedia y los certificados de la cadena completa.

4. Como antes, modifica la configuración del sitio NGINX para cambiar la ubicación del ssl_certificate
y ssl_certificate_key
. Asegúrate de reemplazar /home/user
con la ubicación de tu instalación de acme.sh.
5. Aplica la nueva configuración reiniciando NGINX con el siguiente comando.
6. Por último, actualiza el modo de encriptación SSL/TLS de Cloudflare yendo a la pestaña SSL/TLS, luego haz clic en Completo (estricto).

Conclusión
A lo largo de este tutorial, has aprendido cómo asegurar tu sitio con las diversas opciones de SSL/TLS proporcionadas por Cloudflare. ¡Agregar LetsEncrypt a la configuración SSL de tu Cloudflare también añade una opción de certificado de origen flexible y gestionado por el usuario!
Con el conocimiento de varias opciones para asegurar la conexión con el visitante del sitio, ¿trabajarás para lograr una conexión totalmente segura a tu servidor con SSL de Cloudflare?