Un cliente de protocolo ACME escrito exclusivamente en lenguaje Shell (Unix shell).
Implementación completa del protocolo ACME.
Soporte de certificados ECDSA
Admite certificados SAN y comodines
Sencillo, potente y muy fácil de usar. Sólo necesitas 3 minutos para aprenderlo.
Compatible con Bash, Dash y sh.
Escrito puramente en Shell sin dependencias de Python.
Un solo script para emitir, renovar e instalar sus certificados automáticamente.
NO requiere acceso root/sudoer
.
Docker listo
Listo para IPv6
Notificaciones de trabajo cron para renovación o error, etc.
Probablemente sea el script de shell easiest & smartest
para emitir y renovar automáticamente los certificados gratuitos.
Wiki: https://github.com/acmesh-official/acme.sh/wiki
Para fanáticos de Docker: acme.sh? Estibador
Gorjeo: @neilpangxa
FreeBSD.org
ruby-china.org
Proxmox
pfsentido
Loadbalancer.org
discurso.org
centminmod
esplendor
opnsense.org
Panel web CentOS
lnmp.org
más...
NO | Estado | Plataforma |
---|---|---|
1 | MacOSX | |
2 | Windows (cygwin con curl, openssl y crontab incluidos) | |
3 | FreeBSD | |
4 | Solaris | |
5 | ubuntu | |
6 | N / A | pfsentido |
7 | OpenBSD | |
8 | NetBSD | |
9 | DragonFlyBSD | |
10 | omnios | |
11 | Debian | |
12 | CentOS | |
13 | openSUSE | |
14 | Alpine Linux (con curl) | |
15 | archlinux | |
16 | sombrero de fieltro | |
17 | KaliLinux | |
18 | Oráculo Linux | |
19 | magia | |
10 | Gentoo Linux | |
11 | ClaroLinux | |
22 | ----- | Linux en la nube #111 |
23 | ----- | OpenWRT: Probado y funcionando. Ver página wiki |
24 | Proxmox: consulte Proxmox VE Wiki. Versión 4.x, 5.0, 5.1, versión 5.2 y superiores |
Consulte nuestro proyecto de prueba:
https://github.com/acmesh-official/acmetest
ZeroSSL.com CA (predeterminado)
Letsencrypt.org CA
BuyPass.com CA
SSL.com CA
CA pública de Google.com
Modo estricto de guijarros
Cualquier otra CA compatible con RFC8555
Modo raíz web
Modo independiente
Modo tls-alpn independiente
modo apache
modo nginx
modo DNS
Modo de alias DNS
Modo sin estado
Consulte este proyecto: https://github.com/acmesh-official/get.acme.sh
rizo https://get.acme.sh | sh -s correo electró[email protected]
O:
wget -O-https://get.acme.sh | sh -s correo electró[email protected]
Clona este proyecto e inicia la instalación:
clon de git https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --install -m [email protected]
don't have to be root
entonces, aunque it is recommended
.
Instalación avanzada: https://github.com/acmesh-official/acme.sh/wiki/How-to-install
El instalador realizará 3 acciones:
Cree y copie acme.sh
en su directorio de inicio ( $HOME
): ~/.acme.sh/
. Todos los certificados también se colocarán en esta carpeta.
Cree un alias para: acme.sh=~/.acme.sh/acme.sh
.
Cree un trabajo cron diario para verificar y renovar los certificados si es necesario.
Ejemplo de entrada cron:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
Después de la instalación, debes cerrar la terminal actual y volver a abrirla para que el alias surta efecto.
Ok, ya estás listo para emitir certificados.
Mostrar mensaje de ayuda:
raíz@v1:~# acme.sh -h
Ejemplo 1: dominio único.
acme.sh --issue -d ejemplo.com -w /home/wwwroot/example.com
o:
acme.sh --issue -d ejemplo.com -w /home/nombre de usuario/public_html
o:
acme.sh --issue -d ejemplo.com -w /var/www/html
Ejemplo 2: varios dominios en el mismo certificado.
acme.sh --issue -d ejemplo.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
El parámetro /home/wwwroot/example.com
o /home/username/public_html
o /var/www/html
es la carpeta raíz web donde aloja los archivos de su sitio web. DEBE tener write access
a esta carpeta.
El segundo argumento , "ejemplo.com", es el dominio principal para el que desea emitir el certificado. Debes tener al menos un dominio allí.
Debe apuntar y vincular todos los dominios al mismo directorio webroot: /home/wwwroot/example.com
.
Los certificados se colocarán en ~/.acme.sh/example.com/
Los certificados se renovarán automáticamente cada 60 días.
Más ejemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Una vez generado el certificado, probablemente desee instalar/copiar el certificado en su Apache/Nginx u otros servidores. DEBE usar este comando para copiar los certificados a los archivos de destino, NO use los archivos de certificados en la carpeta ~/.acme.sh/ , son solo para uso interno, la estructura de la carpeta puede cambiar en el futuro.
Ejemplo de apache :
acme.sh --install-cert -d ejemplo.com --cert-file /ruta/al/certfile/in/apache/cert.pem --key-file /ruta/al/keyfile/in/apache/key.pem --fullchain-file /ruta/a/fullchain/certfile/apache/fullchain.pem --reloadcmd "servicio apache2 forzar recarga"
Ejemplo de Nginx :
acme.sh --install-cert -d ejemplo.com --key-file /ruta/al/keyfile/in/nginx/key.pem --fullchain-file /ruta/a/fullchain/nginx/cert.pem --reloadcmd "servicio nginx forzar recarga"
Sólo se requiere el dominio, todos los demás parámetros son opcionales.
Se conserva la información de propiedad y permisos de los archivos existentes. Puede crear previamente los archivos para definir la propiedad y el permiso.
Instale/copie el certificado/clave en la ruta de producción de Apache o Nginx.
El certificado se renovará cada 60 días de forma predeterminada (lo cual es configurable). Una vez que se renueva el certificado, el servicio Apache/Nginx se recargará automáticamente mediante el comando: service apache2 force-reload
o service nginx force-reload
.
Tenga cuidado: el reloadcmd es muy importante. El certificado se puede renovar automáticamente, pero, sin un 'reloadcmd' correcto, es posible que el certificado no se descargue en su servidor (como nginx o apache), entonces su sitio web no podrá mostrar el certificado renovado en 60 días.
(requiere ser root/sudoer o tener permiso para escuchar en el puerto 80 (TCP))
El puerto 80
(TCP) DEBE estar libre para escuchar; de lo contrario, se le pedirá que lo libere y vuelva a intentarlo.
acme.sh --issue --standalone -d ejemplo.com -d www.ejemplo.com -d cp.ejemplo.com
Más ejemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(requiere ser root/sudoer o tener permiso para escuchar en el puerto 443 (TCP))
El puerto 443
(TCP) DEBE estar libre para escuchar; de lo contrario, se le pedirá que lo libere y vuelva a intentarlo.
acme.sh --issue --alpn -d ejemplo.com -d www.ejemplo.com -d cp.ejemplo.com
Más ejemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(requiere que seas root/sudoer, ya que es necesario para interactuar con el servidor Apache)
Si está ejecutando un servidor web, se recomienda utilizar el Webroot mode
.
En particular, si está ejecutando un servidor Apache, puede utilizar el modo Apache. Este modo no escribe ningún archivo en su carpeta raíz web.
Simplemente establezca la cadena "apache" como segundo argumento y forzará el uso del complemento de Apache automáticamente.
acme.sh --issue --apache -d ejemplo.com -d www.ejemplo.com -d cp.ejemplo.com
Este modo de Apache es solo para emitir el certificado, no cambiará sus archivos de configuración de Apache. Deberá configurar los archivos de configuración de su sitio web para utilizar el certificado usted mismo. No queremos meternos con su servidor Apache, no se preocupe.
Más ejemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(requiere que seas root/sudoer, ya que es necesario para interactuar con el servidor Nginx)
Si está ejecutando un servidor web, se recomienda utilizar el Webroot mode
.
En particular, si está ejecutando un servidor nginx, puede usar el modo nginx en su lugar. Este modo no escribe ningún archivo en su carpeta raíz web.
Simplemente configure la cadena "nginx" como segundo argumento.
Configurará el servidor nginx automáticamente para verificar el dominio y luego restaurará la configuración de nginx a la versión original.
Entonces, la configuración no se cambia.
acme.sh --issue --nginx -d ejemplo.com -d www.ejemplo.com -d cp.ejemplo.com
Este modo nginx es solo para emitir el certificado, no cambiará sus archivos de configuración de nginx. Deberá configurar los archivos de configuración de su sitio web para utilizar el certificado usted mismo. No queremos meternos con su servidor nginx, no se preocupe.
Más ejemplos: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
Si su proveedor de DNS admite el acceso API, podemos usar esa API para emitir los certificados automáticamente.
¡No tienes que hacer nada manualmente!
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
Consulte: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode primero.
Si su proveedor de DNS no admite ningún acceso a la API, puede agregar el registro de texto manualmente.
acme.sh --issue --dns -d ejemplo.com -d www.ejemplo.com -d cp.ejemplo.com
Debería obtener un resultado como el siguiente:
Agregue el siguiente registro de texto: Dominio:_acme-challenge.ejemplo.com Valor de texto: 9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c Agregue el siguiente registro de texto: Dominio:_acme-challenge.www.ejemplo.com Valor de texto: 9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Agregue esos registros de texto a los dominios. Esperando a que el dns surta efecto.
Luego simplemente vuelva a ejecutar con el argumento renew
:
acme.sh --renovar -d ejemplo.com
Bien, ya está.
Tenga cuidado, este es el modo manual de DNS, no se puede renovar automáticamente. Tendrá que agregar un nuevo registro de texto a su dominio manualmente cuando renueve su certificado.
Utilice el modo dns api en su lugar.
Simplemente configure el parámetro keylength
con un prefijo ec-
.
Por ejemplo:
acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
Mire el parámetro keylength
anterior.
Los valores válidos son:
ec-256 (prime256v1, "ECDSA P-256", que es el tipo de clave predeterminado)
ec-384 (secp384r1, "ECDSA P-384")
ec-521 (secp521r1, "ECDSA P-521", que aún no es compatible con Let's Encrypt).
2048 (RSA2048)
3072 (RSA3072)
4096 (RSA4096)
Es simple, simplemente proporcione un dominio comodín como parámetro -d
.
acme.sh --issue -d ejemplo.com -d '*.ejemplo.com' --dns dns_cf
No, no es necesario renovar los certificados manualmente. Todos los certificados se renovarán automáticamente cada 60 días.
Sin embargo, también puedes obligar a renovar un certificado:
acme.sh --renovar -d ejemplo.com --force
o, para certificado ECC:
acme.sh --renew -d ejemplo.com --force --ecc
Para detener la renovación de un certificado, puede ejecutar lo siguiente para eliminar el certificado de la lista de renovación:
acme.sh --remove -d ejemplo.com [--ecc]
El archivo de certificado/clave no se elimina del disco.
Puede eliminar el directorio respectivo (por ejemplo, ~/.acme.sh/example.com
) usted mismo.
acme.sh
acme.sh está en constante desarrollo, por lo que se recomienda encarecidamente utilizar el código más reciente.
Puede actualizar acme.sh al código más reciente:
acme.sh --actualizar
También puede habilitar la actualización automática:
acme.sh --actualización --actualización automática
Entonces acme.sh se mantendrá actualizado automáticamente.
Deshabilitar la actualización automática:
acme.sh --actualización --actualización automática 0
https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
https://github.com/acmesh-official/acme.sh/wiki/notify
Hable el idioma ACME usando Shell, directamente a "Let's Encrypt".
HACER:
Acme-tiny: https://github.com/diafygi/acme-tiny
Protocolo ACME: https://github.com/ietf-wg-acme/acme
Este proyecto existe gracias a todas las personas que contribuyen.
Conviértase en un contribuyente financiero y ayúdenos a sostener nuestra comunidad. [Contribuir]
Apoye este proyecto con su organización. Su logotipo aparecerá aquí con un enlace a su sitio web. [Contribuir]
La licencia es GPLv3
Por favor, estrella y bifurcame.
Los problemas y las solicitudes de extracción son bienvenidos.
Tu donación mejora acme.sh :
PayPal/Alipay(支付宝)/Wechat(微信): https://donate.acme.sh/
Lista de donaciones