免费SSL证书申请和部署

1. 问题产生

在这里插入图片描述
登录服务器,域名访问出现这种问题,公众号甚至访问不了,一般是域名安全证书SSL到期了!

2 SSL证书是什么

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。
SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏等。

3 证书分类和选择

SSL证书依据功能和品牌不同分类有所不同,但SSL证书作为国际通用的产品,最为重要的便是产品兼容性(即证书根预埋技术),因为他解决了网民登录网站的信任问题,网民可以通过SSL证书轻松识别网站的真实身份。SSL证书分为如下种类:
扩展验证型(EV)SSL证书
组织验证型(OV)SSL证书
域名验证型(DV)SSL证书

普通企业和个人一般申请DV的就够用!

登录各大**云官网,
在这里插入图片描述
查到的都是高价的ssl,直到我看到了下面这个(真香!)
在这里插入图片描述

4 免费SSL证书申请

这里以腾讯云为例
搜索ssl,点击第一个查看免费申请流程。
在这里插入图片描述
或在选购证书窗口选择
在这里插入图片描述
这里附上主要申请教程
https://cloud.tencent.com/document/product/400/6814

需要注意的是需要一个验证
在这里插入图片描述
本人选择了3文件验证(1为该网站购买的域名才能用,2比较麻烦)
文件验证教程如下:
https://cloud.tencent.com/document/product/400/4142#.E6.96.87.E4.BB.B6.E9.AA.8C.E8.AF.81

这里需要注意的是,需要在网站根目录创建一个.well-known文件夹,把文件放进去用域名访问到里面内容即表示审核通过,.well-known文件夹需要到命令行创建
在这里插入图片描述
这里如果域名为www开头的必须再验证一次主域名,待审核通过后证书就能申请成功啦!
在这里插入图片描述

5 SSL证书部署

申请完后需要部署ssl证书到服务器
1、打开Tomcat文件夹,里面有两个文件,第一个jks文件就是证书,那个txt文件是系统生成的密钥,如果你之前在填写证书的时候自己填了秘钥,那么文件夹里没有这个文件了;
在这里插入图片描述

2、把.jks文件复制到你的云服务器上的Tomcat下的conf文件中;
3、配置server.xml文件,需要修改三个地方;
在这里插入图片描述
在这里插入图片描述
此时server.xml的配置工作就完成了。

4、尝试使用https://+域名来访问,如果显示找不到页面,那么就应该是你的云服务器的443端口被防火墙拦截了,此时就需要打开443端口。

6 在云服务器上开启SSL443端口

1、依次点击“开始”——“控制面板”——“系统和安全”——“Windows防火墙”;

2、选择打开或关闭防火墙;
在这里插入图片描述
3、启用Windows防火墙;
在这里插入图片描述
4、此时防火墙处于开启状态,选择“高级设置”
在这里插入图片描述

5、依次点击“入站规则”——“新建规则”;
6、选择“端口”,下一步;
在这里插入图片描述

7、选择“特定本地端口”,然后在后面的输入框中填443(当然选择所有本地端口也可以开启443端口,但是端口全部开放可能会造成一定隐患,不建议),下一步
在这里插入图片描述

8、选择“允许连接”,下一步;
在这里插入图片描述

9、默认三个全部勾选,下一步;
在这里插入图片描述

10、填写规则名称,建议填一个容易辨识的名字,描述可填可不填,点击完成;
在这里插入图片描述

11、此时端口启用成功。
在这里插入图片描述
最后用https://访问我们的域名,看到这个能进入网站表示ssl证书安装成功。
其他云网站的申请和部署也同理;值得注意的是,这个证书有效期为一年,有的甚至是短短几个月,等有效期满了,我们再申请一个放进去就可以了。
嘿嘿嘿!问题解决!
在这里插入图片描述

7. HTTP 协议和HTTPS协议

  1. HTTP 协议
    在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。
    1.1 HTTP 协议介绍

HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。
图片

HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆分成立六个单独的协议说明(RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、RFC 7235),通讯报文如下:
请求

...

1.2 HTTP 中间人攻击

HTTP 协议使用起来确实非常的方便,但是它存在一个致命的缺点:不安全。
我们知道 HTTP 协议中的报文都是以明文的方式进行传输,不做任何加密,这样会导致什么问题呢?下面来举个例子:
小明在 JAVA 贴吧发帖,内容为我爱JAVA:
图片

小明被群嘲
可以看到在 HTTP 传输过程中,中间人能看到并且修改 HTTP 通讯中所有的请求和响应内容,所以使用 HTTP 是非常的不安全的。
1.3 防止中间人攻击

这个时候可能就有人想到了,既然内容是明文那我使用对称加密的方式将报文加密这样中间人不就看不到明文了吗,于是如下改造:
双方约定加密方式图片使用 AES 加密报文图片

