Você está preocupado porque o certificado curinga letencrypt não pode ser renovado (renovado) automaticamente usando a ferramenta certbot? Esta ferramenta pode ajudar!
Independentemente da aplicação ou renovação, desde que seja um certificado curinga, o nome de domínio do requerente só pode ser verificado usando dns-01, o que significa que o operador do certbot deve adicionar manualmente os registros DNS TXT.
Se você escrever um Cron (como 1 1 */1 * * root certbot-auto promote) para renovar automaticamente o certificado curinga, o Cron não poderá adicionar automaticamente o registro TXT, então a operação de renovação falhará.
O certbot fornece um gancho que permite escrever um script Shell para chamar a interface API do provedor de serviços DNS e adicionar registros TXT dinamicamente, eliminando a necessidade de intervenção manual.
Entre os exemplos de plug-ins e ganchos fornecidos oficialmente pelo certbot, não há exemplos para servidores DNS domésticos, então escrevi essa ferramenta, que atualmente oferece suporte a Alibaba Cloud DNS , Tencent Cloud DNS , Huawei Cloud NDS e GoDaddy (certbot não tem equivalente oficial).
Vários PRs foram mesclados recentemente e não foram testados. Se você tiver alguma dúvida, envie-me um feedback.
1: Baixar
$ git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
$ cd certbot-letencrypt-wildcardcertificates-alydns-au
$ chmod 0777 au.sh
2: Configuração
(1)domínio.ini
Se o arquivo domain.ini não contiver seu nome de domínio raiz, adicione-o você mesmo.
(2) Chave de API DNS:
O que significa esta chave de API? Como você precisa operar os registros Alibaba Cloud DNS e Tencent Cloud DNS por meio da API, você precisa obter a chave API do provedor de serviços de nome de domínio e, em seguida, configurá-la no arquivo au.sh:
(3) Selecione o ambiente operacional
Atualmente, a ferramenta oferece suporte a cinco ambientes operacionais e cenários, que são chamados por meio de arquivos hook e parâmetros:
Escolha qualquer shell de gancho (incluindo parâmetros correspondentes) de acordo com seu próprio ambiente de servidor e provedor de serviços de nome de domínio. Veja abaixo o uso específico.
3: Solicite um certificado
Teste para erros:
$ ./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"
Depuração: você pode encontrar uma série de problemas ao operar a API DNS, como permissões insuficientes de token de API. Se encontrar problemas relacionados, você pode verificar /var/log/certd.log.
Explicação importante: --manual-auth-hook e --manual-cleanup-hook têm três parâmetros:
Por exemplo, se você quiser escolher o ambiente Python, você pode alterar a entrada --manual-auth-hook para "/script directory/au.sh python aly add" e a entrada --manual-cleanup-hook para "/ diretório de script/au.sh python aly clean"
Depois de confirmar que está correto, execute (remova o 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"
Explicação dos parâmetros (você não precisa se preocupar com isso):
Se você deseja solicitar certificados curinga para vários nomes de domínio (combinados em um certificado, também chamado de certificado curinga SAN ), basta inserir vários parâmetros -d diretamente, por exemplo:
$ ./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: Renove todos os certificados da 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 um determinado certificado
Primeiro veja quantos certificados existem na máquina:
$ ./certbot-auto certificates
Você pode ver muitos certificados, conforme mostrado na figura:
Lembre-se do nome do certificado, como simplehttps.com, e execute o seguinte comando de atualização:
$ ./certbot-auto renew --cert-name simplehttps.com --manual-auth-hook "/脚本目录/au.sh php aly add" --manual-cleanup-hook "/脚本目录/au.sh php aly clean"
Edite o arquivo /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"
Se a máquina certbot for a mesma que executa serviços da web (como nginx, apache), depois de renovar o certificado com sucesso, você poderá iniciar o servidor da web correspondente e executar o seguinte 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: Só é recomendado executar desta forma em uma única máquina. Se você deseja sincronizar o certificado para vários servidores web, você precisa de outra solução atualmente em desenvolvimento, o objetivo principal é sincronizar o certificado com o servidor do cluster.
Código QR da conta oficial:
"Uma introdução aprofundada ao HTTPS: dos princípios à prática" Código QR: