Next: Servicios DNS, Previous: Servicios Web, Up: Servicios [Contents][Index]
El módulo (gnu services certbot)
proporciona un servicio para la
obtención automática de un certificado TLS válido de la autoridad de
certificación Let’s Encrypt. Estos certificados pueden usarse para
proporcionar contenido de forma segura sobre HTTPS u otros protocolos
basados en TLS, con el conocimiento de que el cliente podrá verificar la
autenticidad del servidor.
Let’s Encrypt provides the certbot
tool to automate the certification process. This tool first securely
generates a key on the server. It then makes a request to the Let’s Encrypt
certificate authority (CA) to sign the key. The CA checks that the request
originates from the host in question by using a challenge-response protocol,
requiring the server to provide its response over HTTP. If that protocol
completes successfully, the CA signs the key, resulting in a certificate.
That certificate is valid for a limited period of time, and therefore to
continue to provide TLS services, the server needs to periodically ask the
CA to renew its signature.
El servicio certbot automatiza este proceso: la generación inicial de la clave, la petición inicial de certificación al servicio Let’s Encrypt, la integración del desafío/respuesta en el servidor web, la escritura del certificado en disco, las renovaciones periódicas automáticas y el despliegue de tareas asociadas con la renovación (por ejemplo la recarga de servicios y la copia de claves con diferentes permisos).
Certbot se ejecuta dos veces al día, en un minuto aleatorio dentro de la hora. No hará nada hasta que sus certificados estén pendientes de renovación o sean revocados, pero su ejecución regular propociona a su servicio la oportunidad de permanecer en línea en caso de que se produzca una revocación iniciada por Let’s Encrypt por alguna razón.
Mediante el uso de este servicio, usted acepta el acuerdo de suscripción ACME, que se puede encontrar aquí: https://acme-v01.api.letsencrypt.org/directory.
Un tipo de servicio para el cliente de Let’s Encrypt certbot
. Su
valor debe ser un registro certbot-configuration
como en este
ejemplo:
(define %procedimiento-de-despliegue-nginx (program-file "procedimiento-de-despliegue-nginx" #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read))) (kill pid SIGHUP)))) (service certbot-service-type (certbot-configuration (email "foo@example.net") (certificates (list (certificate-configuration (domains '("example.net" "www.example.net")) (deploy-hook %procedimiento-de-despliegue-nginx)) (certificate-configuration (domains '("bar.example.net")))))))
Véase a continuación los detalles de certbot-configuration
.
Tipo de datos que representa la configuración del servicio
certbot
. Este tipo tiene los siguientes parámetros:
package
(predeterminado: certbot
)El paquete certbot usado.
webroot
(predeterminado: /var/www
)Directorio desde el que se proporcionan los archivos de desafío/respuesta de Let’s Encrypt.
certificates
(predeterminados: ()
)Una lista de configuraciones certificates-configuration
para los
cuales se generan certificados y se solicitan firmas. Cada certificado tiene
un nombre (name
) y varios dominios (domains
).
email
(predeterminado: #f
)Dirección de correo electrónico opcional usada para el registro y el contacto de recuperación. Se recomienda que proporcione un valor ya que le permite recibir importantes notificaciones acerca de la cuenta y los certificados emitidos.
server
(predeterminada: #f
)URL opcional del servidor ACME. Esta configuración cambia el valor predeterminado de certbot, que es el servidor de Let’s Encrypt.
rsa-key-size
(predeterminado: 2048
)Tamaño de la clave RSA.
default-location
(predeterminada: véase a continuación)La configuración nginx-location-configuration
predeterminada. Debido
a que certbot
necesita proporcionar desafíos y respuestas, necesita
ser capaz de ejecutar un servidor web. Se lleva a cabo extendiendo el
servicio web nginx
con una configuración
nginx-server-configuration
que escucha en los dominios domains
en el puerto 80, y que contiene una configuración
nginx-location-configuration
para el subespacio de rutas URI
/.well-known/
usado por Let’s Encrypt. See Servicios Web, para más
información sobre estos tipos de datos de configuración de nginx.
Las peticiones a otras rutas URL se compararán contra la dirección
predeterminada default-location
, la cual, en caso de estar presente,
se añade a todas las configuraciones nginx-server-configuration
.
De manera predeterminada, la dirección predeterminada
default-location
emitirá una redirección
http://dominio/...
a https://dominio/...
, lo que
le permite definir qué proporcionará en su sitio web a través de
https
.
Proporcione #f
para no emitir una dirección predeterminada.
Tipo de datos que representa la configuración de un certificado. Este tipo tiene los siguientes parámetros:
name
(predeterminado: vea a continuación)Este nombre se usa por Certbot para su mantenimiento interno y en las rutas
de archivos; no afecta al contenido del certificado en sí mismo. Para ver
los nombres de certificados, ejecute certbot certificates
.
Su valor predeterminado es el primer dominio proporcionado.
domains
(predeterminado: ()
)El primer dominio proporcionado será el sujeto del nombre común (CN) del certificado, y todos los dominios serán nombres alternativos (Subject Alternative Names) en el certificado.
challenge
(predeterminado: #f
)El tipo de desafío que debe ejecutar certbot. Si se especifica #f
, el
valor por omisión es desafío HTTP. Si se especifica un valor, el valor por
omisión es el módulo manual (véase authentication-hook
,
cleanup-hook
y la documentación en
https://certbot.eff.org/docs/using.html#hooks), y concede permiso a
Let’s Encrypt para registrar la IP pública de la máquina que realiza la
petición.
csr
(default: #f
)File name of Certificate Signing Request (CSR) in DER or PEM format. If
#f
is specified, this argument will not be passed to certbot. If a
value is specified, certbot will use it to obtain a certificate, instead of
using a self-generated CSR. The domain-name(s) mentioned in domains
,
must be consistent with the domain-name(s) mentioned in CSR file.
authentication-hook
(predeterminado: #t
)Orden ejecutada en un shell una vez por cada desafío de certificado que debe
contestarse. Durante su ejecución, la variable del shell
$CERTBOT_DOMAIN
contiene el dominio que se está validando,
$CERTBOT_VALIDATION
contiene la cadena de validación y
$CERTBOT_TOKEN
contiene el nombre de archivo del recurso solicitado
cuando se realiza el desafío HTTP-01.
cleanup-hook
(predeterminado: #f
)Orden ejecutada en un shell una vez por cada desafío de certificado que haya
sido contestado por auth-hook
. Durante su ejecución, las variables
del shell disponibles en el script auth-hook
todavía están
disponibles, y adicionalmente $CERTBOT_AUTH_OUTPUT
contendrá la
salida estándar que produjo auth-hook
.
deploy-hook
(predeterminado: #f
)Orden ejecutada en un shell una vez por cada certificado emitido
satisfactoriamente. Durante su ejecución, la variable del shell
$RENEWED_LINEAGE
apuntará al subdirectorio live de configuración (por
ejemplo, ‘"/etc/letsencrypt/live/example.com"’) que contiene las nuevas
claves y certificados; la variable del shell $RENEWED_DOMAINS
contendrá una lista delimitada por espacios de certificados de dominio
renovados (por ejemplo, ‘"example.com www.example.com"’).
Para cada configuración certificate-configuration
, el certificado se
almacena /etc/letsencrypt/live/name/fullchain.pem
y la clave se
almacena en /etc/letsencrypt/live/name/privkey.pem
.
Next: Servicios DNS, Previous: Servicios Web, Up: Servicios [Contents][Index]