]> git.proxmox.com Git - mirror_acme.sh.git/blame - README.md
Add zone.ee (zone.eu) DNS API (#2151)
[mirror_acme.sh.git] / README.md
CommitLineData
a2e62f8e 1# An ACME Shell script: acme.sh [![Build Status](https://travis-ci.org/Neilpang/acme.sh.svg?branch=master)](https://travis-ci.org/Neilpang/acme.sh)
319d49dd
TGB
2
3[![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
6c0ab5d2 16
9cf65e31 17It's probably the `easiest & smartest` shell script to automatically issue & renew the free certificates from Let's Encrypt.
6c0ab5d2 18
6cc11ffb 19Wiki: https://github.com/Neilpang/acme.sh/wiki
de9fd54e 20
f3b43439 21For Docker Fans: [acme.sh :two_hearts: Docker ](https://github.com/Neilpang/acme.sh/wiki/Run-acme.sh-in-docker)
1bb90298 22
08998032 23Twitter: [@neilpangxa](https://twitter.com/neilpangxa)
24
25
fe04faf6 26# [中文说明](https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E)
27
bae50da7 28# Who:
6f1c72f5 29- [FreeBSD.org](https://blog.crashed.org/letsencrypt-in-freebsd-org/)
30- [ruby-china.org](https://ruby-china.org/topics/31983)
31- [Proxmox](https://pve.proxmox.com/wiki/HTTPS_Certificate_Configuration_(Version_4.x_and_newer))
32- [pfsense](https://github.com/pfsense/FreeBSD-ports/pull/89)
33- [webfaction](https://community.webfaction.com/questions/19988/using-letsencrypt)
34- [Loadbalancer.org](https://www.loadbalancer.org/blog/loadbalancer-org-with-lets-encrypt-quick-and-dirty)
35- [discourse.org](https://meta.discourse.org/t/setting-up-lets-encrypt/40709)
26c669e4 36- [Centminmod](https://centminmod.com/letsencrypt-acmetool-https.html)
6f1c72f5 37- [splynx](https://forum.splynx.com/t/free-ssl-cert-for-splynx-lets-encrypt/297)
7ff52546 38- [archlinux](https://www.archlinux.org/packages/community/any/acme.sh)
9cf65e31 39- [opnsense.org](https://github.com/opnsense/plugins/tree/master/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient)
a5c1c303 40- [CentOS Web Panel](http://centos-webpanel.com/)
41- [lnmp.org](https://lnmp.org/)
63ec05a6 42- [more...](https://github.com/Neilpang/acme.sh/wiki/Blogs-and-tutorials)
1bb90298
AL
43
44# Tested OS
45
daf56504 46| NO | Status| Platform|
47|----|-------|---------|
620f8613 48|1|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/ubuntu-latest.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)| Ubuntu
49|2|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/debian-latest.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)| Debian
50|3|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/centos-latest.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|CentOS
990d46d6 51|4|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/windows-cygwin.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|Windows (cygwin with curl, openssl and crontab included)
620f8613 52|5|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/freebsd.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|FreeBSD
53|6|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/pfsense.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|pfsense
54|7|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/opensuse-latest.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|openSUSE
55|8|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/alpine-latest.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|Alpine Linux (with curl)
56|9|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/base-archlinux.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|Archlinux
57|10|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/fedora-latest.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|fedora
58|11|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/kalilinux-kali-linux-docker.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|Kali Linux
59|12|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/oraclelinux-latest.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|Oracle Linux
60|13|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/proxmox.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)| Proxmox https://pve.proxmox.com/wiki/HTTPSCertificateConfiguration#Let.27s_Encrypt_using_acme.sh
63c6a3b0 61|14|-----| Cloud Linux https://github.com/Neilpang/le/issues/111
620f8613 62|15|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/openbsd.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|OpenBSD
199067e8 63|16|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/mageia.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|Mageia
3ad08e95 64|17|-----| OpenWRT: Tested and working. See [wiki page](https://github.com/Neilpang/acme.sh/wiki/How-to-run-on-OpenWRT)
527dd31c 65|18|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/solaris.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|SunOS/Solaris
5961d443 66|19|[![](https://cdn.rawgit.com/Neilpang/acmetest/master/status/gentoo-stage3-amd64.svg)](https://github.com/Neilpang/letest#here-are-the-latest-status)|Gentoo Linux
b28a3db3 67|20|[![Build Status](https://travis-ci.org/Neilpang/acme.sh.svg?branch=master)](https://travis-ci.org/Neilpang/acme.sh)|Mac OSX
6c0ab5d2 68
aa66dfff 69For all build statuses, check our [weekly build project](https://github.com/Neilpang/acmetest):
6c0ab5d2 70
6cc11ffb 71https://github.com/Neilpang/acmetest
07f4ec4f 72
c4094c68 73# Supported CA
74
75- Letsencrypt.org CA(default)
76- [BuyPass.com CA](https://github.com/Neilpang/acme.sh/wiki/BuyPass.com-CA)
81f0189d 77- [Pebble strict Mode](https://github.com/letsencrypt/pebble)
2b45dba5 78
1bb90298 79# Supported modes
2c75b3fd 80
1bb90298
AL
81- Webroot mode
82- Standalone mode
c9baca79 83- Standalone tls-alpn mode
1bb90298 84- Apache mode
d5865989 85- Nginx mode
1bb90298 86- DNS mode
875625b1 87- [DNS alias mode](https://github.com/Neilpang/acme.sh/wiki/DNS-alias-mode)
7c488b59 88- [Stateless mode](https://github.com/Neilpang/acme.sh/wiki/Stateless-Mode)
2b45dba5 89
e8cce73a 90
df1c9d88 91# 1. How to install
6c0ab5d2 92
1bb90298 93### 1. Install online
6c0ab5d2 94
5bdad844 95Check this project: https://github.com/Neilpang/get.acme.sh
b0515cf8 96
2b45dba5 97```bash
99dc89c0 98curl https://get.acme.sh | sh
90dda23f 99```
100
101Or:
2b45dba5
SF
102
103```bash
99dc89c0 104wget -O - https://get.acme.sh | sh
90dda23f 105```
106
107
1bb90298 108### 2. Or, Install from git
2b45dba5 109
1bb90298 110Clone this project and launch installation:
2b45dba5
SF
111
112```bash
6cc11ffb 113git clone https://github.com/Neilpang/acme.sh.git
2b45dba5 114cd ./acme.sh
6cc11ffb 115./acme.sh --install
6c0ab5d2 116```
90dda23f 117
2b45dba5
SF
118You `don't have to be root` then, although `it is recommended`.
119
1bb90298 120Advanced Installation: https://github.com/Neilpang/acme.sh/wiki/How-to-install
d9ded9f3 121
2b45dba5 122The installer will perform 3 actions:
7a894c4c 123
1bb90298
AL
1241. Create and copy `acme.sh` to your home dir (`$HOME`): `~/.acme.sh/`.
125All certs will be placed in this folder too.
1262. Create alias for: `acme.sh=~/.acme.sh/acme.sh`.
1273. Create daily cron job to check and renew the certs if needed.
2b45dba5
SF
128
129Cron entry example:
130
131```bash
1320 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
133```
acc1e53a 134
1bb90298
AL
135After the installation, you must close the current terminal and reopen it to make the alias take effect.
136
137Ok, you are ready to issue certs now.
acc1e53a 138
6c0ab5d2 139Show help message:
2b45dba5 140
e27dfbb0 141```sh
39c8f79f 142root@v1:~# acme.sh -h
6c0ab5d2 143```
1bb90298
AL
144
145# 2. Just issue a cert
2400e41f 146
2b45dba5 147**Example 1:** Single domain.
2400e41f 148
2b45dba5 149```bash
caa2e45a 150acme.sh --issue -d example.com -w /home/wwwroot/example.com
6c0ab5d2 151```
2b45dba5 152
4c38fec3 153or:
154
155```bash
156acme.sh --issue -d example.com -w /home/username/public_html
157```
158
159or:
160
161```bash
162acme.sh --issue -d example.com -w /var/www/html
163```
164
2b45dba5
SF
165**Example 2:** Multiple domains in the same cert.
166
167```bash
1bb90298 168acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
6c0ab5d2 169```
2400e41f 170
4c38fec3 171The 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 172
1bb90298
AL
173Second argument **"example.com"** is the main domain you want to issue the cert for.
174You must have at least one domain there.
6c0ab5d2 175
caa2e45a 176You must point and bind all the domains to the same webroot dir: `/home/wwwroot/example.com`.
6c0ab5d2 177
e27dfbb0 178The certs will be placed in `~/.acme.sh/example.com/`
6c0ab5d2 179
e27dfbb0 180The certs will be renewed automatically every **60** days.
6c0ab5d2 181
6cc11ffb 182More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
a63b05a9 183
184
e27dfbb0 185# 3. Install the cert to Apache/Nginx etc.
a63b05a9 186
e27dfbb0 187After the cert is generated, you probably want to install/copy the cert to your Apache/Nginx or other servers.
1bb90298 188You **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 189
1bb90298 190**Apache** example:
2b45dba5 191```bash
cd9c3a79 192acme.sh --install-cert -d example.com \
5c539af7 193--cert-file /path/to/certfile/in/apache/cert.pem \
194--key-file /path/to/keyfile/in/apache/key.pem \
195--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
4743171b 196--reloadcmd "service apache2 force-reload"
3c33cdfa 197```
198
1bb90298 199**Nginx** example:
3c33cdfa 200```bash
cd9c3a79 201acme.sh --install-cert -d example.com \
5c539af7 202--key-file /path/to/keyfile/in/nginx/key.pem \
203--fullchain-file /path/to/fullchain/nginx/cert.pem \
4743171b 204--reloadcmd "service nginx force-reload"
6c0ab5d2 205```
7a894c4c 206
a63b05a9 207Only the domain is required, all the other parameters are optional.
208
e27dfbb0 209The ownership and permission info of existing files are preserved. You can pre-create the files to define the ownership and permission.
fe600441 210
e27dfbb0 211Install/copy the cert/key to the production Apache or Nginx path.
1bb90298 212
61852447 213The 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 214
6c0ab5d2 215
58f75313 216**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 217
df1c9d88 218# 4. Use Standalone server to issue cert
6c0ab5d2 219
1bb90298 220**(requires you to be root/sudoer or have permission to listen on port 80 (TCP))**
072290f2 221
1bb90298 222Port `80` (TCP) **MUST** be free to listen on, otherwise you will be prompted to free it and try again.
2b45dba5
SF
223
224```bash
caa2e45a 225acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
072290f2
N
226```
227
6cc11ffb 228More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
a63b05a9 229
c9baca79 230# 5. Use Standalone ssl server to issue cert
e22bcf7c 231
c9baca79 232**(requires you to be root/sudoer or have permission to listen on port 443 (TCP))**
233
234Port `443` (TCP) **MUST** be free to listen on, otherwise you will be prompted to free it and try again.
235
236```bash
237acme.sh --issue --alpn -d example.com -d www.example.com -d cp.example.com
238```
239
240More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
241
242
243# 6. Use Apache mode
2b45dba5 244
1bb90298 245**(requires you to be root/sudoer, since it is required to interact with Apache server)**
2b45dba5 246
1bb90298 247If you are running a web server, Apache or Nginx, it is recommended to use the `Webroot mode`.
a63b05a9 248
d5865989 249Particularly, 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 250
1bb90298 251Just set string "apache" as the second argument and it will force use of apache plugin automatically.
2c75b3fd 252
e27dfbb0 253```sh
1bb90298 254acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
2c75b3fd 255```
a63b05a9 256
84d80e93 257**This apache mode is only to issue the cert, it will not change your apache config files.
d5865989 258You will need to configure your website config files to use the cert by yourself.
259We don't want to mess your apache server, don't worry.**
260
6cc11ffb 261More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
2c75b3fd 262
c9baca79 263# 7. Use Nginx mode
1bb90298 264
9d725af6 265**(requires you to be root/sudoer, since it is required to interact with Nginx server)**
266
267If you are running a web server, Apache or Nginx, it is recommended to use the `Webroot mode`.
268
269Particularly, 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.
270
271Just set string "nginx" as the second argument.
272
273It will configure nginx server automatically to verify the domain and then restore the nginx config to the original version.
274
275So, the config is not changed.
276
e27dfbb0 277```sh
9d725af6 278acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
279```
280
84d80e93 281**This nginx mode is only to issue the cert, it will not change your nginx config files.
d5865989 282You will need to configure your website config files to use the cert by yourself.
c1f52299 283We don't want to mess your nginx server, don't worry.**
d5865989 284
9d725af6 285More examples: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
286
c9baca79 287# 8. Automatic DNS API integration
a947dbc6 288
1bb90298 289If your DNS provider supports API access, we can use that API to automatically issue the certs.
6c0ab5d2 290
1bb90298 291You don't have to do anything manually!
ab497961 292
2b45dba5 293### Currently acme.sh supports:
855d9499 294
9c174758 2951. CloudFlare.com API
2961. DNSPod.cn API
2971. CloudXNS.com API
2981. GoDaddy.com API
9c174758 2991. PowerDNS.com API
9bc5f686 3001. OVH, kimsufi, soyoustart and runabove API
3011. nsupdate API
9c174758 3021. LuaDNS.com API
3031. DNSMadeEasy.com API
9bc5f686 3041. AWS Route 53
be39ab32 3051. aliyun.com(阿里云) API
192ede5e 3061. ISPConfig 3.1 API
b2686e5b 3071. Alwaysdata.com API
38f23343 3081. Linode.com API
e6b940e2 3091. FreeDNS (https://freedns.afraid.org/)
edfefb67 3101. cyon.ch
3d6a125b 3111. Domain-Offensive/Resellerinterface/Domainrobot API
fab2d9dc 3121. Gandi LiveDNS API
9c87a589 3131. Knot DNS API
ac690fce 3141. DigitalOcean API (native)
3e9478b5 3151. ClouDNS.net API
4ddafb8e 3161. Infoblox NIOS API (https://www.infoblox.com/)
9cf65e31 3171. VSCALE (https://vscale.io/)
66e38ae6 3181. Dynu API (https://www.dynu.com)
9bc5f686 3191. DNSimple API
5e3a5f62 3201. NS1.com API
1a504118
R
3211. DuckDNS.org API
3221. Name.com API
42b2adc0 3231. Dyn Managed DNS API
ae302ee6 3241. Yandex PDD API (https://pdd.yandex.ru)
8ca45d3d 3251. Hurricane Electric DNS service (https://dns.he.net)
78712245 3261. UnoEuro API (https://www.unoeuro.com/)
f7c346de 3271. INWX (https://www.inwx.de/)
b140e255 3281. Servercow (https://servercow.de)
eb207322 3291. Namesilo (https://www.namesilo.com)
775aae70 3301. InternetX autoDNS API (https://internetx.com)
00781dd4 3311. Azure DNS
a4fc802d 3321. selectel.com(selectel.ru) DNS API
6ca5f3d8 3331. zonomi.com DNS API
84649e9d 3341. DreamHost.com API
2bbc25c1 3351. DirectAdmin API
2ff6f4d3 3361. KingHost (https://www.kinghost.com.br/)
8f5ee989 3371. Zilore (https://zilore.com)
5f9b0675 3381. Loopia.se API
dd72f763 3391. acme-dns (https://github.com/joohoi/acme-dns)
4e05062d 3401. TELE3 (https://www.tele3.cz)
616b0b6b 3411. EUSERV.EU (https://www.euserv.eu)
22cd408e 3421. DNSPod.com API (https://www.dnspod.com)
1d4dec55 3431. Google Cloud DNS API
2e74df25 3441. ConoHa (https://www.conoha.jp)
f3a622d1 3451. netcup DNS API (https://www.netcup.de)
1756bbff 3461. GratisDNS.dk (https://gratisdns.dk)
dc0dd658 3471. Namecheap API (https://www.namecheap.com/)
d55c64c8 3481. MyDNS.JP API (https://www.mydns.jp/)
4162975f 3491. hosting.de (https://www.hosting.de)
fb08b53f 3501. Neodigit.net API (https://www.neodigit.net)
67d3e8d0 3511. Exoscale.com API (https://www.exoscale.com/)
3099c799 3521. PointDNS API (https://pointhq.com/)
572adbaa 3531. Active24.cz API (https://www.active24.cz/)
75fe022f 3541. do.de API (https://www.do.de/)
84d80e93
FL
3551. Nexcess API (https://www.nexcess.net)
3561. Thermo.io API (https://www.thermo.io)
3571. Futurehosting API (https://www.futurehosting.com)
d30b441e 3581. Rackspace Cloud DNS (https://www.rackspace.com)
ec5fad43 3591. Online.net API (https://online.net/)
16a0f40a 3601. MyDevil.net (https://www.mydevil.net/)
30d0ac07 3611. Core-Networks.de (https://core-networks.de)
b7e92dbc 3621. NederHost API (https://www.nederhost.nl/)
5048c6c2 3631. Zone.ee (zone.eu) API (https://api.zone.eu/v2)
2655e726 364
fb08b53f 365And:
9bc5f686 366
a63766a0 367**lexicon DNS API: https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api
368 (DigitalOcean, DNSimple, DNSMadeEasy, DNSPark, EasyDNS, Namesilo, NS1, PointHQ, Rage4 and Vultr etc.)**
9bc5f686 369
370
1bb90298 371**More APIs coming soon...**
ab497961 372
1bb90298 373If your DNS provider is not on the supported list above, you can write your own DNS API script easily. If you do, please consider submitting a [Pull Request](https://github.com/Neilpang/acme.sh/pulls) and contribute it to the project.
ab497961 374
1bb90298 375For more details: [How to use DNS API](dnsapi)
ab497961 376
c9baca79 377# 9. Use DNS manual mode:
e27dfbb0 378
46ac97a3 379See: https://github.com/Neilpang/acme.sh/wiki/dns-manual-mode first.
380
d5865989 381If your dns provider doesn't support any api access, you can add the txt record by your hand.
e27dfbb0 382
383```bash
384acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
385```
386
387You should get an output like below:
388
389```sh
390Add the following txt record:
391Domain:_acme-challenge.example.com
392Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
393
394Add the following txt record:
395Domain:_acme-challenge.www.example.com
396Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
397
398Please add those txt records to the domains. Waiting for the dns to take effect.
399```
400
401Then just rerun with `renew` argument:
402
403```bash
404acme.sh --renew -d example.com
405```
406
407Ok, it's done.
408
409**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.**
410
411**Please use dns api mode instead.**
ab497961 412
c9baca79 413# 10. Issue ECC certificates
2b45dba5 414
1bb90298 415`Let's Encrypt` can now issue **ECDSA** certificates.
2b45dba5 416
1bb90298 417And we support them too!
1add47a6 418
d5865989 419Just set the `keylength` parameter with a prefix `ec-`.
2b45dba5 420
1add47a6 421For example:
9e6c4208 422
bcbecff6 423### Single domain ECC certificate
9e6c4208 424
2b45dba5 425```bash
1bb90298 426acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
1add47a6 427```
2b45dba5 428
1bb90298 429### SAN multi domain ECC certificate
2b45dba5
SF
430
431```bash
1bb90298 432acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
9e6c4208
N
433```
434
d5865989 435Please look at the `keylength` parameter above.
1add47a6 436
437Valid values are:
438
2b45dba5
SF
4391. **ec-256 (prime256v1, "ECDSA P-256")**
4402. **ec-384 (secp384r1, "ECDSA P-384")**
4413. **ec-521 (secp521r1, "ECDSA P-521", which is not supported by Let's Encrypt yet.)**
1add47a6 442
df1c9d88 443
df1c9d88 444
c9baca79 445# 11. Issue Wildcard certificates
df1c9d88 446
e27dfbb0 447It's simple, just give a wildcard domain as the `-d` parameter.
df1c9d88 448
e27dfbb0 449```sh
f2aa5c02 450acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
df1c9d88 451```
e27dfbb0 452
453
454
c9baca79 455# 12. How to renew the certs
e27dfbb0 456
457No, you don't need to renew the certs manually. All the certs will be renewed automatically every **60** days.
458
459However, you can also force to renew a cert:
460
461```sh
1bb90298 462acme.sh --renew -d example.com --force
df1c9d88 463```
464
465or, for ECC cert:
1bb90298 466
e27dfbb0 467```sh
1bb90298 468acme.sh --renew -d example.com --force --ecc
df1c9d88 469```
470
1bb90298 471
c9baca79 472# 13. How to stop cert renewal
a4964b90 473
e27dfbb0 474To stop renewal of a cert, you can execute the following to remove the cert from the renewal list:
a4964b90 475
e27dfbb0 476```sh
a4964b90
FW
477acme.sh --remove -d example.com [--ecc]
478```
479
e27dfbb0 480The cert/key file is not removed from the disk.
a4964b90 481
e27dfbb0 482You can remove the respective directory (e.g. `~/.acme.sh/example.com`) by yourself.
a4964b90 483
e27dfbb0 484
c9baca79 485# 14. How to upgrade `acme.sh`
1bb90298 486
329174b6 487acme.sh is in constant development, so it's strongly recommended to use the latest code.
df1c9d88 488
489You can update acme.sh to the latest code:
1bb90298 490
e27dfbb0 491```sh
df1c9d88 492acme.sh --upgrade
493```
494
1bb90298
AL
495You can also enable auto upgrade:
496
e27dfbb0 497```sh
1bb90298 498acme.sh --upgrade --auto-upgrade
59649e9b 499```
1bb90298
AL
500
501Then **acme.sh** will be kept up to date automatically.
59649e9b 502
503Disable auto upgrade:
1bb90298 504
e27dfbb0 505```sh
1bb90298 506acme.sh --upgrade --auto-upgrade 0
59649e9b 507```
508
1bb90298 509
c9baca79 510# 15. Issue a cert from an existing CSR
8371b030 511
512https://github.com/Neilpang/acme.sh/wiki/Issue-a-cert-from-existing-CSR
513
514
c9baca79 515# 16. Under the Hood
6c0ab5d2 516
99dc89c0 517Speak ACME language using shell, directly to "Let's Encrypt".
6c0ab5d2
N
518
519TODO:
520
1bb90298 521
c9baca79 522# 17. Acknowledgments
1bb90298 523
63f04675
N
5241. Acme-tiny: https://github.com/diafygi/acme-tiny
5252. ACME protocol: https://github.com/ietf-wg-acme/acme
63f04675 526
1bb90298 527
c9baca79 528# 18. License & Others
6c0ab5d2
N
529
530License is GPLv3
531
1d06c947 532Please Star and Fork me.
6c0ab5d2 533
1bb90298 534[Issues](https://github.com/Neilpang/acme.sh/issues) and [pull requests](https://github.com/Neilpang/acme.sh/pulls) are welcome.
6c0ab5d2
N
535
536
c9baca79 537# 19. Donate
cb6f6229 538Your donation makes **acme.sh** better:
6c0ab5d2 539
43d3b51b 5401. PayPal/Alipay(支付宝)/Wechat(微信): [https://donate.acme.sh/](https://donate.acme.sh/)
84d80e93 541
1bb90298 542[Donate List](https://github.com/Neilpang/acme.sh/wiki/Donate-list)