利用let's encrypt在七牛云上免费开启https攻略

这次来折腾七牛云的 https,利用 let's encrypt 免费的服务可方便在七牛云上开启 https 服务。

七牛云免费证书

七牛云后台有提供免费的单域名证书,TrustAsia限免

七牛云免费证书

这个提交很方便,但只对公司服务,对个人不友好。幸好还提供 上传自有证书的服务,使用这个服务可以自己弄到证书后往里填,比在自己的服务器里麻烦,总比没有的好。

let's encrypt 证书

这里使用的工具是 acme.sh,这是用纯脚本写的工具,在Unix系统下都可顺利安装运行。

安装 acme.sh

一行命令安装

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

但你可能在安装时遇到下面的出错提示:

1
Failed to connect to raw.githubusercontent.com port 443: Connection refused

简单的解决方法是换个国外的VPS上运行

如果安装成功则会出现下面提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Sat 15 Feb 2020 09:53:15 AM UTC] Installing from online archive.
[Sat 15 Feb 2020 09:53:15 AM UTC] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Sat 15 Feb 2020 09:53:16 AM UTC] Extracting master.tar.gz
[Sat 15 Feb 2020 09:53:16 AM UTC] It is recommended to install socat first.
[Sat 15 Feb 2020 09:53:16 AM UTC] We use socat for standalone server if you use standalone mode.
[Sat 15 Feb 2020 09:53:16 AM UTC] If you don't use standalone mode, just ignore this warning.
[Sat 15 Feb 2020 09:53:16 AM UTC] Installing to /root/.acme.sh
[Sat 15 Feb 2020 09:53:16 AM UTC] Installed to /root/.acme.sh/acme.sh
[Sat 15 Feb 2020 09:53:16 AM UTC] Installing alias to '/root/.bashrc'
[Sat 15 Feb 2020 09:53:16 AM UTC] OK, Close and reopen your terminal to start using acme.sh
[Sat 15 Feb 2020 09:53:16 AM UTC] Installing cron job
no crontab for root
no crontab for root
[Sat 15 Feb 2020 09:53:16 AM UTC] Good, bash is found, so change the shebang to use bash as preferred.
[Sat 15 Feb 2020 09:53:17 AM UTC] OK
[Sat 15 Feb 2020 09:53:17 AM UTC] Install success!

程序会安装在当前用户的 home 目录下

1
2
3
4
5
6
7
8
$ cd ~/.acme.sh/
$ ls -l
-rw-r--r-- 1 root root    152 Feb 15 09:53 account.conf
-rwxr-xr-x 1 root root 196314 Feb 15 09:53 acme.sh
-rw-r--r-- 1 root root     78 Feb 15 09:53 acme.sh.env
drwxr-xr-x 2 root root   4096 Feb 15 09:53 deploy
drwxr-xr-x 2 root root   4096 Feb 15 09:53 dnsapi
drwxr-xr-x 2 root root   4096 Feb 15 09:53 notify

验证域名所有权

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

由于域名已经cname给七牛了,这里要用 dns 方式验证,就是在域名解析了设置相关TXT记录……实际不用登录到后台那么干,大多数域名服务商会提供API key,直接用接口设置。

我这里以 dnspod.cn 为例,登录后点右上角自己头像,点密钥管理

密钥管理

就弹出窗口,看到 idToken ,应立刻记下来,放在其它地方,等会使用。

实行命令添加idToken

1
2
export DP_Id="138xxx"
export DP_Key="7a94xxxxxxxxe78b43f99xxx"

生成证书

再来一条命令搞定:

1
./acme.sh --issue --dns dns_dp -d example.com -d www.example.com

上面是给example.comwww.example.com 两个域名申请证书,根据自己的情况增减。

如果正常则会看到下面提示

生成证书

重要的是最后几行:

1
2
3
4
Your cert is in  /root/.acme.sh/img.example.com/img.example.com.cer 
Your cert key is in  /root/.acme.sh/img.example.com/img.example.com.key 
The intermediate CA cert is in  /root/.acme.sh/img.example.com/ca.cer 
And the full chain certs is there:  /root/.acme.sh/img.example.com/fullchain.cer 

填写证书

把上面第4和第2个文件的内容分别填进七牛后台,参考下图

填写证书

配置启用 https

最后是到 CDN / 域名管理 选择对应的域名配置

启用https

一般等待两三分钟后就可以用 https 访问

参考

本文网址: https://pylist.com/topic/200.html 转摘请注明来源

Suggested Topics

使用caddy 快速部署多个https 网站

caddy 是用go实现的轻便web部署工具,其功能 nginx 类似,比它轻量、方便。特别是方便使用免费的 Let's Encrypt https 证书。下面是以ubuntu/debian 环境介绍实际的部署过程。...

Leave a Comment