Cómo instalar un certificado SSL de una Autoridad de Certificación Comercial

Introducción

Este tutorial te mostrará cómo adquirir e instalar un certificado SSL de una Autoridad de Certificación (CA) comercial y confiable. Los certificados SSL permiten a los servidores web cifrar su tráfico y también ofrecen un mecanismo para validar las identidades de los servidores a sus visitantes. Los sitios web que utilizan SSL se acceden a través del protocolo https://.

Antes de mediados de la década de 2010, muchos sitios web más pequeños no siempre utilizaban SSL o HTTPS. Desde entonces, las expectativas de seguridad han aumentado y se creó el proyecto Let’s Encrypt para proporcionar certificados SSL gratuitos y confiables a gran escala, permitiendo que casi todos utilicen HTTPS según sea necesario.

Sin embargo, hay algunas limitaciones en los certificados de Let’s Encrypt. Expiran cada 3 meses, lo que generalmente requiere que tengas un script de renovación automática en funcionamiento, y pueden ser incómodos de usar en entornos donde esto no es posible. Let’s Encrypt tampoco proporciona certificados de Validación Extendida que validen la propiedad legal de tu presencia web, ni Certificados Wildcard que coincidan automáticamente con cada subdominio posible de tu sitio web (como shop.ejemplo.com) sin que tengas que registrar cada uno manualmente.

Para la mayoría de los usuarios, estas no serán limitaciones significativas. Let’s Encrypt es una opción popular para muchos sitios web personales y comerciales. Sin embargo, si tiene requisitos específicos de software empresarial o opera una operación comercial muy grande, debería considerar comprar un certificado de una Autoridad de Certificación comercial.

Este tutorial cubre cómo seleccionar e implementar un certificado SSL de una autoridad de certificación confiable. Después de haber adquirido su certificado SSL, este tutorial cubrirá la instalación en los servidores web Nginx y Apache.

Requisitos previos

Existen varios requisitos previos para intentar obtener un certificado SSL de una Autoridad de Certificación comercial:

  • Un nombre de dominio registrado. Este tutorial utilizará example.com en todo momento. Puede comprar un nombre de dominio en Namecheap, obtener uno de forma gratuita con Freenom o utilizar el registrador de dominios de su elección.

  • Acceso a una de las direcciones de correo electrónico en el registro WHOIS de su dominio o a una dirección de correo electrónico de tipo “admin” en el propio dominio. Las autoridades de certificación que emiten certificados SSL generalmente validan el control del dominio enviando un correo electrónico de validación a una de las direcciones en el registro WHOIS del dominio, o a una dirección de correo electrónico genérica de administración en el propio dominio. Para obtener un certificado de Validación Extendida, también se requerirá proporcionar a la autoridad de certificación documentación para establecer la identidad legal del propietario del sitio web, entre otras cosas.

  • Configuración de registros DNS para su servidor. Si está utilizando DigitalOcean, consulte nuestra documentación de DNS para obtener detalles sobre cómo agregarlos.

Este tutorial proporcionará instrucciones de configuración para un servidor Ubuntu 22.04 configurado siguiendo el tutorial Configuración inicial del servidor para Ubuntu 22.04, que incluye la creación de un usuario no root habilitado para sudo y un firewall. La mayoría de las variantes modernas de Linux funcionarán de manera similar.

También deberías tener un servidor web como Nginx o Apache instalado, siguiendo el tutorial Cómo instalar Nginx en Ubuntu 22.04 o Cómo instalar el servidor web Apache en Ubuntu 22.04. Asegúrate de tener un bloque de servidor (o host virtual de Apache) configurado para tu dominio.

Paso 1: Elegir su Autoridad de Certificación

Si no estás seguro de qué Autoridad de Certificación utilizar, hay algunos factores a considerar.

Membresías en Programas de Certificados Raíz

El punto más crucial es que el CA que elijas sea miembro de los programas de certificados raíz de los sistemas operativos y navegadores web más utilizados, es decir, es un CA “confiable”, y su certificado raíz es confiado por los navegadores comunes y otro software. Si el certificado SSL de tu sitio web está firmado por un CA confiable, su identidad se considera válida por el software que confía en el CA.

