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