¿Le preocupa que el certificado comodín letencrypt no se pueda renovar (renovar) automáticamente utilizando la herramienta certbot? ¡Esta herramienta puede ayudar!
Independientemente de la solicitud o renovación, siempre que sea un certificado comodín, el nombre de dominio del solicitante solo se puede verificar mediante dns-01, lo que significa que el operador del certbot debe agregar manualmente registros DNS TXT.
Si escribe un Cron (como 1 1 */1 * * root certbot-auto renew) para renovar automáticamente el certificado comodín, Cron no puede agregar automáticamente el registro TXT, por lo que la operación de renovación fallará.
certbot proporciona un enlace que le permite escribir un script de Shell para llamar a la interfaz API del proveedor de servicios DNS y agregar dinámicamente registros TXT, eliminando la necesidad de intervención manual.
Entre los ejemplos de complementos y enlaces proporcionados oficialmente por certbot, no hay ejemplos para servidores DNS nacionales, por lo que escribí una herramienta de este tipo, que actualmente admite Alibaba Cloud DNS , Tencent Cloud DNS , Huawei Cloud NDS y GoDaddy (certbot no tiene equivalente oficial).
Varios RP se han fusionado recientemente y no se han probado. Si tiene alguna pregunta, envíeme sus comentarios. ¡Gracias!
1: Descargar
$ git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
$ cd certbot-letencrypt-wildcardcertificates-alydns-au
$ chmod 0777 au.sh
2: Configuración
(1)dominio.ini
Si el archivo domain.ini no contiene su nombre de dominio raíz, agréguelo usted mismo.
(2) Clave API de DNS:
¿Qué significa esta clave API? Dado que necesita operar los registros DNS de Alibaba Cloud DNS y Tencent Cloud DNS a través de la API, debe obtener la clave API del proveedor de servicios de nombres de dominio y luego configurarla en el archivo au.sh:
(3) Seleccione el entorno operativo
Actualmente, la herramienta admite cinco entornos y escenarios operativos, a los que se llama mediante archivos de enlace y parámetros:
Elija cualquier shell de enlace (incluidos los parámetros correspondientes) según su propio entorno de servidor y proveedor de servicios de nombres de dominio. Consulte a continuación el uso específico.
3: Solicitar un certificado
Prueba de errores:
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Depuración: puede encontrar una serie de problemas al operar la API de DNS, como permisos de token de API insuficientes. Si encuentra problemas relacionados, puede consultar /var/log/certd.log.
Explicación importante: --manual-auth-hook y --manual-cleanup-hook tienen tres parámetros:
Por ejemplo, si desea elegir el entorno Python, puede cambiar la entrada --manual-auth-hook a "/script directorio/au.sh python aly add" y la entrada --manual-cleanup-hook a "/ directorio de script/au.sh python aly clean"
Después de confirmar que es correcto, ejecute (elimine el parámetro --dry-run):
# 实际申请
$ ./certbot-auto certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Explicación de parámetros (no necesita preocuparse por eso):
Si desea solicitar certificados comodín para varios nombres de dominio (combinados en un solo certificado, también llamado certificado comodín SAN ), simplemente ingrese varios parámetros -d directamente, por ejemplo:
$ ./certbot-auto certonly -d *.example.com -d *.example.org -d www.example.cn --manual --preferred-challenges dns --dry-run --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
1: renovar todos los certificados de la máquina
$ ./certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
2: Renovar un determinado certificado
Primero mire cuántos certificados hay en la máquina:
$ ./certbot-auto certificates
Puede ver muchos certificados, como se muestra en la figura:
Recuerde el nombre del certificado, como simplehttps.com, y luego ejecute el siguiente comando de actualización:
$ ./certbot-auto renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Edite el archivo /etc/crontab:
#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Si la máquina certbot es la misma máquina que ejecuta servicios web (como nginx, apache), luego de renovar exitosamente el certificado, puede iniciar el servidor web correspondiente y ejecutar el siguiente crontab:
# 注意只有成功renew证书,才会重新启动nginx
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --deploy-hook "service nginx restart" --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Nota: Solo se recomienda ejecutar de esta manera en una sola máquina. Si desea sincronizar el certificado con varios servidores web, necesita otra solución actualmente en desarrollo, el objetivo principal es sincronizar el certificado con el servidor del clúster.
Código QR de la cuenta oficial:
Código QR "Una introducción en profundidad a HTTPS: de los principios a la práctica":