acme.sh注册免费的ssl证书

先决条件:首先我们需要有一个域名和一台有公网IP的服务器

然后需要给该域名添加一个A指向到IPV4地址,否则生成证书时会无法解析域名

安装acme.sh

curl  https://get.acme.sh | sh  -s [email protected]

启用别名

source ~/.bashrc 

说明:

acme.sh 会安装到 ~/.acme.sh 目录下。安装成功后执行 source ~/.bashrc 以确保脚本所设置的命令别名生效。

说明:普通用户和 root 用户都可以安装使用. 安装过程进行了以下几步:

1.把 acme.sh 安装到你的 home 目录下: ~/.acme.sh/ ,并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

2.自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

3.记得安装时带上邮箱,后面申请证书可能报错,如果报错卸载acme.sh,重新安装即可

查看帮助信息

acme.sh -h

卸载acme.sh

acme.sh --uninstall

切换CA机构

acme.sh --set-default-ca --server letsencrypt

说明:

acme.sh 支持四个正式环境 CA,分别是 Let’s Encrypt、Buypass、ZeroSSL 和 SSL.com,默认使用 ZeroSSL。

生成证书

acme.sh --issue -d example.com --standalone --keylength ec-256 --force

说明:

1. --standalone 模式下默认使用80端口,如果80端口被占用,添加 --httpport 参数使用80以外的端口

2.  --keylength表示密钥长度,后面的值可以是 ec-256 、ec-3842048307240968192,带有 ec 表示生成的是 ECC 证书,没有则是 RSA 证书。在安全性上 256 位的 ECC 证书等同于 3072 位的 RSA 证书。

3.  生成的证书将放置在~/.acme.sh/example.com/ 目录下:

example.com.cer 证书文件
example.com.key 私钥
ca.cer 中间证书
fullchain.cer 证书链

4. 当前证书剩余有效期在30天以上时重新生成证书,需要使用--force参数

5.  建议在生成证书的时候添加 --staging  使用测试环境测试,不明白可参见后面的速率限制

更新证书

acme.sh --renew -d example.com

如果是ecc证书:

acme.sh --renew -d example.com --ecc

说明:

默认情况下acme.sh会自动更新即将过期的证书.可以不用手动更新

如果要更新有效期大于30天的,使用--force参数

部署证书

acme.sh --installcert -d mydomain.me --ecc \
                          --fullchain-file /demo/v2ray/demo.crt \
                          --key-file /etc/demo/demo.key

说明:

        其实就是拷贝证书到指定位置,位置自己定,原生成的证书的目录供acme.sh内部使用

查看已经生成的证书:

acme.sh --list

查看debug:

acme.sh  --issue  .....  --debug

查看error:

acme.sh  --issue  .....  --debug  2

生成日志:

acme.sh  --issue  .....  --log

使用测试环境

--staging

说明:

日志文件路径为:~/.acme.sh/acme.sh.log

速率限制

重复证书限制

 概述: 

所有签发请求均受每周 5 个重复证书的限制。 当您超出重复证书限制时,您应该会从 ACME 客户端收到如下错误消息:

too many certificates (5) already issued for this exact set of domains in the
last 168 hours: example.com login.example.com: see https://letsencrypt.org/docs/duplicate-certificate-limit        

此错误所指的“确切集”是为此证书请求的主机名集:在此示例中,example.com 和 login.example.com。 如果您的证书仅针对 1 个名称(例如 example.com)颁发,那么您的证书的主机名“确切集”将是 [example.com]。 当订阅者在一周内为相同的“确切集”主机名请求证书超过 5 次时,就会超出此速率限制。

解决方法:

撤销先前发布的证书将不会重置重复证书限制。 然而,仍然存在着这种情况。 如果您发现您已经超过了上限并且您仍然需要另一个证书来获取相同的主机名,您总是可以要求一个不同的主机名“确切集”的证书。 例如,如果您超出了 [example.com] 的重复证书限制,那么为 [example.com, login.example.com] 请求证书将会成功。 同样,如果您超出了 [example.com, login.example.com]的重复证书限制,那么为 [example.com] 申请一个单独的证书,为 [login.example.com] 申请另一个证书将会成功。

失败验证限制

概述:

所有颁发请求都受到每个帐户、每个主机名、每小时 5 次失败的验证失败限制 并且无法豁免。当您超过失败验证限制时,您会从您的ACME客户端收到以下错误消息:

too many failed authorizations recently: see https://letsencrypt.org/docs/failed-validation-limit/

此错误所指的“授权”是您的 ACME 客户端发送的授权请求的结果,用于在我们颁发或更新证书之前验证对域名的控制。 此错误表示多个验证请求已成功发送,但所有验证尝试均失败。

测试环境速率限制

测试环境使用与生产环境类似的速率限制,但具体数据有所变化:

  • 每个注册域名允许颁发的证书数量限制为每周 30000 张。
  • 重复证书限制为每周 30000 张。
  • 每小时允许 60 次验证失败
  • 每个 IP 地址注册账户数量限制为每个 IP 每 3 小时允许注册 50 个账户。
  • 对于 ACME v2,新订单限制为每个帐户每 3 小时 1500 个。

Let's Encrypt官网:

Let's Encrypt - 免费的SSL/TLS证书 (letsencrypt.org)

acme.sh项目地址:

acmesh-official/acme.sh: A pure Unix shell script implementing ACME client protocol (github.com)

你可能感兴趣的:(ssl,https,服务器)