https之证书验证
来源:互联网 发布:f0改装轮毂数据 编辑:程序博客网 时间:2024/06/02 07:46
1.中间人攻击
对于http协议,中间人攻击(man in the middle)是一种著名的攻击方式。
图中John和Mary作为通信的双方,Frank为攻击者
1. John向Mary发送一段数据
2. Frank截获了John的包,窃取/修改数据后,伪装成John继续将包转发给Mary
3. Mary不知道Frank的存在,认为只是收到了来自John的数据,因为返回一段数据给John
4. Frank截获这段返回数据的包,窃取/修改数据后,发送给John
这样,Frank就成功窃取了John和Mary的通信数据,并且John和Mary都不知道Frank的存在。
2.SSL证书
从中间人攻击的方式可以看出,Frank攻击得以成功的关键是John和Mary没有一种既唯一标识自己,同时又能不被他人伪装的方式。SSL证书就是为了解决这个问题。
对于每一个使用https协议的网站,可以看到该网站的证书信息,图中是google使用的证书信息。
2.1证书链
证书以证书链的形式存在
1. 最上层为root,也就是通常所说的CA,用来颁发证书
2. 最下层为end-user,对应每个网站购买使用的证书
3. 中间一层为intermediates,是二级CA,这一层可以继续划分为多层,用来帮助root给end-user颁发证书,这样root只需向intermediates颁发证书
只有当整个证书链上的证书都有效时,才会认定当前证书合法
2.2证书信息
对于每个证书,会有一对公钥&私钥,公钥加密的数据只有私钥可以解密,私钥加密的数据只有公钥可以解密。私钥由证书所有者保留并且严格保密,公钥则公开使用。
此外,每个证书中还会包含很多信息,比如颁发机构,有效期等,其中最为重要的一个是签名。
签名是指利用上一层证书的私钥,加密一些元信息(证书所有者的信息,包括基本信息,公钥,证书生效域名等)。这样,当收到签名证书时,只需要根据CA提供的公钥对签名解密,验证元信息是否一致,就可以判断当前证书是否合法。一句话来说就是,每个证书会对下一层的证书合法性做担保
3.根证书的合法性
既然每个证书会对下一层的证书合法性做担保,那么确保根证书的合法性就至关重要。
根证书是一种自签名证书。在浏览器或者操作系统中,会预安装一些证书,这些证书就是根证书,对于这些证书,在证书验证的过程中会直接选择相信。因此不要轻易安装其他网站的证书。
- https之证书验证
- Https验证证书
- Https 证书验证问题
- HttpClient之配置ssl,采用绕过证书验证实现https
- HttpClient之配置ssl,采用绕过证书验证实现https
- OKHttp HTTPS 请求证书验证 PEM证书
- https 证书验证 okhttp https设置
- https 之 ssl 证书
- Android:Https跳过证书验证、Https使用证书、HttpClient、
- java访问未验证证书的HTTPS
- 访问https 绕过证书验证的方法
- iOS https请求 忽略证书验证
- java绕过证书验证访问https
- Https请求忽略证书验证最新实现
- webservice 绕过证书验证调用https接口
- ios AFNetworking https 双向证书验证实现
- Https双向验证证书:Android+OpenSSL
- iOS开发-https免证书验证
- servlet的filter使用替换流
- 【一起玩esp8266】flash的擦除方法
- 软件系统架构分析之一:传统socket通讯阻塞现象分析
- utils/deb_verify.sh
- 浏览器被Hao123劫持
- https之证书验证
- vim学习笔记
- 刷新页面的方法
- poi实现超简单的通用excel导出
- 为什么coredraw导出图片有白框??
- Socket
- spring boot 学习(四)Druid连接池的使用配置
- golang time.After()
- JS计算和