HTTPS的基本概念

HTTPS是披着SSL衣服的HTTP,由网景公司创造,所有浏览器都支持该协议。

HTTPS = HTTP+SSL(TLS),TLS是传输层加密协议,前身是SSL协议。HTTPS没有将未加密的HTTP报文直接发送给TCP,HTTPS在讲发文发送TCP之前,先发送给安全层SSL或者TLS,进行加密,现在HTTP安全层是通过SSL将其替代协议TLS来实现的。

HTTP和HTTPS的区别

SSL是安全层,建立在SSL隧道上需要做隧道认证,至少要完成单向认证或者双向认证,之后数据,在传输的过程中都进行了加密处理;通常HTTP使用的业务层做的数据字段的加密是业务数据的加密,传输过程中是没有加密的;而HTTPS是经过加密的,安全认证的。

  • HTTP是无状态的,明文传输,而HTTPS是经过SSL/TLS加密的安全传输。
  • HTTP连接端口是80,HTTPS是443,两者的连接端口也不相同。
  • HTTP不需要申请证书,HTTPS需要向CA机构申请证书。
  • HTTP因为不需要加密因此传输更快,HTTPS效率慢但是更安全。

HTTPS的优点

  • 服务端认证(防伪装)
  • 客户端认证(防伪装)通常现在web服务,不需要做客户端认证,只需要做服务器认证;
  • 客户端和服务器的数据不会被修改,因为整个传输过程是加密的。(完整性保护)
  • 客户端和服务器端的对话是加密的,不用担心被窃听,使用抓包工具监听HTTPS端口抓不到数据。
  • 所有客户端和服务器都支持这些协议

对称加密和非对称加密

对称加密

加密和解密都是用同一个密匙,他的优点是运算速度块,缺点是传输秘钥不安全。

非对称加密

又称作公开秘钥加密,加密和解密都使用不同的秘钥。

公钥所有人都能获取,通信发送方获得接收方的公钥后,可以使用公钥进行加密,接收方收到通信内容后使用私钥进行解密。

有点事更安全的传输数据,缺点是运行速度慢。

HTTPS采用的加密方式

对称加密效率高但是不安全,非对称加密安全但是运算慢。HTTPS采用混合加密机制,使用非对称密钥加密,传输对称密钥加密方式所需要的密钥,从而保证安全性;获取密钥后,再使用对称加密进行通信,保证效率。

认证

CA是数字证书认证机构是客户端与服务器双方都可信赖的第三方机构。

服务器的运行人员向CA提出公开密匙的申请,CA在判断申请者的身份后(有时会判断这个域名是不是属于你的公司),会对已经申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开的密钥证书绑定在一起。CA可以给你签发OV证书或者EV证书,他们还会人工验证你的公司是否符合他们的签发标准,这些是收费的,通常收费的证书申请的有效期是1年,免费申请的是3个月(DV证书Domain Validation)。

证书的组成

域名证书,证书链。CA还会根据你所申请的证书的配置环境是Nginx,IIS,Tomcat分为不同的文件,但是说到底其实我们需要的是一个证书链。

证书中包含:颁发机构(用来寻找链中的下一个验证节点),证书的有效期,证书申请信息,公钥(与服务器的私钥是一对),签名(用于验证证书内容是否被篡改)

流程如下,当用户访问已经申请证书的域名时,浏览器先判断这个服务器上的证书是不是可信的,关键一步是需要解密证书的签名部分,因为签名是由中间证书签发的,所以需要中间证书的公钥进行解密。如果解密后验证这个证书是合法的,然后再判断中间证书是否合法,因此仅需向上一级索要公钥,验证签名,直到进行到根证书,根证书是在操作系统中的,也就是在本地中可以找到根证书的公钥,如果系统没有,需要手动导入。

使用openssl怎么制造证书

首先安装OpenSSL软件,然后通过命令

openssl req -new -newkey rsa:2048 -nodes -keyout www.test.com.key -out www.test.com.csr

进入交互界面后,填写你的国家麻城市没名字,申请的域名,邮箱等。

申请后会得到两个文件一个是xxx.key,另一个是xxx.csr。

从域名角度分析,证书分为单域名,通配符域名,多域名证书。csr文件包含了证书申请的信息,加密和散列算法以及公钥,同时也有了自己的私钥。

参考大牛的HTTPS原理详解

CYC2018-Note

