使用Let's Encrypt搭建永久免费的HTTPS服务
1.概述
1.1 HTTPS概述
HTTPS即HTTP + TLS,TLS 是传输层加密协议,它的前身是 SSL 协议。我们知道HTTP协议是基于TCP的。简而言之HTTPS就是在TCP的基础上套一层TLS协议,对HTTP原来在TCP明文传输的内容进行加密,达到安全的目的。
HTTP 和 TLS 在协议层的位置以及 TLS 协议的组成如下图:

目前很多网站都启用了HTTPS,这肯定是未来的趋势。而且一些场景必须使用HTTPS协议的,比如微信公众号的某些功能、小程序接入H5等等。
详情参考:https://developer.baidu.com/resources/online/doc/security/https-pratice-1.html
1.2 Let’s Encripty介绍
Let’s Encrypt是一个非盈利的,免费的CA,可以提供免费HTTPS认证服务。
提供了一套完整的工具,基于这套工具,我们可以免费来搭建HTTPS 网站。
详情参考:https://letsencrypt.org/
1.3 ssllabs介绍
ssllabs可以提供对https部署进行安全监测,评价的服务。
详情参考:https://www.ssllabs.com/ssltest/analyze.html
2.Let’s Encrypt部署HTTPS服务
2.1 为什么使用Let’s Encrypt
国内有许多机构可以提供免费的SSL证书,但是一般只有一年的免费服务。而且基于cron可以实现定时更新证书,从而实现永久免费的目的。
2.2 安装Let’s Encrypt
第一步:安装git
因为后面需要使用从github拉取安装文件。
yum install git

第二步:获取letencrypt安装代码
cd /home
git clone https://github.com/letsencrypt/letsencrypt.git


letsencrypt就是从github下载下来的安装代码;

certbot-auto 是主要的安装命令。
第三步:签发SSL证书和密钥文件
./certbot-auto centonly --renew-by-default --email 1981715364@qq.com -d digdeep.diantusoft.com

可以看到使用standalone模式对 域名 digdeep.diantusoft.com 签发SSL证书成功。需要注意,standalone模式会使用本服务器的80端口来完成域名所有权的校验。所以需要保证80端口和443端口没有被占用。
standalone是一个独立的服务,可以看作是一个小型的webserver,它使用80或443端口来和letsencrypt服务器进行通信。因此,在使用standalone获取证书时,需要关闭正在运行的webserver,除非webserver使用的是80端口和443端口之外特殊的端口。
在完成Let's Encrypt证书的生成之后,我们可以看到生成的密钥证书文件:

cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件
如果我们使用的Nginx环境,那就需要用到fullchain.pem和privkey.pem两个证书文件,在部署Nginx的时候需要用到。
第四步:配置nginx启用SSL

第五步:测试https

如何nginx –s reload 没有加载证书,则重启Nginx.

可以看到https访问正常。
2.3 证书续期
Let’s Encrypt证书的有效期为90天,过期时需要手动更新续期。
下面我们是有cron来进行定期更新:
在每个月的1号,1点30分进行证书的更新;
在每个月的1号,1点35分重启nginx,使用新的证书;
2.4 对证书安全性进行测试
https://www.ssllabs.com/ssltest/analyze.html 访问这个网址,输入域名:
digdeep.diantusoft.com就可以进行测试,测试结果:

可以看到A级,是很好的安全级别。
这个测试结果还包括其他有用的信息:
1. TLS版本支持信息

2. 模拟不同客户端进行测试,测试兼容性信息:


可以看到不支持 XP下面的IE8,对XP的IE6没有进行测试。
2.5 转发到Tomcat
使用nginx配置了https,后端的tomcat就无需配置https。配置如下:

upstream配置,这里因为测试没有配置集群和对集群的健康检查。

再次访问测试:

可以看到已经被nginx代理到了tomcat了。并且tomcat无需另外再配置https.
2.5 http强制跳转https