La mayoría de los CAs comerciales que encontrarás serán miembros de los programas de CA raíz comunes, pero no está de más verificar antes de realizar tu compra de certificados. Por ejemplo, Apple publica su lista de certificados raíz SSL confiables.

Tipos de Certificados

Asegúrate de elegir un CA que ofrezca el tipo de certificado que necesitas. Muchos CAs ofrecen variaciones de estos tipos de certificados bajo una variedad de nombres y estructuras de precios. Aquí tienes una breve descripción de cada tipo:

  • Un Solo Dominio: Usado para un solo dominio, por ejemplo, ejemplo.com. Ten en cuenta que los subdominios adicionales, como www.ejemplo.com, no están incluidos
  • Comodín: Usado para un dominio y cualquiera de sus subdominios. Por ejemplo, un certificado comodín para *.ejemplo.com también puede ser usado para www.ejemplo.com y tienda.ejemplo.com.
  • Dominio Múltiple: Conocido como un certificado SAN o UC, estos pueden ser utilizados con múltiples dominios y subdominios que se agregan al campo de Nombre Alternativo del Sujeto. Por ejemplo, un único certificado multi-dominio podría ser utilizado con example.com, www.example.com y example.net.

Además de los tipos de certificados mencionados anteriormente, hay diferentes niveles de validación que ofrecen las Autoridades de Certificación (CAs):

  • Validación de Dominio (DV): Los certificados DV son emitidos después de que la CA valida que el solicitante posee o controla el dominio en cuestión
  • Validación de Organización (OV): Los certificados OV solo pueden ser emitidos después de que la CA emisora valida la identidad legal del solicitante
  • Validación Extendida (EV): Los certificados EV solo pueden ser emitidos después de que la CA emisora valida la identidad legal, entre otras cosas, del solicitante, de acuerdo con un estricto conjunto de pautas. El propósito de este tipo de certificado es proporcionar una garantía adicional sobre la legitimidad de la identidad de su organización a los visitantes de su sitio. Los certificados EV pueden ser de un solo dominio o de múltiples dominios, pero no comodín

Funcionalidades Adicionales

Muchas AC ofrecen una gran variedad de características “extra” para diferenciarse del resto de los vendedores de certificados SSL. Algunas de estas características pueden terminar ahorrándote dinero, por lo que es importante que evalúes tus necesidades frente a las ofertas antes de realizar una compra. Ejemplo de características a tener en cuenta incluyen reemisiones de certificado gratuitas o un certificado con precio de dominio único que funciona para www. y el nombre base del dominio, por ejemplo, www.ejemplo.com con un SAN de ejemplo.com

Paso 2 – Generando un CSR y Clave Privada

Después de tener tus prerrequisitos ordenados, y saber el tipo de certificado que necesitas, es hora de generar una solicitud de firma de certificado (CSR) y clave privada.

Si planeas usar Apache HTTP o Nginx como tu servidor web, puedes usar el comando openssl para generar tu clave privada y CSR en tu servidor web. En este tutorial, puedes mantener todos los archivos relevantes en tu directorio personal, pero siéntete libre de almacenarlos en cualquier ubicación segura en tu servidor:

Para generar una clave privada, llamada ejemplo.com.key, y un CSR, llamado ejemplo.com.csr, ejecuta este comando (reemplaza ejemplo.com con el nombre de tu dominio):

  1. openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

En este punto, se le solicitará varias líneas de información que se incluirán en su solicitud de certificado. La parte más importante es el campo Common Name, que debe coincidir con el nombre que desea utilizar en su certificado, por ejemplo, example.com, www.example.com o (para una solicitud de certificado comodín) *.example.com. Si planea obtener un certificado OV o EV, asegúrese de que todos los demás campos reflejen con precisión los detalles de su organización o empresa. Proporcionar una “contraseña de desafío” no es necesario.

Por ejemplo:

Output
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:New York Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

Esto generará un archivo .key y un archivo .csr. El archivo .key es su clave privada y debe mantenerse segura. El archivo .csr es lo que enviará a la CA para solicitar su certificado SSL.

  1. ls example.com*
