GNU/Linux >> Tutoriales Linux >  >> Linux

Instale y use la utilidad Lets Encrypt Certbot en CentOS 7 con Apache

Este artículo describe cómo instalar y usar la utilidad Let's Encrypt® Certbot en un servidor CentOS® 7.

¿Qué es Let's Encrypt?

Let's Encrypt es una autoridad de certificación (CA) que proporciona certificados SSL gratuitos de 90 días. Los siguientes detalles provienen de su página Acerca de:

Let's Encrypt es una autoridad de certificación (CA) gratuita, automatizada y abierta, que se ejecuta para beneficio del público. Es un servicio proporcionado por Internet Security Research Group (ISRG).

Brindamos a las personas los certificados digitales que necesitan para habilitar HTTPS (SSL/TLS) para sitios web, de forma gratuita, de la manera más fácil de usar que podemos. Hacemos esto porque queremos crear una Web más segura y que respete la privacidad.

Los principios clave detrás de Let's Encrypt son:

  • Gratis :Cualquiera que posea un nombre de dominio puede usar Let's Encrypt para obtener un certificado confiable sin costo alguno.
  • Automático :El software que se ejecuta en un servidor web puede interactuar con Let's Encrypt para obtener un certificado sin problemas, configurarlo de forma segura para su uso y encargarse automáticamente de la renovación.
  • Seguro :Let's Encrypt servirá como una plataforma para promover las mejores prácticas de seguridad TLS, tanto del lado de la CA como ayudando a los operadores del sitio a proteger adecuadamente sus servidores.
  • Transparente :Todos los certificados emitidos o revocados se registrarán públicamente y estarán disponibles para que cualquiera pueda inspeccionarlos.
  • Abrir :El protocolo de emisión y renovación automática se publicará como un estándar abierto que otros pueden adoptar.
  • Cooperativa :Al igual que los propios protocolos de Internet subyacentes, Let's Encrypt es un esfuerzo conjunto para beneficiar a la comunidad, más allá del control de cualquier organización.

¿Cuál es la diferencia entre Let's Encrypt y otros certificados SSL?

Los certificados SSL son claves que ayudan a cifrar los datos de su servidor. Los navegadores web solo reconocen certificados SSL proporcionados por una CA conocida, como DigiCert, GoDaddy, COMODO, etc. Todas las CA reconocidas y confiables son miembros de CA/Browser Forum (cabforum.org) y siguen un conjunto estricto de requisitos para emitir certificados.

Hay tres niveles diferentes de certificados SSL:

  • Certificado de validación de dominio (DV) :Este es un certificado SSL básico que prueba la propiedad del dominio. No se necesita validación adicional.

  • Certificado de Validación Organizacional (OV) :Este certificado no solo prueba la propiedad del dominio, sino que también demuestra que una empresa real, en regla con una autoridad gubernamental, es propietaria del dominio.

  • Certificado de validación extendida (EV) :Este certificado va un paso más allá que el certificado OV al validar aún más que la empresa ha estado operativa durante al menos tres años.

En el back-end, estas son diferencias significativas y juegan un papel importante cuando compra un certificado de una CA porque debe pasar por su proceso de validación.

En la parte delantera, no hay una diferencia visible entre los tres tipos de certificados. La característica del navegador utilizada para diferenciar entre los diferentes niveles de certificado ha quedado obsoleta. Para obtener más información, consulte:Los certificados de validación extendida están (realmente, realmente) muertos

Let's Encrypt, una CA oficial en CA/Browser Forum, ofrece certificados DV básicos gratuitos que son válidos por 90 días a la vez. Lo que hace que Let's Encrypt sea único es su utilidad Certbot, que puede instalar en un servidor web para emitir y administrar sus certificados SSL mediante procesos automatizados. El uso de Certbot da como resultado menos mantenimiento y menos dolores de cabeza. El período de validez de 90 días significa que las claves del certificado se alternan con mayor frecuencia, lo que proporciona una mayor seguridad porque hay una ventana mucho más pequeña de una clave posiblemente comprometida.

Comenzar

Este artículo se centra en la instalación de Certbot en la última versión de CentOS 7. El servidor utilizado en este ejemplo ejecuta la siguiente pila LAMP:

  • Versión CentOS Linux® 7.8.2003 (núcleo)
  • PHP 7.4.8
  • MariaDB® 5.5.65
  • Apache® 2.4.6

Las instrucciones y los comandos de este artículo proporcionan las funciones básicas para obtener un certificado de Let's Encrypt. Certbot no depende de una aplicación web para ejecutarse, pero requiere un medio para validar que usted realmente controla el dominio. Este artículo cubre la validación mediante el método webroot, lo que significa que está alojando el dominio para el que necesita un certificado en el servidor donde instaló Certbot.

Importante :Las instrucciones del artículo utilizan una configuración predeterminada de Apache para un solo sitio en el servidor. Su configuración puede variar dependiendo de su configuración de Apache.

Instalar Certbot

Después de configurar su servidor para servir su página web, use el siguiente comando para instalar Certbot:

[root@leexample-centos7 ~]# yum install certbot

Certbot requiere las siguientes dependencias:

=================================================================================================================================
 Package                                   Arch                    Version                           Repository             Size
=================================================================================================================================
Installing:
 certbot                                   noarch                  1.6.0-1.el7                       epel                   44 k
Installing for dependencies:
 pyOpenSSL                                 x86_64                  0.13.1-4.el7                      base                  135 k
 python-ndg_httpsclient                    noarch                  0.3.2-1.el7                       epel                   43 k
 python-requests-toolbelt                  noarch                  0.8.0-3.el7                       epel                   78 k
 python-zope-component                     noarch                  1:4.1.0-5.el7                     epel                  228 k
 python-zope-event                         noarch                  4.0.3-2.el7                       epel                   79 k
 python-zope-interface                     x86_64                  4.0.5-4.el7                       base                  138 k
 python2-acme                              noarch                  1.6.0-1.el7                       epel                   81 k
 python2-certbot                           noarch                  1.6.0-1.el7                       epel                  374 k
 python2-configargparse                    noarch                  0.11.0-2.el7                      epel                   31 k
 python2-future                            noarch                  0.18.2-2.el7                      epel                  806 k
 python2-josepy                            noarch                  1.3.0-2.el7                       epel                   89 k
 python2-mock                              noarch                  1.0.1-10.el7                      epel                   92 k
 python2-parsedatetime                     noarch                  2.4-6.el7                         epel                   78 k
 python2-pyrfc3339                         noarch                  1.1-3.el7                         epel                   16 k
 python2-six                               noarch                  1.9.0-0.el7                       epel                  2.9 k
 pytz                                      noarch                  2016.10-2.el7                     base                   46 k

Transaction Summary
=================================================================================================================================

Solicitar un nuevo certificado usando Certbot

Con Certbot instalado, puede solicitar un certificado de Let's Encrypt. Antes de continuar, tome nota de los siguientes elementos:

  • Los dominios que está solicitando. Puede solicitar hasta 100 dominios en un solo certificado de Let's Encrypt.

  • La ubicación del directorio o directorios raíz de documentos de su sitio. Necesitas esta información para el certbot comando para instalar el archivo txt para la validación. Si agrega varios dominios que apuntan a diferentes directorios, debe enumerarlos todos en el comando.

  • Debe permitir el acceso a /.well-known/acme-challenge/ directorio.

  • Debe excluir el /.well-known/acme-challenge/ directorio de una redirección forzada de HTTP a HTTPS.

Nota: La primera vez que ejecuta Certbot, le solicita que ingrese su dirección de correo electrónico y acepte los términos del servicio.

Ejecute el siguiente comando con sus datos para solicitar un certificado:

[root@leexample-centos7 ~]# certbot certonly --webroot -w /var/www/vhosts/example.com -d example.com -d www.example.com

Una explicación de los elementos de comando sigue:

  • certonly :una bandera que indica que solo debe emitir un certificado y no hacer nada más. El comando no realiza ninguna configuración de aplicación web.
  • --webroot :le dice a Certbot que use un directorio web específico, cada uno separado por -w bandera.
  • -d :especifica el dominio a solicitar. Debes tener -d bandera para cada dominio que desee en el certificado.

Nota: Si desea cubrir tanto el www y no-www versiones de un dominio en un solo certificado, debe usar un -d bandera para cada uno.

Después de ingresar el comando, se muestra el siguiente resultado:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for letest.mccrocklin.space
Using the webroot path /var/www/vhosts/example.com for all unmatched domains.
Waiting for verification...

Si no hay problemas con la validación, verá el siguiente resultado:

Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-10-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Ubicaciones de archivos de certificados

Certbot, por defecto, instala los certificados en /etc/letsencrypt/live// .

<domain.tld> es siempre el primer dominio que establece cuando ejecuta el certbot dominio. Tenga esto en cuenta cuando configure su host virtual o bloques de servidor para que apunten a los archivos de certificado.

Puede esperar ver los siguientes archivos en el directorio:

[root@leexample-centos7 ~]# ls -al /etc/letsencrypt/live/example.com
total 12
drwxr-xr-x. 2 root root 4096 Aug  1 13:35 .
drwx------. 3 root root 4096 Aug  1 13:35 ..
lrwxrwxrwx. 1 root root   47 Aug  1 13:35 cert.pem -> ../../archive/example.com/cert1.pem
lrwxrwxrwx. 1 root root   48 Aug  1 13:35 chain.pem -> ../../archive/example.com/chain1.pem
lrwxrwxrwx. 1 root root   52 Aug  1 13:35 fullchain.pem -> ../../archive/example.com/fullchain1.pem
lrwxrwxrwx. 1 root root   50 Aug  1 13:35 privkey.pem -> ../../archive/example.com/privkey1.pem
-rw-r--r--. 1 root root  692 Aug  1 13:35 README

