网站SSL安全证书认证的基本过程和原理
现在的网站基本上都迁移到了https协议上,https是http协议的安全升级版本。
在原来的http协议下,如果有人截获了你发送给服务器的报文,就能获取里面的信息,比如用户名乃至密码。
所以http协议单纯从传输层面看是不安全的,其信息安全性得依赖额外的应用层面来保证。
那么如何保证信息交互的安全性呢,一般是通过密钥对的方式,也就是数学算法上可以把一个密钥分成2个部分,
一半是公钥,一半是私钥。公钥加密的信息必须用私钥来解密,反之亦然。
这样即使你发送的信息被黑客截获,在没有私钥的情况下,仍然不能解密你的信息,从而保证了信息传输的安全。
要建立一个https网站,首先需要申请一个安全证书,向证书颁发机构提交一个CSR(证书)文件,这个文件可以通过网站在线生成也可以在服务器上通过命令行(linux上)或者一些界面工具(windows上)来生成。
什么是CSR文件?
CSR全名是Certificate Signing Request,也就是证书签名请求,在生成这个csr文件的时候,通常会同时生成一个key文件,csr文件包含了公钥和申请人的基本信息(比如域名、公司和地址信息等),key则包含了私钥。key文件自己妥善保存不要交给任何人,而把csr文件提交给CA(发证机构),CA使用你提交的相关信息生成证书(通常是一个pem编码格式的文件)。然后你可以在web服务器上安装证书(安装时需要用到key文件)。
HTTPS请求过程
证书安装好后,客户端通过https访问你的网站,其过程如下:
1. 客户端向服务器发送访问请求;
2. 服务器将证书发送给客户端;
3. 客户端开始对证书进行认证:
* 在证书中获取证书的颁发机构字段
* 在系统证书目录下寻找,颁发机构的根证书,如果找到则通过,如果没有找到,给用户弹出提示,由用户选择是否信任该证书
* 验证证书是否过期,证书中的服务器域名字段是否和我们实际访问的服务器域名一致,通过计算证书hash值判断是否被篡改。
4. 证书认证通过后,客户端使用协商好(过程略)的加密方案生成随机码,用作通信过程中的密码,使用服务端证书中获取到的公钥进行加密并发送给服务端;
5. 服务器收到后,使用证书对应的私钥进行解密,获取到对称加密的通信密码;
6. 使用对称加密通信。
HTTPS工作在第几层?
回答这个问题得限定网络模型上下文,如果是OSI模型,那么HTTPS工作在TOP5以上(会话层、表达层和应用层,区分不是那么明确),如果是TCP/IP模型,那么显然HTTPS也是应用层协议。原则上HTTPS是应用层的协议,只不过,在使用HTTPS时,实际上是建立了一个SSL(TLS)连接,把HTTP应用层的数据通过SSL来安全传输,所以从网络传输的角度而言,它是工作在会话和表达层,只是在网络两端会有应用层的加解密处理。
最新评论
- 相关文章
CentOS6 Apache2.2用域名配置多虚拟机
在CentOS下使用域名配置多虚拟机的步骤如下:
1. 使用ES6小知识:动态对象键(Dynamic Object Keys)语法简介
在ES5,对象的键(key)总是被解释为字符串。ES6允许我们使用计算的值作为对象的键,使用方括号:[myKey]const
深入理解JS和CSS3动画性能问题和技术选择
本文对比了JS及其框架和CSS3的动画性能,并深入剖析了其内在原因。技术结论大致如下:1. jQuery出于设计原因,在动画性能上表现最差2. CSS3由于把动画逻辑推给了...
HTTP/2背景和新特性简介
计算WebGL中的uniforms变量使用数
在使用Three.js为人体模型加载皮肤材料时,启用了skinning:true的参数。有时候会导致GL编译错误,提示“too many uniforms”。下面的文章有助于理解错误原因和检...
WebGL 纹理映射模式以及WRAP_S | WRAP_T参数详解
我们在纹理滤镜一文中已经说明了2个重要的纹理参数,用来定义对象缩放时纹理的处理方式:GL_TEXTURE_MIN_FILTERGL_TEXTURE_MAG_FILTER本文讲解其余几个纹理参数...
Three.js入门教程2 - 着色器(上)
如何实现SVG clipPath自适应被裁剪对象
CSS3中引入的clip-path(裁剪路径)属性是一个很强大的特性。
clip-path的含义如下图所示,好比剪纸一样,你用剪刀沿着某条路径把目标对象(图像或元素)裁...WebGL入门教程3 - Canvas、Context、API和绘制一个矩形
如何使用CSS3实现一个平滑的3D文本标题
要实现3D文本,基本上有3种方法:1. 使用CSS3的投影滤镜(filter: drop-shadow)2. 使用3d建模和CSS3 3d变换来实现(最真实)3. 使用CSS3 text-shadow属性来实现...
使用CSS3实现流星雨动画教程
很多营销页面中需要实现类似流星雨的动画背景,营造节日浪漫的气氛。要实现这样的效果,有两种方法,一个是使用Canvas,一个是使用纯CSS3,我们这里介绍第2种方...
如何使用CSS3/SCSS实现逼真的车窗雨滴效果
在天气预报类的Web移动应用中,常常需要实现屏幕的雨滴效果,表示阴雨天气。感觉上比较神奇,其实想通了,这个效果的实现只需要一点物理知识和CSS3的简单变换。实现一个小雨滴首先雨滴是一个个小的椭圆形元素:.raindrop
更多...