记一次HTTPS证书验证测试过程

by:授客 QQ:1033553122

实践

1) 安装证书

选择主机A(假设10.202.95.88)上安装https证书

说明:采用https的服务器,必须安装数字证书,这个可以是自己制作,也可以想组织申请,区别在于自己颁发的证书,需要客户端验证通过,才可以继续访问(常见的就是浏览器弹窗,提示是否信任该网站),而由像组织申请的受信任证书则不会弹出该提示。

2) 配置本地DNS

选择主机B(假设10.202.95.38,能访问10.202.88.151),配置本地DNS,在/etc/hosts中添加如下内容

10.202.88.151 xxx.sf-express.com

说明:10.202.88.151为负载VIP,如下,访问负载vip时,会随机转发至集群节点主机

10.202.88.151 ->10.202.95.88

10.202.88.151 ->10.202.95.87

然后在主机B上,发起https下载请求

$ wget https://xxx.sf-express.com/

--2017-10-24 17:08:58--  https://xxx.sf-express.com/

Resolving xxx.sf-express.com... 10.202.88.151

Connecting to xxx.sf-express.com|10.202.88.151|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 59054 (58K) [text/html]

index.html: Permission denied

Cannot write to ?.ndex.html?.(Success).

说明:

1)不能用curl替换wget命令发起请求,会报无法进行SSH连接,至于为何,我也不清楚。

$ curl https://xxx.sf-express.com/

curl: (35) SSL connect error

2)如上,我们可以很清楚的看到请求过程,先是本地DNS解析,->然后通过443端口,请求连接到目标主机->接着,发送HTTP请求,-->等待服务器返回

进一步验证,直接发送请求,不过这一次不通过域名访问,直接通过IP访问。

$ wget https://10.202.88.151/

--2017-10-24 17:09:24--  https://10.202.88.151/

Connecting to 10.202.88.151:443... connected.

ERROR: certificate common name ?.engta.sf-express.com?.doesn't match requested host name ?.0.202.88.151?.

To connect to 10.202.88.151 insecurely, use ?.-no-check-certificate?.

说明:如上,这里利用了“服务器返回证书中包含有效网址,客户端校验证书时会比较请求的网址和服务器给的证书中的网址是否一致”这个特性,来验证证书是否正常运作。

大致原理

-> 客户端发送https请求,把自身支持的秘钥算法套件发送给服务器

-> 服务器判断自身是否支持该算法套件,如果支持则返回证书信息(本质为公钥,包含了证书颁发机构,网址,过期时间等) ,否则断开连接,

-> 客户端解析证书(通过TLS协议来完成),验证证书是否有效。如果异常,则会提示是否安装证书,常见的就是浏览器搜索栏左侧出现“X”告警按钮等

-> 如果证书有效、或者是授信安装证书后,开始传送加密信息(用证书加密后的随机值,供加解密使用)

-> 服务端通过私钥解密加密信息,得到客户端发送来的随机值,然后把内容通过该值进行对称加密。这样一来,除非知道私钥,否则是无法获取加密内容的。

-> 服务端返回加密后的内容

-> 客户端通过前面提到的随机值对加密信息进行解密

