免费申请通配符类型SSL证书

折腾起因

最近做了个小网站wawoo.fun,一个做mac壁纸的小网站,网站还处在初级阶段,不能跟大神的比。网站发布后发现因为没有使用https,谷歌浏览器会在地址栏提示网站不安全。因此想提升下网站的逼格,把网站由http升级为https。

阿里云免费证书只支持单域名

我买的是阿里云的服务器,因此想到之前看到阿里云有送免费的https证书,遂打开阿里云证书申请页面,发现赠送的免费证书只支持单域名的。我的站点至少需要一个支持wawoo.fun和www.wawoo.fun的证书,申请两个单域名证书,然后再在nginx中分别配置,这个太low了,不是我想要的,通配符证书才是我想要的,但是阿里云的通配符证书太贵了,不是我这个小站长消费的起的,于是放弃阿里云的证书,寻找其他方案。

Let's Encrypt提供免费通配符证书

经过搜索发现,真的有提供免费通配符类型证书的机构,那就是Let's Encrypt,Let's Encrypt已为1.8亿个网站提供了HTTPS证书,它是一个非盈利性证书颁发机构,其颁发的证书受所有主流浏览器厂商的信任,安全可靠。

Let's Encrypt证书申请客户端选择

申请Let's Encrypt的免费证书,需要使用Let's Encrypt的证书申请客户端,官方推荐的是certbot,是脚本类型的,其他的证书申请客户端还有很多。遂搜索了一下大家常用的证书申请客户端,比较常用的是acme.sh,和certbot一样是脚本类型的,试用了一下,确实很强大,在配置了阿里云的域名解析API接口授权参数后,可以自动更新证书,更新后自动重启nginx,超级方便。

遇到问题:证书自动更新后无法自动多节点部署

在准备使用acme.sh后,突然发现一个问题,就是如果我以后要扩充nginx容器的数量,证书自动更新就有问题了,多个容器内acme.sh会各自更新各自的,就会生成多个不一样的证书,而且一旦我的容器个数超过5个,同时更新会触法Let's Encrypt的证书更新请求速率限制,导致5个之外的所有容器都会更新失败,这个不利于以后容器的扩展。而且如果我需要在阿里云的CDN中部署证书,还要在每次证书更新后手动将证书上传到阿里云的CDN中,很不便捷。

找到答案:OHTTPS可在证书更新后自动部署至多节点

为了解决上面的问题,并充分发扬我懒的本质,我又开始了我的搜索之旅,经过了持久的搜索后,发现了这个宝藏站点ohttps.com,这个网站提供了我想要的所有功能。OHTTPS提供了证书的申请、吊销、到期前通知、自动更新、更新后自动部署,并可自动部署至阿里云或腾讯云的负载均衡、CDN或证书列表中,还可以部署至Nginx容器中,并支持多节点自动部署。哇,真是太棒了,这个正是我想要的功能啊,更棒的是提供了免DNS授权模式,也就是不需要提供阿里云域名解析API的accessKey和accessKeySecret就可以实现自动更新

使用OHTTPS创建证书

首先需要注册一个OHTTPS的账号,注册成功之后登录进去打开证书管理页面,点击创建证书,然后进入创建证书步骤:

  • 1、选择证书类型,这里我们选择泛域名证书,也就是通配符证书,然后输入我们的域名


    image
  • 2、选则验证域名所有权方式,这里我们选择免DNS授权模式,然后它会提示需要添加1条CNAME类型的记录至DNS域名解析记录中,我们按照它的提示将记录添加至wawoo.fun的域名解析记录中
image
  • 3、点击创建证书,证书申请开始了


    image
  • 4、1 ~ 2分钟之后证书申请成功,可以点击查看证书内容


    image
  • 5、点击管理证书后,会在证书管理页面中看到我们申请的证书


    image

在OHTTPS中创建证书Nginx容器部署节点

要使OHTTPS在证书自动更新后自动部署到Nginx容器中,我们需要先创建部署节点。选择部署节点菜单,点击添加节点,然后我们选择Docker - Nginx,点击生成令牌,这个令牌是在使用容器时会使用到的,下面我会使用到。


image

在OHTTPS中配置证书自动更新、自动部署

在证书管理页面中,选择我们刚才创建的证书,点击配置,在这里我们可以对证书进行配置:到期前是否进行通知、是否自动更新、更新后是否自动部署、部署至那些节点等。我们全部选择自动,然后将我们刚才创建的部署节点添加进来。

image

构建我们自己的nginx容器镜像

在OHTTPS中证书配置完成后,我们需要构建自己的nginx容器镜像。这里需要用到OHTTPS官方提供的ohttps/ohttps-nginx容器镜像作为基础镜像,这个镜像也是基于nginx官方镜像构建的,添加了证书更新功能,证书从服务器拉取过来之后,会存在容器内部的/etc/nginx/certificates文件夹下,证书文件具体存放位置如下:

  • 件私钥文件cert.key:
`/etc/nginx/certificates/${证书ID}/cert.key`
  • 证书文件fullchain.cer:
`/etc/nginx/certificates/${证书ID}/fullchain.cer`

其中证书ID是我们创建完证书后生成的证书ID,在证书管理页面可以看到。然后我们可以在我们自己的nginx配置文件中使用证书文件:

ssl_certificate     /etc/nginx/certificates/cert-o17xk289ev09d43l/fullchain.cer;
ssl_certificate_key /etc/nginx/certificates/cert-o17xk289ev09d43l/cert.key;

设置完nginx配置文件nginx.conf之后,我们需要编辑我们自己的Dockerfile文件,用以构建我们自己的镜像。在Dockerfile文件中,需要设定两个环境变量:

  • PUSH_NODE_ID:就是我们创建的部署节点的ID,在部署节点管理页面可以看到
  • PUSH_NODE_TOKEN:就是我们创建部署节点时点击生成的32位的Token

下面是Dockerfile文件:

FROM ohttps/ohttps-nginx:1.0.1
WORKDIR /etc/nginx
COPY ./nginx.conf /etc/nginx/nginx.conf
ENV PUSH_NODE_ID='push-k7l13g8j30xm9qp4'
ENV PUSH_NODE_TOKEN='0bfff9fc3024453819c4f107a397ca86'

Dockerfile文件编辑完成之后,就可以生成镜像,然后我们就可以使用我们自己的镜像启动我们自己的nginx容器。这样就实现了在证书到期前,自动更新证书,并自动将证书推送至Nginx容器中,永远都不需要再担心证书过期了。

我写的OHTTPS使用简介不是很详细,具体怎么使用OHTTPS,还请看OHTTPS官方文档快速上手OHTTPS,具体怎么使用OHTTPS的Docker - Nginx类型部署节点,也请看OHTTPS官方文档部署节点 - Docker - Nginx

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容