折腾起因

最近做了个小网站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、选择证书类型,这里我们选择泛域名证书,也就是通配符证书,然后输入我们的域名

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

  • 3、点击创建证书,证书申请开始了

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

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

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

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

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

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

构建我们自己的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

免费申请通配符类型SSL证书的更多相关文章

  1. GeoTrust 企业(OV)型 通配符(Wildcard) SSL证书

      GeoTrust 企业(OV)型 通配符(Wildcard)SSL证书(GeoTrust True BusinessID Wildcard SSL Certificates),支持通配符(Wild ...

  2. WDCP V3.2面板安装且新增PHP多版本和免费Let's Encrypt SSL证书

    文章原文:http://www.itbulu.com/wdcp-v32.html 我们很多网友对于WDCP面板应该算是比较熟悉的,老蒋在博客中也多次分享WDCP面板的相关教程内容,因为在平时帮助网友解 ...

  3. 使用OpenSSL生成CSR文件,并申请全球通用SSL证书

    http://www.openssl.org 上只有OpenSSL的原代码下载,为了方便Windows用户使用OpenSSL,我们特地为您准备了OpenSSL 0.9.8.a for win32的可执 ...

  4. Weblogic申请和配置SSL证书

    一. 概述 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协 ...

  5. Let's Encrypt 免费通配符 SSL 证书申请教程——但是也需要email,域名所有权等,如果是黑产用的话会这样用吗?会不会暴露自己身份???

    Let's Encrypt 免费通配符 SSL 证书申请教程 from:https://blog.csdn.net/English0523/article/details/79608464 2018 ...

  6. 新版startssl 免费SSL证书申请 (实测 笔记 https http2 必要条件)

    简单说明: 目前多个大型网站都实现全站HTTPS,而SSL证书是实现HTTPS的必要条件之一. StartSSL是StartCom公司旗下的.提供免费SSL证书服务并且被主流浏览器支持的免费SSL.包 ...

  7. startssl,免费的ssl证书申请及注意事项

    免费的ssl证书,https://www.startssl.com/ 安装到IIS和Nginx有所不同.原文 http://blog.newnaw.com/?p=1232 ------------转自 ...

  8. 免费SSL证书(https网站)申请

    如何拥有一个自己的免费的SSL证书,并且能够长期拥有.这篇文章让你找到可用的免费证书o(* ̄︶ ̄*)o 各厂商提供的免费SSL基本是Symantec(赛门铁克),申请一年,不支持通配符,有数量限制. ...

  9. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题

    最近需要https这里看到一份不错的博客,收录一下! Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust ...

随机推荐

  1. WEB缓存系统之varnish状态引擎

    前文我们聊了下varnish的VCL配置以及语法特点,怎样去编译加载varnish的vcl配置,以及命令行管理工具varnishadm怎么去连接varnish管理接口进行管理varnish,回顾请参考 ...

  2. 实验七 MySQL语言结构

    实验七 MySQL语言结构 一.  实验内容: 1. 常量的使用 2. 变量的使用 3. 运算符的使用 4. 系统函数的使用 二.  实验项目:员工管理数据库 用于企业管理的员工管理数据库,数据库名为 ...

  3. A - Jessica's Reading Problem POJ - 3320 尺取

    A - Jessica's Reading Problem POJ - 3320 Jessica's a very lovely girl wooed by lots of boys. Recentl ...

  4. java仿win7计算器布局

    代码: package calculator; import javax.swing.*; import java.awt.*; import java.awt.event.*; public cla ...

  5. Django常用的第三方包

    Django常用的第三方包 API开发 djangorestframework django-rest-multiple-models django-cors-headers 查询 django-fi ...

  6. boost multi_index简单了解

    #include <string> #include <iostream> #include <boost/multi_index_container.hpp> # ...

  7. 使用rem配置PC端自适应大屏

    效果如下 使得大屏不论在什么宽高比例依然能展示全部数据 安装 npm install -S postcss-pxtorem rem配置思路 原先的rem函数是能解决大部分的问题的,如果展示不全,也可以 ...

  8. 游戏开服 报一些 ip 设置 数据格式的异常,但断点明明都是数字 没问题的

    游戏服开始起服,结果报乱七八招的错误,先  ccs 那 ip 有问题,我给直接注释掉了:然后又 报 KeyValueDictCache 中 ips 设置有问题,都是报格式错误,结果我断点明明都是数字结 ...

  9. push和appendChild的区别

    概述:绑定事件(push和appendChild用法相似:但是一个是控制数组,一个是控制元素节点)用法:1.数组1的更改后的长度 = 数组1.push();//用来控制数组,在数组最后面插入项,返回数 ...

  10. AJ学IOS(46)之网易彩票幸运大转盘

    AJ分享,必须精品 效果 实现过程: 基础UI搭建 这里主要是用了xib搭建,首先我们分析,有中间的开始按钮,背景图片,还有星座按钮,这里能用xib做的事开始按钮和背景图片. 如图: 星座按钮的搭建: ...