网络基础 记一次HTTPS证书验证测试过程的更多相关文章

  1. Retrofit+OKHttp忽略https证书验证

    记录这个的原因,是因为很多时候,因为后台配置的证书不正确导致APP访问不到服务器数据,导致影响自身的开发进度.没几行代码,逻辑也清晰,所以下面就直接贴出工具类吧: package huolongluo ...

  2. java httpclient跳过https证书验证

    httpclien调用skipHttpsUtil得wrapClient方法跳过https证书验证 SkipHttpsUtil  skipHttpsUtil=new SkipHttpsUtil();   ...

  3. 【腾讯Bugly干货分享】iOS 中 HTTPS 证书验证浅析

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/-fLLTtip509K6pNOTkflPQ 导语 本 ...

  4. iOS 绕过https证书验证 请求数据

    HTTPS和HTTP: 1.https协议需要到ca申请证书,一般免费证书很少,需要交费. 2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议. 3.http ...

  5. 解决https证书验证不通过的问题

    1.报错信息 java.security.cert.CertificateException: No name matching api.weibo.com found; nested excepti ...

  6. .net core中引用webservice,并忽略https证书验证

    1.打开vs, 工具-->扩展和更新 下载这个 2. 在admin下右键,添加-->connected service 选择wsdl文件路径,或者服务的url,比如https://**** ...

  7. 解决 https 证书验证不通过的问题

    解决的办法:忽略服务端和客户端的证书校验即可.java 提供的相关的类. 通过重写TrustManager的checkClientTrusted(检查客户端证书信任)和checkServerTrust ...

  8. SVN提示https证书验证失败问题svn: E230001: Server SSL certificate verification failed:

    最近在使用Idea 检出 svn项目时,出现了如下的画面 显示需要授权证书,需要证书路径 搜索网上的解决方式:无非以下几种 1.File->Settings->Version Contro ...

  9. #WEB安全基础 : HTTP协议 | 0x16 HTTPS:证书,证书,全是证书

    现在想做点什么事都需要证书,要不就会让我们回忆起一个典故:滥竽充数 HTTPS使用了公开密钥加密,如何保证公开密钥就是真正的公开密钥呢?攻击者可能会替换公开密钥,这时候就需要验证,所以它采用了数字证书 ...

随机推荐

  1. java项目引用证书文件(微信支付的p12文件)

    1. 绝对路径: // windows: public static String PATH1 = "E:\\project27_app_wuyoujie\\apiclient_cert.p ...

  2. 安卓网络访问(xUtils3)

    xUtils3是安卓网络访问的重要库,基本上的网络请求所涉及的内容都有集成.笔者将实现xUtils3的简单使用,包括简单GET和POST请求.文件上传.文件下载.图片显示. 其主要特性有以下几点: ① ...

  3. Android项目创建.prorperties配置文件和调用方法

    刚接触Android开发不久,今天写项目发现里面的可变参数有点多,(主要是服务器访问路径), 如果路径改变或者改名字了的话,若都写在代码里,岂不是要炸了? 我想到了Java项目里的有个.prorper ...

  4. 移动端Web开发,ios下 input为圆角

    在处理input的问题时,一般不想要input的原来的样式,一般就直接处理 border: none; outline: none; background: transparent; 这样之后,一般就 ...

  5. .Net 并发写入文件的多种方式

    1.简介 本文主要演示日常开发中利用多线程写入文件存在的问题,以及解决方案,本文使用最常用的日志案例! 2.使用File.AppendAllText写入日志 这是种常规的做法,通过File定位到日志文 ...

  6. 浅谈Unity3D 骨骼动画

    转载请标明出处http://www.cnblogs.com/zblade/ 最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭 ...

  7. Apache-Flink深度解析-概述

    摘要: Apache Flink 的命脉 "命脉" 即生命与血脉,常喻极为重要的事物.系列的首篇,首篇的首段不聊Apache Flink的历史,不聊Apache Flink的架构, ...

  8. 深入理解 JavaScript 异步系列(1)——基础

    前言 2014年秋季写完了<深入理解javascript原型和闭包系列>,已经帮助过很多人走出了 js 原型.作用域.闭包的困惑,至今仍能经常受到好评的留言. 很早之前我就总结了JS三座大 ...

  9. leetcode — unique-paths

    import java.util.Arrays; /** * Source : https://oj.leetcode.com/problems/unique-paths/ * * * A robot ...

  10. c#调用c++ dll的一个例子

    1.创建一个简单的c++ 项目生成动态库. Vs 创建完工程后,打开SampleOperation.cpp文件,看到有个导出函数的例子. 复制这段代码, 修改函数(返回值, 参数列表, 函数的实现) ...