ACME.SH(1)

πŸ“¦
version 3.1.4+~cs0.0.20260716 Β· 3 versions
, in ubuntu stonking

πŸŽ€ ACME.SH πŸŽ€

okay bestie, sit down, hydrate, because this is acme.sh β€” User Commands, manual section 1, and she is an icon. πŸ’…


✨ NAME ✨

acme.sh β€” literally just acme.sh. that's the name. that's the whole name. iconic behaviour, no notes. πŸ‘‘


🌸 SYNOPSIS 🌸

acme.sh <command> ... [parameters ...]

πŸ’– DESCRIPTION πŸ’–

the source of truth lives at https://github.com/acmesh-official/acme.sh and this is version v3.1.4. ✨

πŸ¦‹ Commands: πŸ¦‹

  • -h, --help β€” show this help message.
  • -v, --version β€” show version info.
  • --install β€” install acme.sh onto your system.
  • --uninstall β€” uninstall acme.sh, and uninstall the cron job too. bye bestie 🫢
  • --upgrade β€” upgrade acme.sh to the latest code from https://github.com/acmesh-official/acme.sh.
  • --issue β€” issue a cert.
  • --deploy β€” deploy the cert to your server.
  • -i, --install-cert β€” install the issued cert to Apache/nginx or literally any other server.
  • -r, --renew β€” renew a cert.
  • --renew-all β€” renew all the certs. all of them. yes really. πŸ”₯
  • --revoke β€” revoke a cert.
  • --remove β€” remove the cert from the list of certs known to acme.sh.
  • --list β€” list all the certs.
  • --info β€” show the acme.sh configs, or the configs for a domain with the [-d domain] parameter.
  • --to-pkcs12 β€” export the certificate and key to a pfx file.
  • --to-pkcs8 β€” convert to pkcs8 format.
  • --sign-csr β€” issue a cert from an existing csr.
  • --show-csr β€” show the content of a csr.
  • -ccr, --create-csr β€” create CSR, professional use.
  • --create-domain-key β€” create an domain private key, professional use.
  • --update-account β€” update account info.
  • --update-account-key β€” rotate account key.
  • --register-account β€” register account key.
  • --deactivate-account β€” deactivate the account.
  • --make-dns-persist-value β€” print the DNS TXT record(s) to enable persistent DNS validation (draft-ietf-acme-dns-persist-01). use with -d <domain>.
  • --create-account-key β€” create an account private key, professional use.
  • --install-cronjob β€” install the cron job to renew certs, you don't need to call this. the install command can automatically install the cron job.
  • --uninstall-cronjob β€” uninstall the cron job. the uninstall command can do this automatically.
  • --cron β€” run cron job to renew all the certs.
  • --set-notify β€” set the cron notification hook, level or mode.
  • --deactivate β€” deactivate the domain authz, professional use.
  • --set-default-ca β€” used with --server, set the default CA to use. see: https://github.com/acmesh-official/acme.sh/wiki/Server
  • --set-default-chain β€” set the default preferred chain for a CA. see: https://github.com/acmesh-official/acme.sh/wiki/Preferred-Chain