这样看似中间人获取不到明文信息了,但其实在通讯过程中还是会以明文的方式暴露加密方式和秘钥,如果第一次通信被拦截到了,那么秘钥就会泄露给中间人,中间人仍然可以解密后续的通信:
图片

那么对于这种情况,我们肯定就会考虑能不能将秘钥进行加密不让中间人看到呢?答案是有的,采用非对称加密,我们可以通过 RSA 算法来实现。这个步骤实际操作也是比较简单的,在码匠笔记订阅号后台回复HTTPS就可以查看搭建HTTPS服务视频。
在约定加密方式的时候由服务器生成一对公私钥,服务器将公钥返回给客户端,客户端本地生成一串秘钥(AES_KEY)用于对称加密,并通过服务器发送的公钥进行加密得到(AES_KEY_SECRET),之后返回给服务端,服务端通过私钥将客户端发送的AES_KEY_SECRET进行解密得到AEK_KEY,最后客户端和服务器通过AEK_KEY进行报文的加密通讯,改造如下:
图片

可以看到这种情况下中间人是窃取不到用于AES加密的秘钥,所以对于后续的通讯是肯定无法进行解密了,那么这样做就是绝对安全了吗?
所谓道高一尺魔高一丈,中间人为了对应这种加密方法又想出了一个新的破解方案,既然拿不到AES_KEY,那我就把自己模拟成一个客户端和服务器端的结合体,在用户->中间人的过程中中间人模拟服务器的行为,这样可以拿到用户请求的明文,在中间人->服务器的过程中中间人模拟客户端行为,这样可以拿到服务器响应的明文,以此来进行中间人攻击:
图片

这一次通信再次被中间人截获,中间人自己也伪造了一对公私钥,并将公钥发送给用户以此来窃取客户端生成的AES_KEY,在拿到AES_KEY之后就能轻松的进行解密了。
中间人这样为所欲为,就没有办法制裁下吗,当然有啊,接下来我们看看 HTTPS 是怎么解决通讯安全问题的。
2. HTTPS 协议

2.1 HTTPS 简介

HTTPS 其实是SSL+HTTP的简称,当然现在SSL基本已经被TLS取代了,不过接下来我们还是统一以SSL作为简称,SSL协议其实不止是应用在HTTP协议上,还在应用在各种应用层协议上,例如:FTP、WebSocket。
其实SSL协议大致就和上一节非对称加密的性质一样,握手的过程中主要也是为了交换秘钥,然后再通讯过程中使用对称加密进行通讯,大概流程如下:

图片

这里我只是画了个示意图,其实真正的 SSL 握手会比这个复杂的多,但是性质还是差不多,而且我们这里需要关注的重点在于 HTTPS 是如何防止中间人攻击的。
通过上图可以观察到,服务器是通过 SSL 证书来传递公钥,客户端会对 SSL 证书进行验证,其中证书认证体系就是确保SSL安全的关键,接下来我们就来讲解下CA 认证体系,看看它是如何防止中间人攻击的。
2.2 CA 认证体系

上一节我们看到客户端需要对服务器返回的 SSL 证书进行校验,那么客户端是如何校验服务器 SSL 证书的安全性呢。
权威认证机构
在 CA 认证体系中,所有的证书都是由权威机构来颁发,而权威机构的 CA 证书都是已经在操作系统中内置的,我们把这些证书称之为CA根证书:
图片

签发证书
我们的应用服务器如果想要使用 SSL 的话,需要通过权威认证机构来签发CA证书,我们将服务器生成的公钥和站点相关信息发送给CA签发机构,再由CA签发机构通过服务器发送的相关信息用CA签发机构进行加签,由此得到我们应用服务器的证书,证书会对应的生成证书内容的签名,并将该签名使用CA签发机构的私钥进行加密得到证书指纹,并且与上级证书生成关系链。
这里我们把百度的证书下载下来看看:
图片

可以看到百度是受信于GlobalSign G2,同样的GlobalSign G2是受信于GlobalSign R1,当客户端(浏览器)做证书校验时,会一级一级的向上做检查,直到最后的根证书,如果没有问题说明服务器证书是可以被信任的。
如何验证服务器证书
那么客户端(浏览器)又是如何对服务器证书做校验的呢,首先会通过层级关系找到上级证书,通过上级证书里的公钥来对服务器的证书指纹进行解密得到签名(sign1),再通过签名算法算出服务器证书的签名(sign2),通过对比sign1和sign2,如果相等就说明证书是没有被篡改也不是伪造的。

图片

这里有趣的是,证书校验用的 RSA 是通过私钥加密证书签名,公钥解密来巧妙的验证证书有效性。
这样通过证书的认证体系,我们就可以避免了中间人窃取AES_KEY从而发起拦截和修改 HTTP 通讯的报文。

总结

首先先通过对 HTTP 中间人攻击的来了解到 HTTP 为什么是不安全的,然后再从安全攻防的技术演变一直到 HTTPS 的原理概括,希望能让大家对 HTTPS 有个更深刻的了解。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值