Output
example.com.csr example.com.key

Necesitará copiar y pegar su CSR al enviar su solicitud de certificado a su CA. Para imprimir el contenido de su CSR, use cat:

cat example.com.csr

Ahora está listo para comprar un certificado de una CA.

Paso 3: Compra y Obtención de un Certificado

Hay muchos proveedores comerciales de certificados SSL, y puedes comparar y contrastar las opciones más apropiadas para tu propia configuración. Por ejemplo, Namecheap actúa como revendedor de certificados SSL y ha cambiado de proveedores de CA upstream en el pasado para ofrecer el mejor valor. Actualmente, ofrecen certificados de Comodo CA. Aquí tienes un ejemplo de sus ofertas hasta diciembre de 2022:

Después de hacer una selección, deberás cargar el CSR que generaste en el paso anterior. Es probable que tu proveedor de CA también tenga un paso de “Aprobación”, que enviará un correo electrónico de solicitud de validación a una dirección en el registro WHOIS de tu dominio o a una dirección de tipo administrador del dominio para el que estás obteniendo un certificado.

Después de aprobar el certificado, este se enviará por correo electrónico al administrador designado. Cópialo y guárdalo en tu servidor en la misma ubicación donde generaste tu clave privada y CSR. Nombra el certificado con el nombre de dominio y una extensión .crt, por ejemplo, ejemplo.com.crt, y nombra el certificado intermedio intermedio.crt.

El certificado está listo para ser instalado en tu servidor web, pero primero, es posible que debas realizar algunos cambios en tu firewall.

Paso 4 – Actualizar tu Firewall para Permitir HTTPS

Si tienes el firewall ufw habilitado como se recomienda en nuestra guía de configuración de Ubuntu 22.04, necesitarás ajustar la configuración para permitir el tráfico HTTPS. Tanto Nginx como Apache registran algunos perfiles con ufw al momento de la instalación.

Puedes ver la configuración actual escribiendo:

  1. sudo ufw status

Si recibes una salida que contiene solo Nginx HTTP o Apache, significa que solo se permite el tráfico HTTP al servidor web:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Para permitir además el tráfico HTTPS, permite el perfil Nginx Full o Apache Full y elimina la redundancia del perfil HTTP:

  1. sudo ufw allow 'Nginx Full'
  2. sudo ufw delete allow 'Nginx HTTP'

Esto debería producir un resultado como este:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

En el último paso, instalarás el certificado.

Paso 5 – Instalación de un Certificado en tu Servidor

Después de obtener tu certificado de la CA de tu elección, necesitas instalarlo en tu servidor web. Esto implica agregar algunas líneas relacionadas con SSL a la configuración del software de tu servidor web.

Este tutorial cubrirá la configuración de Nginx y Apache en Ubuntu 22.04, pero la mayoría de las distribuciones Linux modernas funcionarán de manera similar. Este tutorial también hace las siguientes suposiciones:

  • La clave privada, el certificado SSL y, si corresponde, los certificados intermedios de la CA se encuentran en un directorio principal, en /home/sammy
  • La clave privada se llama example.com.key
  • El certificado SSL se llama example.com.crt
  • Los certificados intermedios de la CA devueltos por su proveedor están en un archivo llamado intermediate.crt

Nota: En un entorno de producción, estos archivos deben almacenarse en algún lugar al que solo el proceso del servidor web (generalmente root) pueda acceder, y la clave privada debe mantenerse segura. Por ejemplo, Let’s Encrypt almacena los certificados que genera en /etc/letsencrypt. Los ejemplos de producción variarán debido a la complejidad de las configuraciones de varios servidores.

Nginx

Estos son los pasos para implementar manualmente un certificado SSL en Nginx.

Si su CA devolvió solo un certificado intermedio, debe crear un archivo de certificado “encadenado” único que contenga su certificado y los certificados intermedios de la CA.

Suponiendo que su archivo de certificado se llama example.com.crt, puede usar el comando cat para unir archivos y crear un archivo combinado llamado example.com.chained.crt:

  1. cat example.com.crt intermediate.crt > example.com.chained.crt

