HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议:
它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息,它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。总的来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全。
  在URL前加https://前缀表明是用SSL加密的,你的电脑与服务器之间收发的信息传输将更加安全。 Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
HTTPS 的作用
它的主要作用可以分为两种:一种是建立一个 信息安全 通道,来保证数据传输的安全;另一种就是确认网站的真实性。
a . 一般意义上的 https ,就是服务器有一个证书。主要目的是保证服务器就是他声称的服务器,这个跟第一点一样; 服务端 和客户端之间的所有 通讯 ,都是加密的。
b. 具体讲,是客户端产生一个对称的 密钥 ,通过服务器的证书来交换密钥,即一般意义上的握手过程。
c. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。
d .少许对客户端有要求的情况下,会要求客户端也必须有一个证书。
这里客户端证书,其实就类似表示个人信息的时候,除了用户名 / 密码,还有一个 CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。目前少数个人银行的专业版是这种做法,具体证书可能是拿 U 盘(即 U 盾)作为一个备份的载体。
HTTPS解决的问题:
1 . 信任主机的问题.
采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任此主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
2 . 通讯过程中的数据的泄密和被窜改
1) 一般意义上的https, 就是 server 有一个证书.
a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.
b) 服务端和客户端之间的所有通讯,都是加密的.
i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.
ii. 所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.
2). 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说别人无法模拟的,所有这样能够更深的确认自己的身份.
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.
3.HTTPS 一定是繁琐的.
a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.
i. 任何应用中,过多的round trip 肯定影响性能.
b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.
i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.
ii. 加密后数据量的影响. 所以,才会出现那么多的安全认证提示。
//java访问HTTPS链接
try {logger.debug("开始访问HTTPS >>>>>>>> ");//创建URL对象URL myURL = new URL("https://www.oschina.net/news/83188/2017-april-yuanchuanghui");//创建HttpsURLConnection对象,并设置其SSLSocketFactory对象HttpsURLConnection httpsConn = (HttpsURLConnection) myURL.openConnection();/** 服务器端禁止抓取,返回HTTP 403命令,禁止恶意访问此网站,不能从此网站中抓取内容;我们可以通过设置User-Agent来欺骗服务器* http://blog.sina.com.cn/s/blog_65be362c01011ptj.html* 不需要登录的情况下:* httpsConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");*///取得该连接的输入流,以读取响应内容InputStreamReader isReader = new InputStreamReader(httpsConn.getInputStream());//读取服务器的响应内容,并显示int respInt = isReader.read();while(respInt != -1){logger.debug("返回信息:" + respInt + "");}
} catch (MalformedURLException e) {logger.error("URL格式错误",e);
} catch (IOException e) {e.printStackTrace();
}
SSL 简介
1 )简介
SSL (Secure Socket Layer) 为 Netscape 所研发,用以保障在 Internet 上数据传输之安全,利用数据加密 (Encryption) 技术,可确保数据在网络上之传输过程中不会被截取及窃听。它已被广泛地用于 Web 浏览器与服务器之间的身份认证和加密数据传输。 SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
2 ) SSL 提供的服务
a. 认证用户和服务器,确保数据发送到正确的 客户机 和服务器
b. 加密数据以防止数据中途被窃取
c. 维护数据的完整性,确保数据在传输过程中不被改变。
3) SSL 协议的握手过程
SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。 SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:
① 客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
② 服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
③ 客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的 “ 发行者的数字签名 ” ,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
④ 用户端随机产生一个用于后面通讯的 “ 对称密码 ” ,然后用服务器的公钥(服务器的公钥从步骤 ② 中的服务器的证书中获得)对其加密,然后传给服务器。
⑤ 服务器用私钥解密 “ 对称密码 ”( 此处的公钥和私钥是相互关联的,公钥加密的数据只能用私钥解密,私钥只在服务器端保留。详细请参看:   http://zh.wikipedia.org/wiki/RSA%E7%AE%97%E6%B3%95 ) ,然后用其作为服务器和客户端的 “ 通话密码 ” 加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。
⑥ 客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤 ⑤ 中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。
⑦ 服务器向客户端发出信息,指明后面的数据通讯将使用的步骤 ⑤ 中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
⑧ SSL 的握手部分结束, SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

HTTPS协议与web服务器交互时的交互过程:
客户端请求SSL连接,并将自己支持的加密规则发给网站。服务器端将自己的身份信息以证书形式发回给客户端。证书里面包含了网站地址,加密公钥,以及证书的颁发机构。
获得证书后,客户要做以下工作:
1)验证证书合法性
2)如果证书受信任,客户端会生成一串随机数的密码,并用证书提供的公钥进行加密。
3)将加密好的随机数发给服务器。
获得到客户端发的加密了的随机数之后,服务器用自己的私钥进行解密,得到这个随机数,把这个随机数作为对称加密的密钥。
之后服务器与客户之间就可以用随机数对各自的信息进行加密,解密。
注意的是:证书是一个公钥,这个公钥是进行加密用的。而私钥是进行解密用的。公钥任何都知道,私钥只有自己知道。这是非对称加密。而对称加密就是钥匙只有一把,我们都知道。之所以用到对称加密,是因为对称加密的速度更快。而非对称加密的可靠性更高。

