使用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工具之前,我们团队也曾为找不到 ...
随机推荐
- 20165214 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 Week5
<网络对抗技术>Exp3 免杀原理与实践 Week5 一.实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shell ...
- 18-09-13 机器人和服务器之间的ip配置和脚本的重启
问题9 服务器安装完毕后 怎么配置机器人客户端的配置ip
- windows下安装memcached,报错:Failed to ignore SIGHUP RESULT too large
小平板不想装虚拟机, 但是却跑不起memcached 网上虽有解决方案,但都只有一条命令, 没有出处. 翻了半天, 找到这个连接 https://commaster.net/content/insta ...
- 2017年5月17日20:14:29 rabbitmq 消费 异常信息无法处理 导致轮询
同事说如果同步的配置的正确的话不会出现这种问题 只有异常的情况下才会,但是 我就真的出现了//TODO 等我有时间的时候再查查看. 如果是异步的出现这种问题的话 包进AmqpRejectAndDont ...
- 网页中,鼠标点击与javascript的click事件怎么区分处理
就下面问题发现另一个方式: js代码: <script> //IE if(document.all) { document.getElementById("clickme&quo ...
- python学习第一次笔记
python第一次学习记录 python是什么编程语言 变成语言主要从以下几个角度进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言. 1.1编译型与解释性 编译型:一次性将 ...
- Anagram字符串处理(STL真方便啊。。)
题意:给出一些字符串,认为各个字符个数相同的字符串就是相同的,不区分大小写,找出这些字符串中不与其他字符串相同的字符串并挨个输出 用char orgin[][]把每个字符串保存起来,然后对每个字符串都 ...
- Angular4.0中常用指令
Angular 4.0 1. 指令:*ngFor 循环带索引的两种方法: <tr *ngFor="let item of listWorkingDetails index as i&q ...
- 获取choice的value
- Team416
软件工程小组今天成立了! 成员:计科1704 杨璐华 俞天耀 杨通玉 王旭 分工: 项目经理: 杨璐华 需求分析: 俞天耀 运行维护: 杨通玉 软件架构: 王旭 我们团队关于此次软件工程项目的分工大 ...