Let’s Encrypt 是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。它只支持 DV 证书的签发,也就是通过验证域名所有权,然后签发该域名的证书。它支持两种验证方式,一种是通过 HTTP 的方式验证,另一种是通过 DNS 的方式验证,只有这种支持通配符,而今天要讲的就是第二种方式。
官网地址:https://letsencrypt.org
Let’s Encrypt 使用 ACME 协议来验证您对给定域名的控制权并向您颁发证书。要获得 Let’s Encrypt 证书,就需要选择符合 ACME 协议的客户端软件:
- 官方
提供了很多证书的申请方式方法:https://letsencrypt.org/zh-cn/docs/client-options/
- certbot
既可以获取证书,也可以安装证书,适用于许多操作系统,并且文档很详细、完善。
- acme.sh
目前 Let’s Encrypt 免费证书客户端中最简单、最智能的 shell 脚本,可以自动发布和续订 Let’s Encrypt 中的免费证书
申请密钥由于使用的是 dns 方式,且为了简化自动续签,因此为客户端提供阿里云操作 dns 的账号以及密钥
- 登录阿里云
- 进入 RAM 访问控制(可直接在右上角搜索:访问控制)
- 进入 RAM 中的身份管理中的用户组
- 创建用户组
- 进入新建的用户组新增授权
- 点击左侧用户菜单并创建用户 >访问方式一定要勾选 Open API 调用访问
- 将新建的用户添加到前面创建的用户组
- 到认证管理中创建 AccessKey
创建成功后建议直接导出,防止忘了
邮箱用于提醒证书过期
curl https://get.acme.sh | sh -s email=my@example.com测试收否安装成功
[root@yedajiang44 .acme.sh]# acme.sh --version https://github.com/acmesh-official/acme.sh v3.0.1生成证书 设置环境变量
Ali_Key和Ali_Secret会被保存至~/.acme.sh/account.conf文件中
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje" export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"生成
建议启用 --debug 参数,因为可以看到详细的执行过程,否则会很容易误以为命令假死
acme.sh --issue --dns dns_ali -d example.com -d www.example.com --debug
记住输出的目录
配置 nginx示例:
server {
listen 80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ip.yedajiang44.com;
ssl_certificate /home/yedajiang44/.acme.sh/yedajiang44.com/fullchain.cer;
ssl_certificate_key /home/yedajiang44/.acme.sh/yedajiang44.com/yedajiang44.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
default_type text/plain;
return 200 "$remote_addrn";
}
}
- ssl_certificate 一定要设置为fullchain.cer
- 手动重新加载 nginx
nginx -s reload
至此你的网站已经可以使用 https 了
其实比较麻烦的就是阿里云的密钥,其他的都还好。



