Um cliente de protocolo ACME escrito exclusivamente em linguagem Shell (Unix Shell).
Implementação completa do protocolo ACME.
Apoie certificados ECDSA
Suporta certificados SAN e curinga
Simples, poderoso e muito fácil de usar. Você só precisa de 3 minutos para aprender.
Compatível com Bash, Dash e Sh.
Escrito puramente em Shell, sem dependências de python.
Apenas um script para emitir, renovar e instalar seus certificados automaticamente.
NÃO requer acesso root/sudoer
.
Docker pronto
Preparado para IPv6
Notificações de cron job para renovação ou erro, etc.
É provavelmente o script de shell easiest & smartest
para emitir e renovar automaticamente os certificados gratuitos.
Wiki: https://github.com/acmesh-official/acme.sh/wiki
Para fãs do Docker: acme.sh? Docker
Twitter: @neilpangxa
FreeBSD.org
ruby-china.org
Proxmox
pfsense
Loadbalancer.org
discurso.org
Centminmod
splynx
opnsense.org
Painel Web CentOS
lnmp.org
mais...
NÃO | Status | Plataforma |
---|---|---|
1 | Mac OSX | |
2 | Windows (cygwin com curl, openssl e crontab incluídos) | |
3 | FreeBSD | |
4 | Solaris | |
5 | Ubuntu | |
6 | N / D | pfsense |
7 | OpenBSD | |
8 | NetBSD | |
9 | LibélulaBSD | |
10 | Omnios | |
11 | Debian | |
12 | CentOS | |
13 | openSUSE | |
14 | Alpine Linux (com curl) | |
15 | Archlinux | |
16 | fedora | |
17 | KaliLinux | |
18 | OracleLinux | |
19 | Mageia | |
10 | GentooLinux | |
11 | ClaroLinux | |
22 | ----- | Nuvem Linux #111 |
23 | ----- | OpenWRT: testado e funcionando. Veja a página wiki |
24 | Proxmox: Consulte Proxmox VE Wiki. Versão 4.x, 5.0, 5.1, versão 5.2 e superior |
Confira nosso projeto de teste:
https://github.com/acmesh-official/acmetest
CA ZeroSSL.com (padrão)
Letsencrypt.org CA
BuyPass.com CA
SSL.com CA
CA pública do Google.com
Modo estrito Pebble
Qualquer outra CA compatível com RFC8555
Modo Webroot
Modo autônomo
Modo tls-alpn autônomo
Modo Apache
Modo Nginx
Modo DNS
Modo de alias DNS
Modo sem estado
Verifique este projeto: https://github.com/acmesh-official/get.acme.sh
enrolar https://get.acme.sh | sh -s [email protected]
Ou:
wget -O - https://get.acme.sh | sh -s [email protected]
Clone este projeto e inicie a instalação:
clone git https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --install -m [email protected]
Você don't have to be root
então, embora it is recommended
.
Instalação avançada: https://github.com/acmesh-official/acme.sh/wiki/How-to-install
O instalador realizará 3 ações:
Crie e copie acme.sh
para seu diretório inicial ( $HOME
): ~/.acme.sh/
. Todos os certificados também serão colocados nesta pasta.
Crie um alias para: acme.sh=~/.acme.sh/acme.sh
.
Crie um cron job diário para verificar e renovar os certificados, se necessário.
Exemplo de entrada Cron:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
Após a instalação, você deve fechar o terminal atual e reabri-lo para que o alias tenha efeito.
Ok, você está pronto para emitir certificados agora.
Mostrar mensagem de ajuda:
root@v1:~# acme.sh -h
Exemplo 1: Domínio único.
acme.sh --issue -d exemplo.com -w /home/wwwroot/example.com
ou:
acme.sh --issue -d exemplo.com -w /home/nomedeusuário/public_html
ou:
acme.sh --issue -d exemplo.com -w /var/www/html
Exemplo 2: Vários domínios no mesmo certificado.
acme.sh --issue -d exemplo.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
O parâmetro /home/wwwroot/example.com
ou /home/username/public_html
ou /var/www/html
é a pasta raiz da web onde você hospeda os arquivos do seu site. Você DEVE ter write access
a esta pasta.
O segundo argumento "example.com" é o domínio principal para o qual você deseja emitir o certificado. Você deve ter pelo menos um domínio lá.
Você deve apontar e vincular todos os domínios ao mesmo diretório webroot: /home/wwwroot/example.com
.
Os certificados serão colocados em ~/.acme.sh/example.com/
Os certificados serão renovados automaticamente a cada 60 dias.
Mais exemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Depois que o certificado for gerado, você provavelmente desejará instalar/copiar o certificado para seu Apache/Nginx ou outros servidores. Você DEVE usar este comando para copiar os certificados para os arquivos de destino, NÃO use os arquivos de certificados na pasta ~/.acme.sh/ , eles são apenas para uso interno, a estrutura da pasta pode mudar no futuro.
Exemplo Apache :
acme.sh --install-cert -d exemplo.com --cert-file /caminho/para/certfile/in/apache/cert.pem --key-file /caminho/para/keyfile/in/apache/key.pem --fullchain-file /caminho/para/fullchain/certfile/apache/fullchain.pem --reloadcmd "serviço apache2 forçar recarga"
Exemplo Nginx :
acme.sh --install-cert -d exemplo.com --key-file /caminho/para/keyfile/in/nginx/key.pem --fullchain-file /caminho/para/fullchain/nginx/cert.pem --reloadcmd "serviço nginx forçar recarga"
Apenas o domínio é obrigatório, todos os outros parâmetros são opcionais.
As informações de propriedade e permissão dos arquivos existentes são preservadas. Você pode pré-criar os arquivos para definir a propriedade e a permissão.
Instale/copie o certificado/chave para o caminho de produção do Apache ou Nginx.
O certificado será renovado a cada 60 dias por padrão (o que é configurável). Assim que o certificado for renovado, o serviço Apache/Nginx será recarregado automaticamente pelo comando: service apache2 force-reload
ou service nginx force-reload
.
Por favor, tome cuidado: O reloadcmd é muito importante. O certificado pode ser renovado automaticamente, mas, sem um 'reloadcmd' correto, o certificado pode não ser liberado para o seu servidor (como nginx ou apache), então seu site não poderá mostrar o certificado renovado em 60 dias.
(requer que você seja root/sudoer ou tenha permissão para escutar na porta 80 (TCP))
A porta 80
(TCP) DEVE estar livre para escutar, caso contrário, você será solicitado a liberá-la e tentar novamente.
acme.sh --issue --standalone -d exemplo.com -d www.example.com -d cp.example.com
Mais exemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(requer que você seja root/sudoer ou tenha permissão para escutar na porta 443 (TCP))
A porta 443
(TCP) DEVE estar livre para escutar, caso contrário, você será solicitado a liberá-la e tentar novamente.
acme.sh --issue --alpn -d exemplo.com -d www.example.com -d cp.example.com
Mais exemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(requer que você seja root/sudoer, pois é necessário interagir com o servidor Apache)
Se você estiver executando um servidor web, é recomendado usar o Webroot mode
.
Particularmente, se você estiver executando um servidor Apache, poderá usar o modo Apache. Este modo não grava nenhum arquivo na pasta raiz da web.
Basta definir a string "apache" como o segundo argumento e isso forçará o uso do plugin apache automaticamente.
acme.sh --issue --apache -d exemplo.com -d www.example.com -d cp.example.com
Este modo apache serve apenas para emitir o certificado, não alterará seus arquivos de configuração do apache. Você precisará configurar os arquivos de configuração do seu site para usar o certificado sozinho. Não queremos mexer no seu servidor Apache, não se preocupe.
Mais exemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(requer que você seja root/sudoer, pois é necessário interagir com o servidor Nginx)
Se você estiver executando um servidor web, é recomendado usar o Webroot mode
.
Particularmente, se você estiver executando um servidor nginx, poderá usar o modo nginx. Este modo não grava nenhum arquivo na pasta raiz da web.
Basta definir a string "nginx" como o segundo argumento.
Ele configurará o servidor nginx automaticamente para verificar o domínio e, em seguida, restaurará a configuração do nginx para a versão original.
Portanto, a configuração não foi alterada.
acme.sh --issue --nginx -d exemplo.com -d www.example.com -d cp.example.com
Este modo nginx serve apenas para emitir o certificado, não alterará seus arquivos de configuração do nginx. Você precisará configurar os arquivos de configuração do seu site para usar o certificado sozinho. Não queremos mexer no seu servidor nginx, não se preocupe.
Mais exemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Se o seu provedor de DNS oferecer suporte ao acesso à API, poderemos usar essa API para emitir automaticamente os certificados.
Você não precisa fazer nada manualmente!
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
Consulte: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode primeiro.
Se o seu provedor de DNS não suportar nenhum acesso à API, você poderá adicionar o registro txt manualmente.
acme.sh --issue --dns -d exemplo.com -d www.example.com -d cp.example.com
Você deve obter uma saída como abaixo:
Adicione o seguinte registro txt: Domínio:_acme-challenge.example.com Valor de texto:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c Adicione o seguinte registro txt: Domínio:_acme-challenge.www.example.com Valor de texto:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Adicione esses registros txt aos domínios. Aguardando o DNS entrar em vigor.
Em seguida, basta executar novamente com o argumento renew
:
acme.sh --renew -d exemplo.com
Ok, está feito.
Cuidado, este é o modo manual do DNS, não pode ser renovado automaticamente. você terá que adicionar um novo registro txt ao seu domínio manualmente ao renovar seu certificado.
Em vez disso, use o modo API DNS.
Basta definir o parâmetro keylength
com um prefixo ec-
.
Por exemplo:
acme.sh --issue -w /home/wwwroot/example.com -d exemplo.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d exemplo.com -d www.example.com --keylength ec-256
Por favor, observe o parâmetro keylength
acima.
Os valores válidos são:
ec-256 (prime256v1, "ECDSA P-256", que é o tipo de chave padrão)
ec-384 (secp384r1, "ECDSA P-384")
ec-521 (secp521r1, "ECDSA P-521", que ainda não é compatível com Let's Encrypt.)
2048 (RSA2048)
3072 (RSA3072)
4096 (RSA4096)
É simples, basta fornecer um domínio curinga como parâmetro -d
.
acme.sh --issue -d exemplo.com -d '*.example.com' --dns dns_cf
Não, você não precisa renovar os certificados manualmente. Todos os certificados serão renovados automaticamente a cada 60 dias.
No entanto, você também pode forçar a renovação de um certificado:
acme.sh --renew -d exemplo.com --force
ou, para certificado ECC:
acme.sh --renew -d exemplo.com --force --ecc
Para interromper a renovação de um certificado, você pode executar o seguinte para remover o certificado da lista de renovação:
acme.sh --remove -d exemplo.com [--ecc]
O arquivo de certificado/chave não é removido do disco.
Você pode remover o respectivo diretório (por exemplo, ~/.acme.sh/example.com
) sozinho.
acme.sh
acme.sh está em constante desenvolvimento, por isso é altamente recomendável usar o código mais recente.
Você pode atualizar acme.sh para o código mais recente:
acme.sh --atualizar
Você também pode ativar a atualização automática:
acme.sh --upgrade --auto-upgrade
Então acme.sh será mantido atualizado automaticamente.
Desative a atualização automática:
acme.sh --upgrade --auto-upgrade 0
https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existente-CSR
https://github.com/acmesh-official/acme.sh/wiki/notify
Fale a linguagem ACME usando shell, diretamente em "Let's Encrypt".
PENDÊNCIA:
Acme-tiny: https://github.com/diafygi/acme-tiny
Protocolo ACME: https://github.com/ietf-wg-acme/acme
Este projeto existe graças a todas as pessoas que contribuem.
Torne-se um contribuidor financeiro e ajude-nos a sustentar nossa comunidade. [Contribuir]
Apoie este projeto com sua organização. Seu logotipo aparecerá aqui com um link para seu site. [Contribuir]
A licença é GPLv3
Por favor, Star e Fork me.
Problemas e solicitações pull são bem-vindos.
Sua doação torna o acme.sh melhor:
PayPal/Alipay(支付宝)/Wechat(微信): https://donate.acme.sh/
Lista de doações