如何免费将站点升级到 HTTPS

发布于:2019-11-13 17:06,阅读数:139,点赞数:2


# 引言

本文不包含建站、正常的 DNS 解析等内容教程,在这里假设读者已经建好了 HTTP 站点,并且想要升级到 HTTPS。在创建证书前需要进行 DNS 验证,请确认你有权限操作这个域名的解析。

# 正文

## 服务提供商

阿里云本身可以注册免费 HTTPS 证书,但是免费版是不包含二级域名的。

在你的网站有二级域名的情况下,如`blog.xxx.com`,`image.xxx.com`,阿里云的免费证书需要分别为每个域名创建证书。免费证书是不能创建`*.xxx.com`这种通配证书的,所以这个方案就不在考虑范围内了。

幸运的是有一些服务商提供免费的通配证书,我选择的是[SSL For Free](https://www.sslforfree.com)。不过这里的证书有效期只有三个月,需要每三个月来手动更新一次证书。(网站上说到期之前会有邮件提醒,然而我并没有收到过)

## 注册和验证

输入需要创建证书的域名,注册账号。

接下来会进入 DNS 验证的阶段,只需要把以下内容增加一条 DNS 解析即可完成验证。

![](//cdn.yuusann.com/img/posts/19008_1.jpg)

假设读者使用阿里云作为 DNS 解析商,把上面的 host 和 value 填到阿里云后台的解析处即可:

![](//cdn.yuusann.com/img/posts/19008_2.jpg)

阿里云的 TTL 最低是 10 分钟,选 10 分钟即可,我的使用过程中并不影响。添加以后,这里可能会有点延迟,稍微等一下,继续操作,就能过下载到证书了。

其他平台也是一样的,添加一条解析即可。

## 证书

下载到的证书有三个文件。

- ca_bundle.crt
- certificate.crt
- private.key

假设读者使用`Heze`框架(底层为 PerfectHTTP 的 SSL 接口),需要使用到证书和私钥两个后缀为`pem`的文件。

使用命令行转一下格式就可以用了:

```bash
openssl x509 -in certificate.crt -out certificate.pem -outform PEM
openssl rsa -in private.key -text > private.pem
```

根据平台不同,使用到的证书文件格式可能不同,请自行进行转换。

# 结语

这家服务商的证书我已经用了四个月,期间更新过一次证书,期间除了某些国产 APP 的内置浏览器会不信任证书以外,主流浏览器能够认,没有太大的问题。

有更好的免费服务商欢迎评论。


评论:4条


1楼:2019-11-14 20:51:36

GECKO:

Let's Encrypt 也支持通配符证书了, 用 CronJob 定时更新也很方便


2楼:2019-11-14 23:58:10

yuu:

引用:1楼

有效期多久?我希望能找个有效期长点的,三个月一换有点麻烦。


3楼:2019-11-16 21:35:51

GECKO:

引用:2楼

应该也是三个月。
但按照官方教程配置好 CronJob 就自动更新了,完全不用操心,很简单的。
如果觉得官方提供的 certbot 需要 Python 环境比较麻烦,也可以用 [acme.sh](https://github.com/Neilpang/acme.sh)。
[Wiki ACME](https://en.wikipedia.org/wiki/Automated_Certificate_Management_Environment) 证书自动管理


4楼:2020-07-27 14:55:05

yuu:

ssl for free 经过改版,已经不能免费创建通配证书了。推荐使用[acme.sh](https://github.com/acmesh-official/acme.sh)。


返回列表

返回归档

返回主页