http&https&证书&数字签名

http协议

http是超文本传输协议,是用来网络间传输数据。底层是tcp协议(传输控制协议)。

是一种面向连接的主机对主机层的可靠传输,这里的可靠是指数据丢失极小。Tcp建立一次连接需要经过3次握手,然后才开始传输数据。就是请求-回应-再确认,保证发送和接收。

因此传输数据的效率不及udp数据报文协议(一种非面向连接的不可靠传输协议)。

http协议传输数据,数据在网络间是明文传输的,因此不是很安全,容易被窃取。

https协议

是http协议的安全版,数据传输利用了加密技术,在网络传输中数据就不是处于裸奔状态了。

对称加密和非对称加密

加密有两种,对称加密和非对称加密。

对称加密,即对数据的加密和解密都是用同一个秘钥,这个秘钥由发送方和接收方共同维护。但是共同维护这其中成本较高。

非对称加密,即对数据的加密和解密用不同的秘钥。一般发送方用一个公钥来对发送的数据加密,接收方用一个秘钥来解密。

https采用的加密技术就是非对称加密技术,浏览器端使用服务器提供的公钥进行对数据加密发给服务器,服务器用私钥对数据进行解密。解密后又将要返回的数据用秘钥加密,浏览器又用公钥解密。

有没有发现上面的过程还是有不安全的地方,因为公钥是公开的,在服务器端对数据用秘钥加密后,传输给请求者,这时候其他人就可以截获数据利用公钥解密,这样就可能会发生数据泄露的危险。

有没有更好的解决办法呢。有,就是请求方和服务器之间协议出一个秘钥(具体过程目前不太清楚)。请求方将这个秘钥夹在数据中公钥加密后传输给服务器,服务器用私钥进行解密,从数据中得到这个私钥,然后将要返回的数据用这个私钥加密后传输给请求方。请求方用之前的协议出的秘钥解密。

证书和CA

以上还有一个问题,就是服务器怎么将公钥送到请求者手中呢?就要讲讲证书和CA了。

证书顾名思义,能证明其身份证书。而CA就是颁发安全证书的权威机构。

通常是服务器端会将公钥发给CA,CA会产生一个安全证书,证书里面就包含服务器的公钥。

证书颁发的细节这里先不展开,可以先简单理解为,网站(服务器)向CA提交了申请,CA审核通过后,将证书颁发给网站(服务器),用户访问网站(服务器 )的时候,网站(服务器)将证书给到用户。

数字签名和摘要

上面说到证书,就要提一提数字签名和摘要了。

数字签名和摘要是要来保证证书的合法有效的强力手段。

摘要就是对传输的内容用hash算法对其计算得到一个固定长度的串,就是摘要了。

然后对摘要用CA的私钥进行加密就属于数字签名了。

必须要用CA的公钥才能解密。

证书包含了如下内容:

  1. 证书包含了颁发证书的机构的名字 -- CA
  2. 证书内容本身的数字签名(用CA私钥加密)
  3. 证书持有者的公钥
  4. 证书签名用到的hash算法

CA本身有自己的证书,江湖人称“根证书”。这个“根证书”是用来证明CA的身份的,本质是一份普通的数字证书。

浏览器通常会内置大多数主流权威CA的根证书。

浏览器内置的CA的根证书包含了如下关键内容:

  1. CA的公钥(非常重要!!!)

鉴别证书:

完全伪造的证书

这种情况比较简单,对证书进行检查:

  1. 证书颁发的机构是伪造的:浏览器不认识,直接认为是危险证书
  2. 证书颁发的机构是确实存在的,于是根据CA名,找到对应内置的CA根证书、CA的公钥。
  3. 用CA的公钥,对伪造的证书的摘要进行解密,发现解不了。认为是危险证书

篡改过的证书

假设代理通过某种途径,拿到XX的证书,然后将证书的公钥偷偷修改成自己的,然后喜滋滋的认为用户要上钩了。然而太单纯了:

  1. 检查证书,根据CA名,找到对应的CA根证书,以及CA的公钥。
  2. 用CA的公钥,对证书的数字签名进行解密,得到对应的证书摘要AA
  3. 根据证书签名使用的hash算法,计算出当前证书的摘要BB
  4. 对比AA跟BB,发现不一致--> 判定是危险证书

参考了园里大神的文章 http://www.cnblogs.com/chyingp/p/https-introduction.html

时间: 2024-10-13 15:21:35