网络之HTTPS的更多相关文章

  1. ios9网络请求https适配

    发现问题:今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息: The resource could not be loaded because the App Transport S ...

  2. 网络协议-HTTPS

    转载:http://www.renfed.com/2017/02/03/https/ 一.解决问题 HTTPS解决的是中间人攻击 公网:域名解析--IP:所以中间站点抢答返回错误IP 局域网:路由器找 ...

  3. NodeJS学习笔记 (9)网络服务-https(ok)

    模块概览 这个模块的重要性,基本不用强调了.在网络安全问题日益严峻的今天,网站采用HTTPS是个必然的趋势. 在nodejs中,提供了 https 这个模块来完成 HTTPS 相关功能.从官方文档来看 ...

  4. [Python] 前程无忧招聘网爬取软件工程职位 网络爬虫 https://www.51job.com

    首先进入该网站的https://www.51job.com/robots.txt页面 给出提示: 找不到该页 File not found 您要查看的页已删除,或已改名,或暂时不可用. 请尝试以下操作 ...

  5. 网络安全通信https工作原理

    HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据 1. ...

  6. 网络编程-HTTPS

    明文: 对称加密: 非对称:(公钥:pk 私钥:sk) 对称+非对称: 先用非对称方式发送num1给server,server用私钥得出key(由num1算出来),自此,约定C.S以此key(num1 ...

  7. iOS开发——网络篇——数据安全(MD5),HTTPS,检测网络状态

    一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 ...

  8. 理解Docker(6):若干企业生产环境中的容器网络方案

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  9. iOS开发网络篇—监测网络状态(转)

    文章转载自:http://www.cnblogs.com/wendingding/p/3950114.html iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时 ...

随机推荐

  1. Mysql为什么使用b+树,而不是b树、AVL树或红黑树?

    首先,我们应该考虑一个问题,数据库在磁盘中是怎样存储的?(答案写在下一篇文章中) b树.b+树.AVL树.红黑树的区别很大.虽然都可以提高搜索性能,但是作用方式不同. 通常文件和数据库都存储在磁盘,如 ...

  2. centos7网卡bond配置--自己另一篇文章的补充

    这篇文章是自己另一篇文章的第二种方法的一个完善的补充 https://www.cnblogs.com/zzf0305/p/9588585.html 1 备份网卡配置文件2 使用nmcli命令配置bon ...

  3. STL——容器(Map & multimap)的排序与遍历

    1. Map & multimap 的排序与遍历 map<T1,T2,less<T1> >  mapA; //该容器是按键的升序方式排列元素.如果未指定less< ...

  4. 珍藏的C语言编程系列教程

    本文有332个文字,大小约为2KB,预计阅读时间1分钟 这是本人珍藏的C语言.C++系列教程. 相信每个Coder的第一门编程语言就是C语言吧, 现在也依然很热门,不谈了.直接上链接,感兴趣的直接存, ...

  5. Jmeter(2)基础知识

    一.Jmeter测试计划 1.测试计划用来描述一个性能/接口测试的脚本和场景设计 独立运行每个线程组:用于控制测试计划中的多个线程组的执行顺序.不勾选时,默认各线程组并行.随机执行. 主线程结束后运行 ...

  6. Docker的容器使用与连接-Window

    启动容器 启动容器之前需要先拉取镜像,然后通过 run 命令启动容器,同一个镜像可以启动多个容器,只要执行多次 run 命令就行了.我们这边启动 centos 的镜像. PS D:\> dock ...

  7. django添加检查用户名和手机号数量接口

    1.1 在user/urls.py中添加 urlpatterns = [ path('count/', views.RegCountView.as_view()), # 查询用户名手机号使用量的视图, ...

  8. 谁再问Servlet的问题,我就亲自上门来教学了

    1. 概述 在这篇简短的文章中,我们将从概念上理解什么是servlet 和 servlet 容器以及它们是如何工作的. 同时,还能在请求.响应.会话对象.共享变量和多线程的上下文中看到它们的身影. 2 ...

  9. Java获取到异常信息进行保存(非Copy)

    吐槽:不知道从什么时候开始,各大博客网站的文章开始各种复制粘贴,想好好找一个解决方法,搜索出来的博客基本上千篇一律,主要是能解决问题也还行,还解决不了问题这就恶心了.... 所以被迫自己写一篇文章,然 ...

  10. 职场PUA,管理者的五宗罪

    在目前的社会环境下,程序员似乎成了"弱势群体".我们经常谈论的职场PUA已经成为程序员的代名词. 我一直在想,为什么这么多管理者能力会这么差. 但最后最吃亏的还是可怜的程序员. 也 ...