Instalar un certificado SSL para subdominios wildcard con certbot
Normalmente utilizo Laravel Forge para la gestión de mis servidores y todo lo relativo a SSL. Sin embargo, para los certificados SSL solamente soportan 5 proveedores si quieres utilizar certificados wildcard con Let's Encrypt, y nuestro proyecto tenía las DNS en Vercel.
Tras cacharrear un poco, encontré certbot-dns-multi
, una extensión de Certbot que te permite conectarlo con los siguientes 127 proveedores (al momento de escribir este artículo):
- Akamai EdgeDNS
- Alibaba Cloud DNS
- all-inkl
- Amazon Lightsail
- Amazon Route 53
- ArvanCloud
- Aurora DNS
- Autodns
- Azure (deprecated)
- Azure DNS
- Bindman
- Bluecat
- Brandit
- Bunny
- Checkdomain
- Civo
- Cloud.ru
- CloudDNS
- Cloudflare
- ClouDNS
- CloudXNS
- ConoHa
- Constellix
- Derak Cloud
- deSEC.io
- Designate DNSaaS for Openstack
- Digital Ocean
- DNS Made Easy
- dnsHome.de
- DNSimple
- DNSPod (deprecated)
- Domain Offensive (do.de)
- Domeneshop
- DreamHost
- Duck DNS
- Dyn
- Dynu
- EasyDNS
- Efficient IP
- Epik
- Exoscale
- External program
- freemyip.com
- G-Core
- Gandi
- Gandi Live DNS (v5)
- Glesys
- Go Daddy
- Google Cloud
- Google Domains
- Hetzner
- Hosting.de
- Hosttech
- HTTP request
- http.net
- Hurricane Electric DNS
- HyperOne
- IBM Cloud (SoftLayer)
- IIJ DNS Platform Service
- Infoblox
- Infomaniak
- Internet Initiative Japan
- Internet.bs
- INWX
- Ionos
- IPv64
- iwantmyname
- Joker
- Joohoi's ACME-DNS
- Liara
- Linode (v4)
- Liquid Web
- Loopia
- LuaDNS
- Manual
- Metaname
- MyDNS.jp
- MythicBeasts
- Name.com
- Namecheap
- Namesilo
- NearlyFreeSpeech.NET
- Netcup
- Netlify
- Nicmanager
- NIFCloud
- Njalla
- Nodion
- NS1
- Open Telekom Cloud
- Oracle Cloud
- OVH
- plesk.com
- Porkbun
- PowerDNS
- Rackspace
- RcodeZero
- reg.ru
- RFC2136
- RimuHosting
- Sakura Cloud
- Scaleway
- Selectel
- Servercow
- Simply.com
- Sonic
- Stackpath
- Tencent Cloud DNS
- TransIP
- UKFast SafeDNS
- Ultradns
- Variomedia
- VegaDNS
- Vercel
- Versio.[nl|eu|uk]
- VinylDNS
- VK Cloud
- Vscale
- Vultr
- Webnames
- Websupport
- WEDOS
- Yandex 360
- Yandex Cloud
- Yandex PDD
- Zone.ee
- Zonomi
Para usarlo, simplemente tuve que seguir los siguientes pasos:
Primer paso: Instalar snapd
sudo apt update
sudo apt upgrade
sudo apt install snapd
# asegurarse de que está actualizado
sudo snap install core; sudo snap refresh core
Una vez instalado snapd, podemos instalar Certbot:
Segundo paso: instalar Certbot
Certbot es el software de Let's Encrypt para gestionar los certificados SSL gratuitos en nuestros servidores.
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Tercer paso: instalar dns multi
sudo snap install certbot-dns-multi
sudo snap set certbot trust-plugin-with-root=ok
sudo snap connect certbot:plugin certbot-dns-multi
Una vez la extensión está instalada, tenemos que elegir el proveedor al que queremos conectarnos de la lista superior, y configurar su uso. Para ello, nos vamos a https://go-acme.github.io/lego/dns/ y buscamos nuestro proveedor, en mi caso Vercel.
Creamos un fichero /etc/letsencrypt/vercel.ini
con el siguiente contenido:
VERCEL_API_TOKEN=xxxxxx # cambiar por tu token
dns_multi_provider=vercel
Guardamos el fichero y lo securizamos:
chmod 0600 /etc/letsencrypt/vercel.ini
Ahora ya podemos configurar nuestros certificados SSL usando Vercel o cualquier otro proveedor:
certbot certonly -a dns-multi \
--dns-multi-credentials=/etc/letsencrypt/vercel.ini \
-d "*.example.com" \
--dry-run
El parámetro --dry-run
va a simular la instalación del certificado pero sin instalarlo, así que puedes ejecutarlo sin problemas cambiando *.example.com
por tu dominio.