http&https&证书&数字签名的相关文章

https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

转自:https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL 因为项目中要用到TLS + SASL 来做安全认证层. 所以看了一些网上的资料, 这里做一个总结. 1. 首先推荐几个文章: 数字证书: http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html 数字证书和SSL: http://www.2cto.com/Article/201203/121534.html 数字签名: http://www.

什么是https证书?为什么要申请HTTPS证书?

**> https证书是什么? HTTPS证书其实一种一种传输协议.HTTP协议传输的数据都是未加密的,这就意味着用户填写的密码.账号.交易记录等机密信息都是明文,随时可能被泄露.窃取.篡改,从而被***加以利用,因此使用HTTP协议传输隐私信息非常不安全.使用HTTPS加密协议访问,可激活 (SSL协议(什么是SSL协议),这样子就可以实现高强度双向加密传输,防止在传输数据的时候信息遭到泄露.简单讲,HTTPS=HTTP+SSL,即HTTPS是HTTP的安全版 SSL证书实际上就是CA机构对用

申请https证书需要注意的4大问题

HTTPS证书是什么 https证书是数字证书中的一种,由受信任的数字证书颁发机构CA如[沃通CA]在验证服务器身份后颁发,具有服务器身份验证和数据传输加密 功能,因其要配置在服务器上,所以也称SSL服务器证书或者SSL证书.由合法CA机构颁发的ssl证书遵循ssl协议,通过在客户端浏览器和Web服务 器之间建立一条SSL安全通道,对传送的数据进行加密和隐藏;确保数据在传送中不被篡改和窃取,保障数据的完整性和安全性,ssl安全协议是由网景 (Netscape Communication)公司设计

自制Https证书并在Spring Boot和Nginx中使用(转)

白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环境中服务器端的配置. 如果你还没有读过白话Https,我强烈建议你先去读一下.按照白话Https中的介绍,Https协议涉及到的主体主要有三个:客户端.服务端.以及CA机构.如下图所示: 在白话Https一文中,曾介绍一个服务要申请使用Https的流程.本文所介绍的流程,针对自制Https证书,更多

项目迁移腾讯云后,用户反馈,https证书不匹配。

腾讯云大禹高防大禹BGP同一IP绑定多个证书,用户反馈无法匹配我们域名对应证书.但是浏览器是支持的.定位为客户端不支持sni在运维检查lb及高防证书关联无误,定位发现是用户端httpclient没有设置ssl.最终解决方案:不明确用户jdk版本,设置httpclient忽略证书验证. 引用: http://ju.outofmemory.cn/entry/115735 HTTPS和SNI HTTPS证书签名 ============================= 的前端代理服务器时候,通常会遇

Let's Encrypt,免费好用的 HTTPS 证书

#参考https://imququ.com/post/letsencrypt-certificate.html#####argparse安装#http://www.cnblogs.com/emanlee/p/4577249.html 很早之前我就在关注 Let's Encrypt 这个免费.自动化.开放的证书签发服务.它由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务,而 ISRG 是来自于美国加利福尼亚州的一个公益组织.Let's E

我的Android进阶之旅------>Android关于HttpsURLConnection一个忽略Https证书是否正确的Https请求工具类

下面是一个Android HttpsURLConnection忽略Https证书是否正确的Https请求工具类,不需要验证服务器端证书是否正确 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEn

MSXML2.ServerXMLHTTP & HTTPS & 证书过期 — msxml3.dll '80072f05'

昨天测试一个几天前写的一个应用,时不时的报错: msxml3.dll  '80072f05' The date in the certificate is invalid or has expired 经过上午3个小时的努力,终于找到原因和解决办法. 原因: 证书过期 解决办法: Dim xmlhttp Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")        xmlhttp.setOption(2) = 1305

免费好用的阿里云云盾证书服务(https证书)申请步骤

推荐一个免费的阿里云产品:云盾证书(https证书) 为了能让非专业人士看懂,同样尽量用直白的话,一般来说:当你个人需要建立网站,或者公司要建立官网.商城,通常需要先购买服务器或云主机,虚拟空间,然后将网页和程序.数据库部署上去,用户就可以用浏览器访问了,比如说浏览页面的内容.登录.发表评论.购物等.这时候浏览器默认是通过http协议与网站所在的服务器进行数据交互的,由于历史的原因,http被证实并不是那么安全,容易被别有用心的人窃取信息,于是就出现了https,也就是把http加密传输,区别就