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