HTTP、HTTPS、SSL总结相关推荐

  1. 浅谈https\ssl\数字证书

    在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本 ...

  2. Sahi (2) —— https/SSL配置(102 Tutorial)

    Sahi (2) -- https/SSL配置(102 Tutorial) jvm版本: 1.8.0_65 sahi版本: Sahi Pro 6.1.0 参考来源: Sahi官网 Sahi Quick ...

  3. SharePoint 2013 配置HTTPS(SSL)

    //来源:http://www.cnblogs.com/jianyus/p/4234780.html 1.打开服务器上的IIS,找到服务器证书,如下图: 2.进入服务器证书,点击右侧操作"创 ...

  4. 【ruoyi若依】启用HTTPS/SSL后,首页重定向出错

    前言 ruoyi 4.6.0 Spring Boot Version: 2.3.4.RELEASE nginx 1.5.11 nginx 反向代理项目.参考这里 添加了 ForwardedHeader ...

  5. 易语言https服务器,E2EE应用服务器套件 - 文档 - [基础教程] 使用HTTPS(SSL) - E2EE易语言网站敏捷开发框架...

    使用HTTPS(SSL) 1.申请证书 首先您需要申请SSL/TLS证书. 介绍几个免费SSL证书申请网站: 申请证书的方式网上有很多相关资料,这里就不多做说明了. 申请证书后通常会有以下三个文件: ...

  6. AFNetworking 对数据进行https ssl加密

    参考来源:http://www.cnblogs.com/jys509/p/5001566.html 现在在工作中的工作需求:https请求验证证书 一般来讲如果app用了web service , 我 ...

  7. Apache httpd 配置HTTPS SSL访问 443

    2, 首先安装https模块yum install mod_ssl 3. 配置Apache Web服务器 首先,修改下面的配置文件.仅需配置红色部分 SSLCertificateFile 和 SSLC ...

  8. 细读HTTPS -- SSL/TLS历史,密码学

    文章目录 细读HTTPS -- SSL/TLS历史,密码学 SSL/TLS协议历史 密码学 对称加密 分组密码模式 ECB CBC 非对称加密 消息验证代码 散列函数 数字签名 细读HTTPS – S ...

  9. WebService系列之Axis Https(SSL)证书校验错误处理方法

    WebService系列之Axis Https(SSL)证书校验错误处理方法 最近在用Axis调用https的接口,抛出异常: javax.net.ssl.SSLHandshakeException: ...

  10. python sanic 设置ssl证书_配置自签https ssl证书

    由于人们越来越重视网络安全,所以很多平台及系统都要求使用https方式接入.而且一些开源服务框架在调用时也只接受https请求,这将导致平时开发/测试时需要用到ssl证书的地方越来越多. 在2016年 ...

最新文章

  1. 深度学习必懂的13种概率分布
  2. 人口预测和阻尼-增长模型_使用分类模型预测利率-第1部分
  3. 东大18春计算机基础在线作业,东大18春学期《计算机基础》在线作业123满分答案...
  4. Flask 提取数据库中的数据
  5. C语言课后习题(65)
  6. 中国最让人脸红的节目:爆火14年的湿身诱惑,为何还没被叫停?
  7. sklearn学习之KNN
  8. 百度app不支持popstate_这一次谷歌很强硬,从现在起你的 App 再不支持,将拒绝上架!...
  9. 推理集 —— 工作与职业
  10. springboot接口返回封装与异常控制
  11. 在Linux操作系统下修改IP、DNS和路由配置
  12. 201632位matlab下载_Matlab 2016a下载
  13. 业余剪辑——从拍摄到剪辑到加字幕
  14. 一个例子学会自相关互相关的计算
  15. mysql 表分区 排序_mysql 表分区
  16. (萌新的数电学习)用 VHDL语言设计一个异或门
  17. 不是所有数学命题都是可以被证明或证伪
  18. 位(bit)、字节(Byte)、MB(兆位)换算关系
  19. 2022年百华鞋业祝您新年快乐,虎年大吉
  20. 4.20 扣1送地狱火

热门文章

  1. 访问控制管理的积极意义案例
  2. Visual Studio DSL 入门 9---创建状态机的图形符号
  3. Is this a MS EnterLib DAAB BUG or not?
  4. Android窗口View层次
  5. malloc,calloc和realloc函数
  6. Android 如何在App中启动系统闹钟
  7. SDNU 1194.传纸条(DP) 1032.机器人
  8. jQuery同时监听两个事件---实现同时操控两个按键
  9. 网络流 增广路 回退
  10. Java 比较两个日期的方法