Saltar al contenido principal

Overrides de Certbot

NOTA:​

La mayoría (casi todos) los usuarios no necesitan modificar las configuraciones de Certbot. CapRover lo administra automáticamente por usted. ¡Deberías saltarte esta página!


Personaliza el comando Certbot para usar el desafío DNS-01​

A partir de CapRover 1.12.0, puedes personalizar el comando que Certbot utiliza para generar certificados SSL. De forma predeterminada, CapRover usa el siguiente comando:

certbot certonly --webroot -w ${webroot} -d ${domainName}

que funciona a través del desafío HTTP-01. En este modo, Certbot verificará la propiedad de su dominio enviando una solicitud a http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN> donde el contenido de <TOKEN> es generado por Certbot.

Este desafío funciona bien para la mayoría de los usuarios, pero opcionalmente puedes utilizar un desafío diferente si así lo deseas. Puede hacerlo anulando el comando de generación de certificados de Certbot.

1) Certbot Docker imagen​

La imagen predeterminada Certbot Docker no incluye los complementos de terceros. Necesitas crear una imagen personalizada:

Por ejemplo, para Cloudflare:

# Change this to any other base image listed here: https://hub.docker.com/r/certbot/certbot
## Make sure to use the same version that CapRover uses by default (`certbotImageName` in [CaptainConstant](https://github.com/caprover/caprover/blob/master/src/utils/CaptainConstants.ts#L58))
BASE_IMAGE="certbot/dns-cloudflare:v2.11.0"

TEMP_DOCKERFILE=$(mktemp)
cat > $TEMP_DOCKERFILE <<EOF
FROM $BASE_IMAGE
ENTRYPOINT ["/bin/sh", "-c"]
CMD ["sleep 9999d"]
EOF
docker build -t certbot-customized -f $TEMP_DOCKERFILE .
rm $TEMP_DOCKERFILE

2) Guarde sus credenciales DNS​

mkdir /captain/data/letencrypt/etc/captain-files
nano mycreds.ini

Luego ingrese sus credenciales DNS. Por ejemplo, para Cloudflare DNS, puedes usar:

# Cloudflare API token used by Certbot
dns_cloudflare_api_token = 0123456789abcdef0123456789abcdef01234567

Ver detalles aquí

3) Anular el comando Certbot​

Edite /captain/data/config-override.json ejecutando:

nano /captain/data/config-override.json

Luego ingrese el siguiente blob. Asegúrese de reemplazar your/repo:certbot-sleeping y cambiar certbotCertCommand para satisfacer sus necesidades.

Por ejemplo, para un certificado comodín necesita un certificado para el dominio y también otro para los subdominios. Debes agregarlos así -d ${domainName} -d \"*.${domainName}\".

{
"skipVerifyingDomains": "true",
"certbotImageName": "certbot-customized",
"certbotCertCommandRules": [
{
"domain": "*",
"command": "certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/captain-files/mycreds.ini -d ${domainName} -d \"*.${domainName}\""
}
]
}

4) Reiniciar CapRover​

docker service update captain-captain --force

Ahora, cuando le pides a CapRover que genere un certificado SSL, utiliza el desafío DNS.




Configure Certbot para usar un nuevo servidor ACME​

1) Crear archivo de configuración​

Normalmente, el directorio /captain/data/letsencrypt/etc debe contener el volumen utilizado por Certbot, para configurar Certbot, agregue un archivo cli.ini en este directorio:

$ cd /captain/data/letsencrypt/etc/
$ nano cli.ini

2) Configurar los valores​

Tomaremos como ejemplo el servidor ACME de ZeroSSL para guiarlo sobre los pasos necesarios para que Certbot funcione correctamente con él.

Primero (al menos para ZeroSSL, necesita obtener las credenciales de EAB que están aquí) agregamos nuestro correo electrónico y le decimos a Certbot que acepte los TOS del servicio:

email = foo@example.com
agree-tos = true

luego agregamos el servidor (y si es necesario las credenciales de EAB):

server = https://acme.zerossl.com/v2/DV90 # (change it with your ACME server)
eab-kid = some-short-string
eab-hmac-key = a-big-key

3) Reiniciar Certbot​

Luego, para aplicar nuestros cambios necesitamos actualizar el servicio de Certbot:

$ docker service update captain-certbot

¡Y ya está!

4) Registro CAA​

Recuerda agregar un registro CAA en tu DNS para evitar cualquier problema al generar certificados SSL

por ejemplo, ZeroSSL necesita que tengas:

<your domain>. 3600 IN CAA 0 issue "sectigo.com"
<your domain>. 3600 IN CAA 0 issuewild "sectigo.com"