阿里云+acme.sh通配符ssl证书

前言

简介

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 的账号以及密钥

申请密钥

  1. 登录阿里云
  2. 进入 RAM 访问控制(可直接在右上角搜索:访问控制)
    阿里云+acme.sh通配符ssl证书_第1张图片
  3. 进入 RAM 中的身份管理中的用户组
    阿里云+acme.sh通配符ssl证书_第2张图片
  4. 创建用户组
  5. 进入新建的用户组新增授权阿里云+acme.sh通配符ssl证书_第3张图片
  6. 点击左侧用户菜单并创建用户 >访问方式一定要勾选 Open API 调用访问
    阿里云+acme.sh通配符ssl证书_第4张图片
  7. 将新建的用户添加到前面创建的用户组阿里云+acme.sh通配符ssl证书_第5张图片
  8. 到认证管理中创建 AccessKey

    创建成功后建议直接导出,防止忘了

acme.sh

安装

自动安装

邮箱用于提醒证书过期

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

测试收否安装成功

[root@yedajiang44 .acme.sh]# acme.sh --version
https://github.com/acmesh-official/acme.sh
v3.0.1

生成证书

设置环境变量

Ali_KeyAli_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_addr\n";
        }
}
  • ssl_certificate 一定要设置为fullchain.cer
  • 手动重新加载 nginx
     nginx -s reload
    

总结

至此你的网站已经可以使用 https 了
其实比较麻烦的就是阿里云的密钥,其他的都还好。

你可能感兴趣的:(综合,ssl,阿里云,https)