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