Usando nano o su editor de texto favorito, abra el archivo de bloque de servidor Nginx predeterminado para editarlo:

  1. sudo nano /etc/nginx/sites-enabled/default

Encuentre la directiva listen y modifíquela a listen 443 ssl:

/etc/nginx/sites-enabled/default
…
server {
    listen 443 ssl;
…

A continuación, encuentra la directiva server_name dentro del mismo bloque de servidor y asegúrate de que su valor coincida con el nombre común de tu certificado. Además, agrega las directivas ssl_certificate y ssl_certificate_key para especificar las rutas de tus archivos de certificado y clave privada:

/etc/nginx/sites-enabled/default
…
    server_name example.com;
    ssl_certificate /home/sammy/example.com.chained.crt;
    ssl_certificate_key /home/sammy/example.com.key;
…

Para permitir solo los protocolos y cifrados SSL más seguros, agrega las siguientes líneas al archivo:

/etc/nginx/sites-enabled/default
…
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…

Finalmente, para redirigir las solicitudes HTTP a HTTPS de forma predeterminada, puedes agregar un bloque de servidor adicional en la parte superior del archivo:

/etc/nginx/sites-enabled/default
server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}
…

Guarda y cierra el archivo. Si estás utilizando nano, presiona Ctrl+X, luego cuando se te solicite, Y y luego Enter.

Antes de reiniciar Nginx, puedes validar tu configuración usando nginx -t:

  1. sudo nginx -t

Si no hay problemas, reinicia Nginx para habilitar SSL sobre HTTPS:

  1. sudo systemctl restart nginx

Pruébalo accediendo a tu sitio a través de HTTPS, por ejemplo, https://example.com. También querrás intentar conectarte a través de HTTP, por ejemplo, http://example.com, para asegurarte de que la redirección esté funcionando correctamente.

Apache

Estos son los pasos para implementar manualmente un certificado SSL en Apache.

Usando nano o tu editor de texto favorito, abre el archivo de host virtual predeterminado de Apache para editarlo:

  1. sudo nano /etc/apache2/sites-available/000-default.conf

Encuentra la entrada <VirtualHost *:80> y modifícala para que tu servidor web escuche en el puerto 443:

/etc/apache2/sites-available/000-default.conf
…
<VirtualHost *:443>
…

A continuación, agregue la directiva ServerName, si aún no existe:

/etc/apache2/sites-available/000-default.conf
…
ServerName example.com

Luego, agregue las siguientes líneas para especificar las rutas de su certificado y clave:

/etc/apache2/sites-available/000-default.conf
…
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
SSLCACertificateFile /home/sammy/intermediate.crt

En este punto, su servidor está configurado para escuchar solo en HTTPS (puerto 443), por lo que las solicitudes a HTTP (puerto 80) no serán atendidas. Para redirigir las solicitudes HTTP a HTTPS, agregue lo siguiente al principio del archivo (sustituya el nombre en ambos lugares):

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://example.com/
</VirtualHost>
…

Guarde y cierre el archivo. Si está utilizando nano, presione Ctrl+X, luego cuando se le solicite, presione Y y luego Enter.

Active el módulo SSL de Apache ejecutando este comando:

  1. sudo a2enmod ssl

Ahora, reinicie Apache para cargar la nueva configuración y habilitar TLS/SSL sobre HTTPS.

  1. sudo systemctl restart apache2

Pruebe accediendo a su sitio a través de HTTPS, por ejemplo, https://example.com. También querrá intentar conectarse a través de HTTP, por ejemplo, http://example.com, para asegurarse de que la redirección esté funcionando correctamente.

Conclusión

En este tutorial, aprendió cómo determinar cuándo podría necesitar comprar un certificado SSL de una CA comercial, y cómo comparar y contrastar las opciones disponibles. También aprendió cómo configurar Nginx o Apache para admitir HTTPS, y cómo adaptar sus configuraciones para producción.

A continuación, puede que desee leer acerca de otros casos de uso de SSL, como cuando se trabaja con balanceadores de carga.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority