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.
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.
-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:
-
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
-
Guarde los cambios y salga.
-
Ejecute el siguiente comando para realizar una verificación de sintaxis:
httpd -t
-
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:
-
El comando,
certbot renew
, inicia el proceso. -
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.
-
Certbot intenta renovar estos certificados que caducan utilizando el mismo método de validación utilizado para la solicitud de certificado original.
-
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:
-
Confirme la ruta correcta emitiendo el comando directamente:
[root@leexample-centos7 ~]# which certbot /usr/bin/certbot
-
Determina qué método cron quieres usar:
-
Anacron :crea un nuevo archivo en
/etc/cron.weekly/
- puede nombrarlo algo comocertbotrenew
-
Cron :utilice
crontab -e
-
-
Cree la entrada cron, como la siguiente, en su método elegido:
0 3 * * 0 /usr/bin/certbot renew
-
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