浏览器访问:http://digdeep.diantusoft.com:88 会被重定向到 https://digdeep.diantusoft.com
3.参考文档
1. https://developer.baidu.com/resources/online/doc/security/https-pratice-1.html
2. https://letsencrypt.org/
3. https://www.ssllabs.com/ssltest/analyze.html
4. https://www.cnblogs.com/kevingrace/p/6187072.html
5. https://www.cnblogs.com/intval/p/5763929.html
使用Let's Encrypt搭建永久免费的HTTPS服务的更多相关文章
- ubuntu+let's encrypt生成永久免费https证书 ubuntu+tomcat+nginx+let's encrypt
1. 下载let's encrypt $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-ge ...
- centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问
acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E github:https://github.com/Neil ...
- docker获取Let's Encrypt永久免费SSL证书
一 起因 官方的cerbot太烦了,不建议使用 还不如野蛮生长的acme.sh,而这里介绍docker运行cerbot获取Let's Encrypt永久免费SSL证书 二 选型 cerbot的证书不会 ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉得独立博客的管 ...
- docker使用Let’s Encrypt协议构建免费https协议
简介:我们可以把自己的image上传到dockerhub或者阿里云的docker镜像仓库,但在实际使用中我们很多时候都用的是自己的registry,便于内部的共享等等优点,docker镜像默认支持ht ...
- 用letsencrypt搭建免费的https网站
环境:阿里云服务器centos7.3,nignx,letsencrypt做免费的https证书 Let’s Encrypt官网:https://letsencrypt.org/ 1.服务器开放端口:4 ...
- Qt编写自定义控件插件开放动态库dll使用(永久免费)
这套控件陆陆续续完善了四年多,目前共133个控件,除了十几个控件参考网友开源的代码写的,其余全部原创,在发布之初就有打算将动态库开放出来永久免费使用,在控件比较完善的今天抽了半天时间编译了多个qt版本 ...
- 宝塔Linux面板 5.1正式版永久免费
宝塔Linux面板 5.1正式版永久免费2017/06/16 2分钟装好面板,一键管理服务器 Linux版请确保纯净系统安装(支持CentOS.Ubuntu.Debian.Fedora),Web端管理 ...
- 记一款bug管理系统(bugdone.cn)的开发过程(3) - 永久免费化
BugDone永久免费了! BugDone(bug管理工具)已经发布有一阵子了,自发布以来注册用户量.项目创建量稳步提升,并且得到了很多用户的好评. 在开发BugDone工具之前,我们团队也曾为找不到 ...
随机推荐
- NIO 概述 与 通信实例
NIO 简述: NIO是在jdk1.4之后加入的一种基于缓冲区(buffer)和通道(channel)的I/O方式, nio是同步非阻塞的i/o模式,同步是指线程不断地轮询i/o事件,非阻塞是在处理i ...
- 利用div+css实现九宫格,然后用js实现点击每个格子可以随机更改格子(div)的背景颜色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python 语法的一些特性记录
装饰器@符号 装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象.它经常用于有切面需求的场景,比如:插入日志 ...
- python-2018.03.03
本周用python实现了 1.通过svn模块检出远程代码到本地(ps:修改了windows svn的一个编码模块的小bug),并通过调用MSbuild 编译.发布并打包发布后的代码 (注:以上需要安装 ...
- Android选择多图上传
大概是这么个效果,类似与微信朋友圈选择图片的效果,如下图所示 首先,图片预览的这个界面我用的是GridView,当然也可以使用GridLayout,根据需求制定行列即可.同时重写适配器实现末尾是添加图 ...
- 再见了,我最爱的OI~~~
唔,迟到了三个月的感言呢. 我就这样离开OI了,成为了一个退役的OIer,当年高一的时候还觉得自己有很多时间,没想转眼间自己就退役了.呵呵,来到OI 从没有在这个世界带起一丝风浪,也没有拿到一个满意的 ...
- Prime31
https://prime31.com/plugins
- [配置] win下maven配置
下载解压 打开环境变量 新建MAVEN_HOME 路径为maven根文件夹 PATH 末尾添加 %MAVEN_HOME%\bin; 命令行 mvn -v 检查 添加网易maven镜像库 阿里的也可以 ...
- CodePad系列之-Tkinter窗体
Codepad系列是将自己用过的一些小功能代码段记录下来,便于后续查找使用,是一个代码备忘录系列. 本文简单记录在用Tkinter开发GUI窗体时一些简单的代码段,以便后续使用.官方文档地址 - He ...
- 用matlab画漂亮的sin曲线
Technorati 标记: matlab,plot 相信大部分用过matlab的人都画过sin曲线,直接plot就可以了,不过呢,plot出来的曲线自然不那么好看,本着绳命在于折腾的原则,小弟学习了 ...