Tenga en cuenta que todos estos archivos son enlaces simbólicos. Esto es importante para el proceso de renovación automatizado, descrito en la siguiente sección de Renovación. Tenga en cuenta los siguientes nombres de archivo y sus usos:

  • cert.pem es el certificado.
  • cadena.pem es el paquete de CA.
  • cadena completa.pem es el certificado, seguido del paquete de CA.
  • clave privada.pem es la clave privada.

Configurar Apache

Use los siguientes comandos para configurar Apache:

  1. En la configuración predeterminada de Apache, agregue las siguientes líneas en /etc/httpd/conf.d/ssl.conf :

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCACertificateFile /etc/letsencrypt/live/example.com/chain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    
  2. Guarde los cambios y salga.

  3. Ejecute el siguiente comando para realizar una verificación de sintaxis:

    httpd -t
    
  4. Si obtiene Syntax OK , luego ejecute el siguiente comando para recargar Apache:

    systemctl reload httpd
    

Renueve sus certificados

Let's Encrypt Certificates tiene una vida útil de 90 días, por lo que cuando necesita renovar muchos certificados solicitados a través de la utilidad Certbot, el ciclo de renovación frecuente puede ser desalentador.

Afortunadamente, Certbot tiene una función de renovación incorporada que se encarga de esto por usted. Sin embargo, no se ejecuta automáticamente, por lo que debe programarlo para que se ejecute como cron trabajo. El proceso de renovación de Cerbot utiliza los siguientes pasos:

  1. El comando, certbot renew , inicia el proceso.

  2. Certbot verifica todos los certificados que se han emitido e instalado en su servidor. Busca específicamente los certificados que vencerán en los próximos 30 días.

  3. Certbot intenta renovar estos certificados que caducan utilizando el mismo método de validación utilizado para la solicitud de certificado original.

  4. Una vez que la renovación tiene éxito, Certbot crea nuevos archivos dentro de /etc/letsencrypt/archive// directorio, incrementando el número para cada iteración de renovación y actualizando los enlaces simbólicos en /etc/letsencrypt/live// Debido a que los nombres de los archivos del certificado en realidad no cambian, no necesita cambiar la ruta del archivo en los archivos de configuración del bloque del servidor host virtual. Esto hace que el proceso de renovación sea más fluido.

Configurar el trabajo cron

Es importante tener en cuenta que la frecuencia real del trabajo cron depende de la configuración de su servidor. La función de renovación analiza solo los certificados existentes hasta que encuentra uno que va a caducar en los próximos 30 días. Es seguro configurar el trabajo cron para que se ejecute una vez al día durante las horas de poco tráfico. Si tiene muchos certificados de Let's Encrypt que se emitieron en diferentes momentos, puede detectarlos cuando lleguen a la marca de 30 días.

Sin embargo, puede elegir que se ejecute con menos frecuencia. Por ejemplo, una vez a la semana a las 3 a. m. todos los domingos.

Puede crear el trabajo cron utilizando el crontab del usuario root o Anacron. Anacron se asegura de que el trabajo cron se ejecute incluso si se perdió durante el tiempo de inactividad del servidor.

Utilice los siguientes pasos para crear el trabajo cron:

  1. Confirme la ruta correcta emitiendo el comando directamente:

    [root@leexample-centos7 ~]# which certbot
    /usr/bin/certbot
    
  2. Determina qué método cron quieres usar:

    • Anacron :crea un nuevo archivo en /etc/cron.weekly/ - puede nombrarlo algo como certbotrenew

    • Cron :utilice crontab -e

  3. Cree la entrada cron, como la siguiente, en su método elegido:

    0 3 * * 0 /usr/bin/certbot renew
    
  4. Guarde el archivo.

Conclusión

Let’s Encrypt es una excelente alternativa para obtener Certificados SSL gratuitos para sus dominios. Estos Certificados son certificados DV, lo que significa que solo validan la propiedad del dominio. Este artículo cubre las funciones básicas de la utilidad Let's Encrypt Certbot. Si necesita opciones adicionales y funciones más avanzadas, puede obtener más ayuda de la comunidad Let's Encrypt:

  • Vamos a cifrar
  • Encriptemos la documentación
  • Foro de la comunidad Let's Encrypt

Linux
  1. Asegure Apache con Lets Encrypt en CentOS 7

  2. Cómo instalar Shopware con NGINX y Lets Encrypt en CentOS 7

  3. Cómo instalar WonderCMS con Nginx y Lets Encrypt SSL en CentOS 7

  4. Cómo instalar Let's Encrypt con Apache en CentOS 7

  5. Instalar Apache y PHP en CentOS 7

Cómo instalar Shopware 6 con NGINX y Lets Encrypt en CentOS 8

Cómo Instalar PrestaShop con Apache y Lets Encrypt SSL en CentOS 8

Instale TaskBoard con Apache y permita Encrypt SSL en Debian 11

Cómo instalar InvoicePlane con Apache y el certificado SSL gratuito Lets Encrypt en Debian 11

Cómo instalar Let's Encrypt SSL con Apache en CentOS 7

Cómo proteger Apache con el certificado Let's Encrypt SSL en CentOS 8