]> git.proxmox.com Git - mirror_acme.sh.git/blame - README.md
Merge pull request #3132 from jpbede/deploy-cleverreach
[mirror_acme.sh.git] / README.md
CommitLineData
d9f9477a 1# An ACME Shell script: acme.sh
e66337a1 2
c2214cd4 3![LetsEncrypt](https://github.com/acmesh-official/acme.sh/workflows/LetsEncrypt/badge.svg)
4![Shellcheck](https://github.com/acmesh-official/acme.sh/workflows/Shellcheck/badge.svg)
5![PebbleStrict](https://github.com/acmesh-official/acme.sh/workflows/PebbleStrict/badge.svg)
6![DockerHub](https://github.com/acmesh-official/acme.sh/workflows/Build%20DockerHub/badge.svg)
966c7449 7
319d49dd 8
72235a5f 9<a href="https://opencollective.com/acmesh" alt="Financial Contributors on Open Collective"><img src="https://opencollective.com/acmesh/all/badge.svg?label=financial+contributors" /></a>
10[![Join the chat at https://gitter.im/acme-sh/Lobby](https://badges.gitter.im/acme-sh/Lobby.svg)](https://gitter.im/acme-sh/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
1f5cafc2 11[![Docker stars](https://img.shields.io/docker/stars/neilpang/acme.sh.svg)](https://hub.docker.com/r/neilpang/acme.sh "Click to view the image on Docker Hub")
12[![Docker pulls](https://img.shields.io/docker/pulls/neilpang/acme.sh.svg)](https://hub.docker.com/r/neilpang/acme.sh "Click to view the image on Docker Hub")
966c7449 13
236e8cc9 14
5c295254 15
99dc89c0 16- An ACME protocol client written purely in Shell (Unix shell) language.
1bb90298 17- Full ACME protocol implementation.
79a2bed6 18- Support ACME v1 and ACME v2
19- Support ACME v2 wildcard certs
1bb90298
AL
20- Simple, powerful and very easy to use. You only need 3 minutes to learn it.
21- Bash, dash and sh compatible.
1bb90298
AL
22- Purely written in Shell with no dependencies on python or the official Let's Encrypt client.
23- Just one script to issue, renew and install your certificates automatically.
1f60d2bb 24- DOES NOT require `root/sudoer` access.
f3b43439 25- Docker friendly
0f48b156 26- IPv6 support
5d468f7c 27- Cron job notifications for renewal or error etc.
6c0ab5d2 28
9cf65e31 29It's probably the `easiest & smartest` shell script to automatically issue & renew the free certificates from Let's Encrypt.
6c0ab5d2 30
d795fac3 31Wiki: https://github.com/acmesh-official/acme.sh/wiki
de9fd54e 32
d795fac3 33For Docker Fans: [acme.sh :two_hearts: Docker ](https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker)
1bb90298 34
08998032 35Twitter: [@neilpangxa](https://twitter.com/neilpangxa)
36
37
d795fac3 38# [中文说明](https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E)
fe04faf6 39
bae50da7 40# Who:
6f1c72f5 41- [FreeBSD.org](https://blog.crashed.org/letsencrypt-in-freebsd-org/)
42- [ruby-china.org](https://ruby-china.org/topics/31983)
aaca0b6f 43- [Proxmox](https://pve.proxmox.com/wiki/Certificate_Management)
6f1c72f5 44- [pfsense](https://github.com/pfsense/FreeBSD-ports/pull/89)
45- [webfaction](https://community.webfaction.com/questions/19988/using-letsencrypt)
46- [Loadbalancer.org](https://www.loadbalancer.org/blog/loadbalancer-org-with-lets-encrypt-quick-and-dirty)
47- [discourse.org](https://meta.discourse.org/t/setting-up-lets-encrypt/40709)
26c669e4 48- [Centminmod](https://centminmod.com/letsencrypt-acmetool-https.html)
6f1c72f5 49- [splynx](https://forum.splynx.com/t/free-ssl-cert-for-splynx-lets-encrypt/297)
7ff52546 50- [archlinux](https://www.archlinux.org/packages/community/any/acme.sh)
9cf65e31 51- [opnsense.org](https://github.com/opnsense/plugins/tree/master/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient)
a5c1c303 52- [CentOS Web Panel](http://centos-webpanel.com/)
53- [lnmp.org](https://lnmp.org/)
d795fac3 54- [more...](https://github.com/acmesh-official/acme.sh/wiki/Blogs-and-tutorials)
1bb90298
AL
55
56# Tested OS
57
daf56504 58| NO | Status| Platform|
59|----|-------|---------|
a017fbad 60|1|[![MacOS](https://github.com/acmesh-official/acme.sh/workflows/LetsEncrypt/badge.svg)](https://github.com/acmesh-official/acme.sh/actions?query=workflow%3ALetsEncrypt)|Mac OSX
61|2|[![Windows](https://github.com/acmesh-official/acme.sh/workflows/LetsEncrypt/badge.svg)](https://github.com/acmesh-official/acme.sh/actions?query=workflow%3ALetsEncrypt)|Windows (cygwin with curl, openssl and crontab included)
62|3|[![FreeBSD](https://github.com/acmesh-official/acme.sh/workflows/LetsEncrypt/badge.svg)](https://github.com/acmesh-official/acme.sh/actions?query=workflow%3ALetsEncrypt)|FreeBSD
349429b7 63|4|[![Solaris](https://github.com/acmesh-official/acme.sh/workflows/LetsEncrypt/badge.svg)](https://github.com/acmesh-official/acme.sh/actions?query=workflow%3ALetsEncrypt)|Solaris
64|5|[![Ubuntu](https://github.com/acmesh-official/acme.sh/workflows/LetsEncrypt/badge.svg)](https://github.com/acmesh-official/acme.sh/actions?query=workflow%3ALetsEncrypt)| Ubuntu
65|6|[![](https://acmesh-official.github.io/acmetest/status/pfsense.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|pfsense
66|7|[![](https://acmesh-official.github.io/acmetest/status/openbsd.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|OpenBSD
a017fbad 67|8|[![](https://acmesh-official.github.io/acmetest/status/debian-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)| Debian
68|9|[![](https://acmesh-official.github.io/acmetest/status/centos-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|CentOS
69|10|[![](https://acmesh-official.github.io/acmetest/status/opensuse-leap-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|openSUSE
70|11|[![](https://acmesh-official.github.io/acmetest/status/alpine-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|Alpine Linux (with curl)
71|12|[![](https://acmesh-official.github.io/acmetest/status/archlinux-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|Archlinux
72|13|[![](https://acmesh-official.github.io/acmetest/status/fedora-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|fedora
73|14|[![](https://acmesh-official.github.io/acmetest/status/kalilinux-kali.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|Kali Linux
74|15|[![](https://acmesh-official.github.io/acmetest/status/oraclelinux-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|Oracle Linux
75|16|[![](https://acmesh-official.github.io/acmetest/status/proxmox.svg)](https://github.com/acmesh-official/letest#here-are-the-latest-status)| Proxmox: See Proxmox VE Wiki. Version [4.x, 5.0, 5.1](https://pve.proxmox.com/wiki/HTTPS_Certificate_Configuration_(Version_4.x,_5.0_and_5.1)#Let.27s_Encrypt_using_acme.sh), version [5.2 and up](https://pve.proxmox.com/wiki/Certificate_Management)
76|17|-----| Cloud Linux https://github.com/acmesh-official/acme.sh/issues/111
77|18|[![](https://acmesh-official.github.io/acmetest/status/mageia.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|Mageia
78|19|-----| OpenWRT: Tested and working. See [wiki page](https://github.com/acmesh-official/acme.sh/wiki/How-to-run-on-OpenWRT)
79|20|[![](https://acmesh-official.github.io/acmetest/status/gentoo-stage3-amd64.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|Gentoo Linux
aaca0b6f 80|21|[![](https://acmesh-official.github.io/acmetest/status/clearlinux-latest.svg)](https://github.com/acmesh-official/acmetest#here-are-the-latest-status)|ClearLinux
6c0ab5d2 81
d795fac3 82For all build statuses, check our [weekly build project](https://github.com/acmesh-official/acmetest):
6c0ab5d2 83
d795fac3 84https://github.com/acmesh-official/acmetest
07f4ec4f 85
c4094c68 86# Supported CA
87
88- Letsencrypt.org CA(default)
389518e1 89- [ZeroSSL.com CA](https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA)
d795fac3 90- [BuyPass.com CA](https://github.com/acmesh-official/acme.sh/wiki/BuyPass.com-CA)
693d692a 91- [Pebble strict Mode](https://github.com/letsencrypt/pebble)
2b45dba5 92
1bb90298 93# Supported modes
2c75b3fd 94
1bb90298
AL
95- Webroot mode
96- Standalone mode
c9baca79 97- Standalone tls-alpn mode
1bb90298 98- Apache mode
d5865989 99- Nginx mode
1bb90298 100- DNS mode
d795fac3 101- [DNS alias mode](https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode)
102- [Stateless mode](https://github.com/acmesh-official/acme.sh/wiki/Stateless-Mode)
2b45dba5 103
e8cce73a 104
df1c9d88 105# 1. How to install
6c0ab5d2 106
1bb90298 107### 1. Install online
6c0ab5d2 108
d795fac3 109Check this project: https://github.com/acmesh-official/get.acme.sh
b0515cf8 110
2b45dba5 111```bash
99dc89c0 112curl https://get.acme.sh | sh
90dda23f 113```
114
115Or:
2b45dba5
SF
116
117```bash
99dc89c0 118wget -O - https://get.acme.sh | sh
90dda23f 119```
120
121
1bb90298 122### 2. Or, Install from git
2b45dba5 123
1bb90298 124Clone this project and launch installation:
2b45dba5
SF
125
126```bash
d795fac3 127git clone https://github.com/acmesh-official/acme.sh.git
2b45dba5 128cd ./acme.sh
6cc11ffb 129./acme.sh --install
6c0ab5d2 130```
90dda23f 131
2b45dba5
SF
132You `don't have to be root` then, although `it is recommended`.
133
d795fac3 134Advanced Installation: https://github.com/acmesh-official/acme.sh/wiki/How-to-install
d9ded9f3 135
2b45dba5 136The installer will perform 3 actions:
7a894c4c 137
1bb90298
AL
1381. Create and copy `acme.sh` to your home dir (`$HOME`): `~/.acme.sh/`.
139All certs will be placed in this folder too.
1402. Create alias for: `acme.sh=~/.acme.sh/acme.sh`.
1413. Create daily cron job to check and renew the certs if needed.
2b45dba5
SF
142
143Cron entry example:
144
145```bash
1460 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
147```
acc1e53a 148
1bb90298
AL
149After the installation, you must close the current terminal and reopen it to make the alias take effect.
150
151Ok, you are ready to issue certs now.
acc1e53a 152
6c0ab5d2 153Show help message:
2b45dba5 154
e27dfbb0 155```sh
39c8f79f 156root@v1:~# acme.sh -h
6c0ab5d2 157```
1bb90298
AL
158
159# 2. Just issue a cert
2400e41f 160
2b45dba5 161**Example 1:** Single domain.
2400e41f 162
2b45dba5 163```bash
caa2e45a 164acme.sh --issue -d example.com -w /home/wwwroot/example.com
6c0ab5d2 165```
2b45dba5 166
4c38fec3 167or:
168
169```bash
170acme.sh --issue -d example.com -w /home/username/public_html
171```
172
173or:
174
175```bash
176acme.sh --issue -d example.com -w /var/www/html
177```
178
2b45dba5
SF
179**Example 2:** Multiple domains in the same cert.
180
181```bash
1bb90298 182acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
6c0ab5d2 183```
2400e41f 184
4c38fec3 185The parameter `/home/wwwroot/example.com` or `/home/username/public_html` or `/var/www/html` is the web root folder where you host your website files. You **MUST** have `write access` to this folder.
6c0ab5d2 186
1bb90298
AL
187Second argument **"example.com"** is the main domain you want to issue the cert for.
188You must have at least one domain there.
6c0ab5d2 189
caa2e45a 190You must point and bind all the domains to the same webroot dir: `/home/wwwroot/example.com`.
6c0ab5d2 191
e27dfbb0 192The certs will be placed in `~/.acme.sh/example.com/`
6c0ab5d2 193
e27dfbb0 194The certs will be renewed automatically every **60** days.
6c0ab5d2 195
d795fac3 196More examples: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
a63b05a9 197
198
e27dfbb0 199# 3. Install the cert to Apache/Nginx etc.
a63b05a9 200
e27dfbb0 201After the cert is generated, you probably want to install/copy the cert to your Apache/Nginx or other servers.
1bb90298 202You **MUST** use this command to copy the certs to the target files, **DO NOT** use the certs files in **~/.acme.sh/** folder, they are for internal use only, the folder structure may change in the future.
2b45dba5 203
1bb90298 204**Apache** example:
2b45dba5 205```bash
cd9c3a79 206acme.sh --install-cert -d example.com \
5c539af7 207--cert-file /path/to/certfile/in/apache/cert.pem \
208--key-file /path/to/keyfile/in/apache/key.pem \
209--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
4743171b 210--reloadcmd "service apache2 force-reload"
3c33cdfa 211```
212
1bb90298 213**Nginx** example:
3c33cdfa 214```bash
cd9c3a79 215acme.sh --install-cert -d example.com \
5c539af7 216--key-file /path/to/keyfile/in/nginx/key.pem \
217--fullchain-file /path/to/fullchain/nginx/cert.pem \
4743171b 218--reloadcmd "service nginx force-reload"
6c0ab5d2 219```
7a894c4c 220
a63b05a9 221Only the domain is required, all the other parameters are optional.
222
e27dfbb0 223The ownership and permission info of existing files are preserved. You can pre-create the files to define the ownership and permission.
fe600441 224
e27dfbb0 225Install/copy the cert/key to the production Apache or Nginx path.
1bb90298 226
61852447 227The cert will be renewed every **60** days by default (which is configurable). Once the cert is renewed, the Apache/Nginx service will be reloaded automatically by the command: `service apache2 force-reload` or `service nginx force-reload`.
7a894c4c 228
6c0ab5d2 229
58f75313 230**Please take care: The reloadcmd is very important. The cert can be automatically renewed, but, without a correct 'reloadcmd' the cert may not be flushed to your server(like nginx or apache), then your website will not be able to show renewed cert in 60 days.**
bae50da7 231
df1c9d88 232# 4. Use Standalone server to issue cert
6c0ab5d2 233
1bb90298 234**(requires you to be root/sudoer or have permission to listen on port 80 (TCP))**
072290f2 235
1bb90298 236Port `80` (TCP) **MUST** be free to listen on, otherwise you will be prompted to free it and try again.
2b45dba5
SF
237
238```bash
caa2e45a 239acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
072290f2
N
240```
241
d795fac3 242More examples: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
a63b05a9 243
c9baca79 244# 5. Use Standalone ssl server to issue cert
e22bcf7c 245
c9baca79 246**(requires you to be root/sudoer or have permission to listen on port 443 (TCP))**
247
248Port `443` (TCP) **MUST** be free to listen on, otherwise you will be prompted to free it and try again.
249
250```bash
251acme.sh --issue --alpn -d example.com -d www.example.com -d cp.example.com
252```
253
d795fac3 254More examples: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
c9baca79 255
256
257# 6. Use Apache mode
2b45dba5 258
1bb90298 259**(requires you to be root/sudoer, since it is required to interact with Apache server)**
2b45dba5 260
e8defd82 261If you are running a web server, it is recommended to use the `Webroot mode`.
a63b05a9 262
d5865989 263Particularly, if you are running an Apache server, you can use Apache mode instead. This mode doesn't write any files to your web root folder.
2c75b3fd 264
1bb90298 265Just set string "apache" as the second argument and it will force use of apache plugin automatically.
2c75b3fd 266
e27dfbb0 267```sh
1bb90298 268acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
2c75b3fd 269```
a63b05a9 270
84d80e93 271**This apache mode is only to issue the cert, it will not change your apache config files.
d5865989 272You will need to configure your website config files to use the cert by yourself.
f8662c9b 273We don't want to mess with your apache server, don't worry.**
d5865989 274
d795fac3 275More examples: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
2c75b3fd 276
c9baca79 277# 7. Use Nginx mode
1bb90298 278
9d725af6 279**(requires you to be root/sudoer, since it is required to interact with Nginx server)**
280
e8defd82 281If you are running a web server, it is recommended to use the `Webroot mode`.
9d725af6 282
283Particularly, if you are running an nginx server, you can use nginx mode instead. This mode doesn't write any files to your web root folder.
284
285Just set string "nginx" as the second argument.
286
287It will configure nginx server automatically to verify the domain and then restore the nginx config to the original version.
288
289So, the config is not changed.
290
e27dfbb0 291```sh
9d725af6 292acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
293```
294
84d80e93 295**This nginx mode is only to issue the cert, it will not change your nginx config files.
d5865989 296You will need to configure your website config files to use the cert by yourself.
f8662c9b 297We don't want to mess with your nginx server, don't worry.**
d5865989 298
d795fac3 299More examples: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
9d725af6 300
c9baca79 301# 8. Automatic DNS API integration
a947dbc6 302
1bb90298 303If your DNS provider supports API access, we can use that API to automatically issue the certs.
6c0ab5d2 304
1bb90298 305You don't have to do anything manually!
ab497961 306
236acbd6 307### Currently acme.sh supports most of the dns providers:
308
d795fac3 309https://github.com/acmesh-official/acme.sh/wiki/dnsapi
ab497961 310
c9baca79 311# 9. Use DNS manual mode:
e27dfbb0 312
d795fac3 313See: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode first.
46ac97a3 314
f190de39 315If your dns provider doesn't support any api access, you can add the txt record by hand.
e27dfbb0 316
317```bash
318acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
319```
320
321You should get an output like below:
322
323```sh
324Add the following txt record:
325Domain:_acme-challenge.example.com
326Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
327
328Add the following txt record:
329Domain:_acme-challenge.www.example.com
330Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
331
332Please add those txt records to the domains. Waiting for the dns to take effect.
333```
334
335Then just rerun with `renew` argument:
336
337```bash
338acme.sh --renew -d example.com
339```
340
341Ok, it's done.
342
343**Take care, this is dns manual mode, it can not be renewed automatically. you will have to add a new txt record to your domain by your hand when you renew your cert.**
344
345**Please use dns api mode instead.**
ab497961 346
c9baca79 347# 10. Issue ECC certificates
2b45dba5 348
1bb90298 349`Let's Encrypt` can now issue **ECDSA** certificates.
2b45dba5 350
1bb90298 351And we support them too!
1add47a6 352
d5865989 353Just set the `keylength` parameter with a prefix `ec-`.
2b45dba5 354
1add47a6 355For example:
9e6c4208 356
bcbecff6 357### Single domain ECC certificate
9e6c4208 358
2b45dba5 359```bash
1bb90298 360acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
1add47a6 361```
2b45dba5 362
1bb90298 363### SAN multi domain ECC certificate
2b45dba5
SF
364
365```bash
1bb90298 366acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
9e6c4208
N
367```
368
d5865989 369Please look at the `keylength` parameter above.
1add47a6 370
371Valid values are:
372
2b45dba5
SF
3731. **ec-256 (prime256v1, "ECDSA P-256")**
3742. **ec-384 (secp384r1, "ECDSA P-384")**
3753. **ec-521 (secp521r1, "ECDSA P-521", which is not supported by Let's Encrypt yet.)**
1add47a6 376
df1c9d88 377
df1c9d88 378
c9baca79 379# 11. Issue Wildcard certificates
df1c9d88 380
e27dfbb0 381It's simple, just give a wildcard domain as the `-d` parameter.
df1c9d88 382
e27dfbb0 383```sh
f2aa5c02 384acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
df1c9d88 385```
e27dfbb0 386
387
388
c9baca79 389# 12. How to renew the certs
e27dfbb0 390
391No, you don't need to renew the certs manually. All the certs will be renewed automatically every **60** days.
392
393However, you can also force to renew a cert:
394
395```sh
1bb90298 396acme.sh --renew -d example.com --force
df1c9d88 397```
398
399or, for ECC cert:
1bb90298 400
e27dfbb0 401```sh
1bb90298 402acme.sh --renew -d example.com --force --ecc
df1c9d88 403```
404
1bb90298 405
c9baca79 406# 13. How to stop cert renewal
a4964b90 407
e27dfbb0 408To stop renewal of a cert, you can execute the following to remove the cert from the renewal list:
a4964b90 409
e27dfbb0 410```sh
a4964b90
FW
411acme.sh --remove -d example.com [--ecc]
412```
413
e27dfbb0 414The cert/key file is not removed from the disk.
a4964b90 415
e27dfbb0 416You can remove the respective directory (e.g. `~/.acme.sh/example.com`) by yourself.
a4964b90 417
e27dfbb0 418
c9baca79 419# 14. How to upgrade `acme.sh`
1bb90298 420
329174b6 421acme.sh is in constant development, so it's strongly recommended to use the latest code.
df1c9d88 422
423You can update acme.sh to the latest code:
1bb90298 424
e27dfbb0 425```sh
df1c9d88 426acme.sh --upgrade
427```
428
1bb90298
AL
429You can also enable auto upgrade:
430
e27dfbb0 431```sh
1bb90298 432acme.sh --upgrade --auto-upgrade
59649e9b 433```
1bb90298
AL
434
435Then **acme.sh** will be kept up to date automatically.
59649e9b 436
437Disable auto upgrade:
1bb90298 438
e27dfbb0 439```sh
1bb90298 440acme.sh --upgrade --auto-upgrade 0
59649e9b 441```
442
1bb90298 443
c9baca79 444# 15. Issue a cert from an existing CSR
8371b030 445
d795fac3 446https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
8371b030 447
448
5d468f7c 449# 16. Send notifications in cronjob
450
d795fac3 451https://github.com/acmesh-official/acme.sh/wiki/notify
5d468f7c 452
453
454# 17. Under the Hood
6c0ab5d2 455
99dc89c0 456Speak ACME language using shell, directly to "Let's Encrypt".
6c0ab5d2
N
457
458TODO:
459
1bb90298 460
5d468f7c 461# 18. Acknowledgments
1bb90298 462
63f04675
N
4631. Acme-tiny: https://github.com/diafygi/acme-tiny
4642. ACME protocol: https://github.com/ietf-wg-acme/acme
63f04675 465
1bb90298 466
683592fa 467## Contributors
468
469### Code Contributors
470
471This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
d795fac3 472<a href="https://github.com/acmesh-official/acme.sh/graphs/contributors"><img src="https://opencollective.com/acmesh/contributors.svg?width=890&button=false" /></a>
683592fa 473
474### Financial Contributors
475
476Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/acmesh/contribute)]
477
478#### Individuals
479
480<a href="https://opencollective.com/acmesh"><img src="https://opencollective.com/acmesh/individuals.svg?width=890"></a>
481
482#### Organizations
483
484Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/acmesh/contribute)]
485
486<a href="https://opencollective.com/acmesh/organization/0/website"><img src="https://opencollective.com/acmesh/organization/0/avatar.svg"></a>
487<a href="https://opencollective.com/acmesh/organization/1/website"><img src="https://opencollective.com/acmesh/organization/1/avatar.svg"></a>
488<a href="https://opencollective.com/acmesh/organization/2/website"><img src="https://opencollective.com/acmesh/organization/2/avatar.svg"></a>
489<a href="https://opencollective.com/acmesh/organization/3/website"><img src="https://opencollective.com/acmesh/organization/3/avatar.svg"></a>
490<a href="https://opencollective.com/acmesh/organization/4/website"><img src="https://opencollective.com/acmesh/organization/4/avatar.svg"></a>
491<a href="https://opencollective.com/acmesh/organization/5/website"><img src="https://opencollective.com/acmesh/organization/5/avatar.svg"></a>
492<a href="https://opencollective.com/acmesh/organization/6/website"><img src="https://opencollective.com/acmesh/organization/6/avatar.svg"></a>
493<a href="https://opencollective.com/acmesh/organization/7/website"><img src="https://opencollective.com/acmesh/organization/7/avatar.svg"></a>
494<a href="https://opencollective.com/acmesh/organization/8/website"><img src="https://opencollective.com/acmesh/organization/8/avatar.svg"></a>
495<a href="https://opencollective.com/acmesh/organization/9/website"><img src="https://opencollective.com/acmesh/organization/9/avatar.svg"></a>
496
5d468f7c 497# 19. License & Others
6c0ab5d2
N
498
499License is GPLv3
500
1d06c947 501Please Star and Fork me.
6c0ab5d2 502
d795fac3 503[Issues](https://github.com/acmesh-official/acme.sh/issues) and [pull requests](https://github.com/acmesh-official/acme.sh/pulls) are welcome.
6c0ab5d2
N
504
505
5d468f7c 506# 20. Donate
cb6f6229 507Your donation makes **acme.sh** better:
6c0ab5d2 508
43d3b51b 5091. PayPal/Alipay(支付宝)/Wechat(微信): [https://donate.acme.sh/](https://donate.acme.sh/)
84d80e93 510
d795fac3 511[Donate List](https://github.com/acmesh-official/acme.sh/wiki/Donate-list)