🌈 Parameters: 🌈

  • -d, --domain <domain.tld> β€” specifies a domain, used to issue, renew or revoke etc.
  • --challenge-alias <domain.tld> β€” the challenge domain alias for DNS alias mode. see: https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode
  • --domain-alias <domain.tld> β€” the domain alias for DNS alias mode. see: https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode
  • --preferred-chain <chain> β€” if the CA offers multiple certificate chains, prefer the chain with an issuer matching this Subject Common Name. if there's no match, the default offered chain will be used. (default: empty) see: https://github.com/acmesh-official/acme.sh/wiki/Preferred-Chain
  • --cert-profile, --certificate-profile <profile> β€” if the CA offers profiles, select the desired profile. see: https://github.com/acmesh-official/acme.sh/wiki/Profile-selection
  • --valid-to <date-time> β€” request the NotAfter field of the cert. see: https://github.com/acmesh-official/acme.sh/wiki/Validity
  • --valid-from <date-time> β€” request the NotBefore field of the cert. see: https://github.com/acmesh-official/acme.sh/wiki/Validity
  • -f, --force β€” force install, force cert renewal or override sudo restrictions.
  • --staging, --test β€” use staging server, for testing.
  • --debug [0|1|2|3] β€” output debug info. defaults to 2 if the argument is omitted.
  • --output-insecure β€” output all the sensitive messages. by default all the credentials/sensitive messages are hidden from the output/debug/log for security. πŸ™ˆ
  • -w, --webroot <directory> β€” specifies the web root folder for web root mode.
  • --standalone β€” use standalone mode.
  • --alpn β€” use standalone alpn mode.
  • --stateless β€” use stateless mode. see: https://github.com/acmesh-official/acme.sh/wiki/Stateless-Mode
  • --apache β€” use Apache mode.
  • --dns [dns_hook] β€” use dns manual mode or dns api. defaults to manual mode when the argument is omitted. see: https://github.com/acmesh-official/acme.sh/wiki/dnsapi
  • --dns-persist β€” use dns-persist-01 validation (draft-ietf-acme-dns-persist-01). requires the persistent _validation-persist TXT record to already exist. use --make-dns-persist-value to print the value to add.
  • --dnssleep <seconds> β€” the time in seconds to wait for all the txt records to propagate in dns api mode. it's not necessary to use this by default, acme.sh polls dns status by DOH automatically. ✨
  • -k, --keylength <bits> β€” specifies the domain key length: 2048, 3072, 4096, 8192 or ec-256 (default), ec-384, ec-521.
  • -ak, --accountkeylength <bits> β€” specifies the account key length: 2048, 3072, 4096, 8192 or ec-256 (default), ec-384, ec-521.
  • --log [file] β€” specifies the log file. defaults to "~/.acme.sh/acme.sh.log" if the argument is omitted.
  • --log-level <1|2> β€” specifies the log level, default is 2.
  • --syslog <0|3|6|7> β€” syslog level, 0: disable syslog, 3: error, 6: info, 7: debug.
  • --eab-kid <eab_key_id> β€” Key Identifier for External Account Binding.
  • --eab-hmac-key <eab_hmac_key> β€” HMAC key for External Account Binding.
  • --dns-persist-wildcard β€” used with --make-dns-persist-value. adds policy=wildcard to the generated TXT record so the issuer is also authorized for wildcards and subdomains (draft-ietf-acme-dns-persist-01).
  • --dns-persist-ca-name <name> β€” used with --make-dns-persist-value. use the given CA identity domain (e.g. ssl.com) as the issuer-domain-name in the TXT record. if omitted, the identities are read from the ACME directory's caaIdentities field and one record is printed per identity.
  • --dns-persist-days <N> β€” used with --make-dns-persist-value. add a persistUntil field to the TXT record so the record self-expires N days from now (the CA will refuse new validations against the record after that time). if omitted, the record has no expiry.

these parameters are to install the cert to nginx/Apache or any other server after issue/renew a cert:

  • --cert-file <file> β€” path to copy the cert file to after issue/renew.
  • --key-file <file> β€” path to copy the key file to after issue/renew.
  • --ca-file <file> β€” path to copy the intermediate cert file to after issue/renew.
  • --fullchain-file <file> β€” path to copy the fullchain cert file to after issue/renew.
  • --reloadcmd <command> β€” command to execute after issue/renew to reload the server.
  • --server <server_uri> β€” ACME Directory Resource URI. (default: https://acme.zerossl.com/v2/DV90) see: https://github.com/acmesh-official/acme.sh/wiki/Server
  • --accountconf <file> β€” specifies a customized account config file.
  • --home <directory> β€” specifies the home dir for acme.sh.
  • --cert-home <directory> β€” specifies the home dir to save all the certs.
  • --config-home <directory> β€” specifies the home dir to save all the configurations.
  • --useragent <string> β€” specifies the user agent string. it will be saved for future use too.
  • -m, --email <email> β€” specifies the account email, only valid for the --install and --update-account command. multiple emails can be given as a comma-separated list: a@example.com,b@example.com
  • --accountkey <file> β€” specifies the account key path, only valid for the --install command.
  • --days <ndays> β€” specifies the days to renew the cert when using the --issue command. the default value is 30 days. a negative value renews that many days before the cert expiry. negative values could be used to specify a number of days relative to the expiration date of the certificate.
  • --httpport <port> β€” specifies the standalone listening port. only valid if the server is behind a reverse proxy or load balancer.
  • --tlsport <port> β€” specifies the standalone tls listening port. only valid if the server is behind a reverse proxy or load balancer.
  • --local-address <ip> β€” specifies the standalone/tls server listening address, in case you have multiple ip addresses.
  • --listraw β€” only used for the --list command, list the certs in raw format.
  • -se, --stop-renew-on-error β€” only valid for the --renew-all command. stop if one cert has error in renewal.
  • --treat-skip-as-success β€” only valid for the --renew-all command. treat skipped certs as success, return 0 instead of 2.
  • --insecure β€” do not check the server certificate, in some devices, the api server's certificate may not be trusted.
  • --ca-bundle <file> β€” specifies the path to the CA certificate bundle to verify api server's certificate.
  • --ca-path <directory> β€” specifies directory containing CA certificates in PEM format, used by wget or curl.
  • --no-cron β€” only valid for the --install command, which means: do not install the default cron job. in this case, the certs will not be renewed automatically. 😭
  • --no-profile β€” only valid for the --install command, which means: do not install aliases to user profile.
  • --no-color β€” do not output color text.
  • --force-color β€” force output of color text. useful for non-interactive use with the aha tool for HTML E-Mails.
  • --ecc β€” specifies use of the ECC cert. only valid for --install-cert, --renew, --remove , --revoke, --deploy, --to-pkcs8, --to-pkcs12 and --create-csr.
  • --csr <file> β€” specifies the input csr.
  • --pre-hook <command> β€” command to be run before obtaining any certificates.
  • --post-hook <command> β€” a command that gets run after we try to get or renew certs. It runs no matter what, bestie β€” success, failure, the whole vibe. πŸ’…
  • --renew-hook <command> β€” runs after each cert that renewed successfully. every single one. one at a time. slay. ✨
  • --deploy-hook <hookname> β€” this is the hook file that deploys the cert. that's the whole job. πŸŽ€
  • --extended-key-usage <string> β€” you can hand-write the CSR extended key usage value yourself instead of letting it be chosen. the default is serverAuth,clientAuth. πŸ”₯
  • --ocsp, --ocsp-must-staple β€” generate the OCSP-Must-Staple extension. iconic behavior honestly. πŸ‘‘
  • --always-force-new-domain-key β€” generates a brand new domain key on renewal. and listen: if you don't pass this, the domain key is not changed by default. lowkey important. πŸ’–
  • --auto-upgrade [0|1] β€” only valid for the --upgrade command, and it says whether to upgrade automatically in the future. if you leave the argument out, it defaults to 1. πŸ¦‹
  • --listen-v4 β€” forces the standalone/tls server to listen at ipv4.
  • --listen-v6 β€” forces the standalone/tls server to listen at ipv6. pick your fighter fr fr. 🌈
  • --request-v4 β€” forces client requests to use ipv4 to connect to the CA server.
  • --request-v6 β€” forces client requests to use ipv6 to connect to the CA server. 😀
  • --openssl-bin <file> β€” lets you point at a custom openssl bin location. main character openssl energy. 🌸
  • --use-wget β€” forces it to use wget, for when you've got both curl and wget installed and you need wget specifically. πŸ’œ
  • --yes-I-know-dns-manual-mode-enough-go-ahead-please β€” forces use of dns manual mode. yes the flag name is a whole mood, no you cannot shorten it. see: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode 🫢
  • -b, --branch <branch> β€” only valid for the --upgrade command; tells it the branch name to upgrade to. 🧚
  • --notify-level <0|1|2|3> β€” sets the notification level. default value is 2. so here's the girl math:
    • 0: disabled, no notification will be sent. not a single one. πŸ™ˆ
    • 1: send notifications only when there is an error. 😭
    • 2: send notifications when a cert is successfully renewed, or there is an error.
    • 3: send notifications when a cert is skipped, renewed, or error. like, everything. all of it. ⭐
  • --notify-mode <0|1> β€” sets the notification mode. default value is 0.
    • 0: Bulk mode. send all the domain's notifications in one message (mail). one big text message basically. πŸ’–
    • 1: Cert mode. send a message for every single cert.
  • --notify-hook <hookname> β€” sets the notify hook. πŸ’Œ
  • --notify-source <server name> β€” sets the server name in the notification message.
  • --revoke-reason <0-10> β€” the reason for revocation, and you use it alongside the --revoke command. see: https://github.com/acmesh-official/acme.sh/wiki/revokecert πŸ’€
  • --password <password> β€” adds a password to the exported pfx or pkcs8 file. use it with --to-pkcs12 or --to-pkcs8. keep that password safe bestie, i'm begging. πŸ”

πŸ“– SEE ALSO

The full documentation for acme.sh is maintained as a Texinfo manual. If the info and acme.sh programs are properly installed at your site, the command

info acme.sh

should give you access to the complete manual. go read it, it's giving ✨ educated ✨. πŸ¦‹


and that's the whole page, babe β€” you officially know acme.sh. this was from acme.sh 3.1.4+~cs0.0.20260716, dated July 2026, and it's the ACME.SH(1) manual page. go renew some certs, you absolute legend πŸ’…πŸ‘‘πŸŒΈ

πŸ“¦ where this page comes from