SSL证书到期了怎么续怎么申请SSL证书

文章目录
  1. 1. 背景
  2. 2. 本次查询资料
  3. 3. 操作记录
    1. 3.1. 安装acme.sh
    2. 3.2. 生成证书
      1. 3.2.1. http方式
      2. 3.2.2. dns方式
  4. 4. 本次学到的知识点
    1. 4.1. 为什么会有SSL免费证书
    2. 4.2. Let’s Encrypt 是什么?
    3. 4.3. acme.sh 是什么?
    4. 4.4. 证书分哪几种类型?要申请证书要经过什么步骤?
    5. 4.5. 为什么会出现免费的ssl证书
    6. 4.6. 免费证书用的最多的脚本是什么?

背景

我的网站SSL证书到期了,之前申请的是泛域名SSL证书,现在想要续一下,或者重新申请一下。整理一下做个笔记,防止下次到期之后再去查资料

本次查询资料

https://www.jianshu.com/p/4fcc5001f03f
https://zhuanlan.zhihu.com/p/588840981

操作记录

下面是整理的几个方式,我这次续域名是直接使用的下面的dns方式申请中的 Automatic 自动申请直接续的,这个方法要求是有cloudfare的域名,且需要提供userid和token。如果不是这种平台申请的,可以按照下面的几个方法,选择一个去尝试。

安装acme.sh

1
curl  https://get.acme.sh | sh

生成证书

acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证

http方式

http 方式需要在你的网站根目录下放置一个文件, 以此来验证你的域名所有权,完成验证,只需要指定域名, 并指定域名所在的网站根目录,acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证,着方式较适合独立域名的站点使用,比如博客站点等。

1
2
3
4
5
6
7
8
9
10
11
# 直接根据域名和网站根目录生成证书
./acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/

# 如果是apache服务,用这个
acme.sh --issue -d mydomain.com --apache

# 如果是nginx 反代
acme.sh --issue -d mydomain.com --nginx

# 如果只是想申请一个证书,还没搭建服务
acme.sh --issue -d mydomain.com --standalone

dns方式

除了上述 http方式外,另一种方式即手动配置DNS的方式,十分适合用于生成范解析证书。
优势:不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证
劣势:如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权

DNS手动生成,手动添加TXT解析

  1. 生成证书记录
1
./acme.sh --issue -d *.example.com  --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
  1. 在域名解析中添加证书TXT记录

  2. 验证解析是否生效

  3. 生成证书

1
./acme.sh --renew -d *.example.com  --yes-I-know-dns-manual-mode-enough-go-ahead-please

配置 Automatic DNS API 生成证书(自动生成证书)

dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证,acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。

  1. 登录到cloudfare

先登录到 dnspod 账号, 生成你的 api id 和 api key, 都是免费的,然后指定自己的需要的参数,如下

1
2
3
export CF_Id="1234"
export CF_Key="sADDsdasdgdsf"
acme.sh --issue --dns dns_cf -d hengshare.top -d *.hengshare.top --debug
  1. 使用之前的设置再次生成证书(相当于续期)
1
acme.sh  --issue   -d  hengshare.top -d *.hengshare.top   --dns  dns_cf --debug

本次学到的知识点

为什么会有SSL免费证书

自从数年前苹果开始强制要求所有IOS所有应用必须全部使用 https,以及google、baidu、bing 这三大搜索引擎开始大规模支持 https,https 已经成为现在保障网站完全的最基础需求,大量的供应商开始出现,并提供证书服务,但是对于一些非盈利性质的网站或博客站长,或公司测试环境也想使用https认证时,并不想在这上面投入太多的资金,于是乎理所当然会想要追求免费且有效的ssl证书了。

Let’s Encrypt 是什么?

Let’s Encrypt 作为一个开源 SSL 的项目逐渐被广大用户传播和使用,是由 Mozilla、Cisco、Akamai、IdenTrust、EFF 等组织人员发起,主要的目的也是为了推进网站从 HTTP 向 HTTPS 过度的进程,目前已经有越来越多的商家加入和赞助支持。
和通过openssl等工具生成的证书不同,Let’s Encrypt 获得 IdenTrust 交叉签名,这就是说可以应用且支持包括 FireFox、Chrome 在内的主流浏览器的兼容和支持,可以说是真正意义上免费且有效的SSL证书。

acme.sh 是什么?

Let’s Encrypt 的最大贡献是它的 ACME 协议,而 acme.sh 脚本可以通过 ACME 协议 从 Let’s Encrypt 生成免费的 SSL 证书。
一般生成的证书有效期只有60 ~ 90天,主要是为了避免认证私钥泄露,但是对于一些非盈利网站和个人网站来说基本是够用的,对于一些想长期使用的,现在已经有不少的 Let’s Encrypt 自动续期脚本了,配好后就不用管了,非常方便。
acme.sh 的使用非常“傻瓜式”,只要照着指令参数做就可以轻松搞定的,只需要指定自己的域名就可以用,根据-h的说明菜单指引,简单修改一下参数就可以拿来用的。

证书分哪几种类型?要申请证书要经过什么步骤?

值得注意的是证书分为三种, 域名验证型(DV)证书, 组织验证(OV), 扩展验证(EV), 而let’s encrypt提供的是第一种, 对于个人而言, 三者没有太大的区别, 因为个人一般要求很低, 能够加密数据就行, 如果有更高的要求还是需要额外花费一笔钱去购买证书的。还有就是免费证书一般时间不会很长, 60天,90天不等, 不同的机构不一样, 所以需要额外的处理续期的问题, 当然了, 续期也是免费的。

要获得免费证书需要完成一些挑战, 大致分为两类, 访问挑战, DNS挑战。

访问挑战指以约定的方式防止指定的内容, 比如你的域名需要能够提供http://<你的域名>/.well-known/acme-challenge/地址的访问.

DNS挑战指在域名的记录中加入指定的内容, 比如在你的域名下创建一天TXT记录, 值是_acme-challenge.<YOUR_DOMAIN>.

当然了, 官方不是这么命名的, 分别是HTTP-01验证, DNS-01验证, 还有TLS-SNI-01验证, TLS-ALPN-01验证. 各个验证详情参考: https://letsencrypt.org/zh-cn/d

为什么会出现免费的ssl证书

如果使用openssl创建证书, 你可能需要创建6个文件才能完成工作, 会很抓狂, 如果你还不懂各个步骤的意义就会对证书的创建望而生畏(我以前就是…), 所以出现了极傻瓜式的工具mkcert, 无脑创建证书很快很有用, 它甚至还能帮你安装根证书, 从此世界安静了, 可是随着对证书的深入发现还是会需要openssl来完成更细致的需求, 所以openssl yyds, 自签名证书的一个问题就是无法让所有人接受, 所以需要购买CA机构签名的证书, 但是小网站, 个人而言根本不需要那种专业性的证书, 所以出现大量的免费证书颁发机构, 从此https流量高歌猛进.

免费证书用的最多的脚本是什么?

免费的ssl证书已经有很多了, 但是在本人的记忆中是let’s encrypt极快的推动的免费ssl证书的进程。