¿Cómo crear un certificado con Let’s Encrypt?

| Última modificación: 18 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes cómo crear un certificado con Let’s Encrypt? A continuación, te explicaremos el proceso de cómo conseguir un certificado SSL/TLS para tu página web, por medio del servicio gratuito Let’s Encrypt.

Con el siguiente ejemplo, te enseñaremos cómo crear un certificado con curva elíptica, aceptado por prácticamente todos los navegadores, pero que no puede ser generado directamente desde Let’s Encrypt. Por eso, para este tipo de certificado, es necesario crearlo tú mismo y luego enviarlo para que Let’s Encrypt ponga su firma en él. Es un método práctico y seguro para verificar la autenticidad de tu página web.

¿Cómo crear un certificado con Let’s Encrypt?

Para crear un certificado SSL/TLS de curva elíptica, firmado por la autoridad certificadora gratuita Let’s Encrypt, es necesario seguir el siguiente proceso:

  1. Generar una clave privada con el programa de código abierto OpenSSL.
  2. Configurar el certificado con OpenSSL.
  3. Crear la solicitud de firma del certificado (Certificate Signing Request – CSR).
  4. Pasar la solicitud de firma del certificado, que se genera automáticamente.

Generación de clave privada

Para crear una clave privada con criptografía de curva elíptica, en el programa OpenSSL, utilizaremos el siguiente comando:

openssl ecparam -genkey -name secp384r1 -out privkey.pem

Donde:

  • ecparam: sirve para manipular y generar parámetros de curva elíptica.
  • -genkey: le indica a OpenSSL que debe generar una clave.
  • – name: le indica a OpenSSL qué tipo de curva utilizar. En este ejemplo, se ha especificado una curva secp384r1, que se considera segura y es admitida de forma casi universal por los navegadores web.

Configuración del certificado

Ya has creado la clave privada y, ahora, puedes seguir al segundo paso de cómo crear un certificado con Let’s Encrypt, que es establecer la configuración del certificado. Allí, deberás definir los siguientes parámetros, que en el menú de “–help” de la aplicación podrás ver qué significan y qué valores debes incluir según el caso de tu página web.

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

En la sección [ req ] o “Required” debes configurar:

  • prompt
  • encrypt_key
  • default_md
  • distinguished_name
  • req_extensions

En la sección [ dname ] o “Distinguished Name” debes configurar:

  • CN
  • emailAddress

En la sección [ reqext ] o “Requested Extensions” debes configurar:

  • subjectAltName = con la lista de subject alternative names (SAN) del certificado.

Certificate Signing Request (CSR)

El tercer paso para aprender cómo crear un certificado con Let’s Encrypt es solicitar la firma de la certificadora.

Un Certificate Signing Request (CSR) es un fichero que se utiliza para generar una solicitud de firma por parte de Let’s Encrypt para nuestro certificado.

Let’s Encrypt es una autoridad de certificación que funciona de manera gratuita y automatizada, gracias al apoyo de múltiples compañías y agentes particulares que aportan donaciones a la organización. Por medio de este servicio, se puede generar la firma para nuestro certificado con curva elíptica de forma gratuita y prácticamente inmediata. Para generar el Certificate Signing Request, utilizamos el siguiente comando:

openssl req -new -config openssl.cnf -key privkey.pem -out csr.pem

Donde:

  • -new: indica que se desea generar un CSR nuevo.
  • -config: indica el archivo con las configuraciones del paso anterior.
  • -key: indica el archivo con la clave que hemos generado
  • -out: es el archivo donde deseamos que se guarde el CSR.

Obtener el certificado

El último paso de cómo crear un certificado con Let’s Encrypt es enviar la petición de la firma.

Para enviarle tu solicitud a Let’s Encrypt, debes usar una pieza de software de un cliente ACME, ya que es el protocolo que esta certificadora utiliza para verificar que el dominio te pertenece. El más recomendado es Certbot. Entonces, el comando de prueba se vería de la siguiente forma en la consola:

certbot certonly --dry-run --dns-route53 --domain "ejemplo.com" --domain "*.ejemplo.com" --csr csr.pem

Verás que, en este ejemplo, tomado de Obtaining an Elliptic Curve certificate from Let’s Encrypt, se estaría utilizando un dominio llamado “ejemplo.com”, que estaría registrado con AWS Route 53.

Además, advierte que se usa el comando “–dry-run” con el fin de solamente hacer una prueba del envío del CSR. Una vez sea satisfactorio el resultado, se utiliza el siguiente comando:

certbot certonly --dns-route53 --domain "example.com" --domain "*.example.com" --csr csr.pem

En breve, obtendrás un output con los siguientes archivos de tu certificado:

  • 0000_cert.pem“: el certificado con la firma de Let’s Encrypt.
  • 0000_chain.pem“: el certificado original y el CSR.
  • 0001_chain.pem“: el certificado original y con la firma.

Una vez incluyas estos ficheros en el código de tu página web, los usuarios podrán visitarlo y conectarse de forma segura con su servidor.

Ahora sabes cómo crear un certificado con Let’s Encrypt de forma segura y desde cero. Si quieres aprender más y convertirte en un experto en ciberseguridad, en KeepCoding tenemos el mejor curso para ti. Ingresa en nuestro Ciberseguridad Full Stack Bootcamp y especialízate en hacking ético en menos de 7 meses. ¡Inscríbete ya!

Carlos Cilleruelo

CEO and co-founder of Byron Labs & Coordinador del Bootcamp en Ciberseguridad.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Ciberseguridad

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado