Administrator
发布于 2024-04-16 / 9 阅读
0
0

SSL 免费证书申请和自动续期

一、前言

网站需要上 https,一直使用的阿里云的免费 DV 证书有效期太短了,所以打算转用免费且可自动续期的证书。颁发免费证书的 CA 机构有 Let's Encrypt、 ZeroSSL、BuyPass Go SSL、Google SSL,简单对比:

CA

Let's Encrypt

ZeroSSL

BuyPass Go SSL

Google SSL

域名支持

泛域名

泛域名

单域名、最多6个

泛域名

有效期

90天

90天

180天

90天

正常访问

-

-

-

国内不支持

验证方式

DNS验证

DNS验证

DNS验证、http验证

DNS验证

常用证书介绍:

DV(Domain Validation Certificate)证书,阿里云免费证书由于 CA 机构的调整从12个月缩紧到3个月,且不支持自动续期,不再考虑。收费的 DV 证书,支持三年有效期,但是最便宜要4千多¥。

OV (Organization Validation SSL Certificate)证书也是最多支持三年,但是最便宜的要1万5¥,最贵要8万多¥,不是一般的企业用得起的,想想 8核16g8M200g 的阿里云服务器1年要1万左右,证书比服务器还贵。。。

本文重点介绍 Let's Encrypt 证书的申请和配置。

二、域名验证

申请证书有一个重要步骤就是域名验证,简单来说就是验证这个域名是我的(类似手机号注册需要验证码),方式有两种:DNS验证、HTTP验证(80端口)。

DNS 验证需要去到域名提供商(如阿里云)里面,配置 TXT 解析,填写指定的内容。自动续期需要获取 AccessKey 等参数,然后通过 SDK 自动化完成这项工作。DNS 验证 因为 DNS 服务商同步 DNS 解析有延迟,容易失败,一般要重试好几次才能成功。

HTTP 验证即是放置指定文件到指定位置,然后需要通过 http 访问到,类似微信公众号 ip 验证放置指定文件的方式。

泛域名证书必须使用 DNS 验证,一个域名一般有两个域名要支持 https:泛域名(*.domain.com)、基本域名/根域(domain.com)。一般一个域名需要验证一次。

三、多域名证书

一个证书可以包含多个域名,但是多个域名中的域名只要包含 泛域名(*.domain.com)就需要使用 DNS 验证,普通的域名(a.domain.comdomain.com)使用 HTTP 验证即可。

我们的站点的需求是,一台服务器(ip),domain.com 和 *.domain.com 都要支持 https,所以要申请一个多域名证书。

四、常用的 let's encrypt 证书申请方式

  1. https://www.sslforfree.com/,在线网站申请。

  2. Certbot 安装,官网推荐(推荐)

  3. acme.sh脚本安装(推荐)

第一种是通过手动的方式续期,第二、三种才是我们想要的,通过程序实现证书自动续期。Certbot是使用 Python 编写的,需要 Python 环境(解释器);而 acme.sh 是一个基于 Shell 脚本的工具,它在各种 Linux 系统上运行,并且没有其他依赖关系。


评论