证书锁定Certificate Pinning技术
 
在中间人攻击中,攻击主机通常截断客户端和服务器的加密通信。攻击机以自己的证书替代服务器发给客户端的证书。通常,客户端不会验证该证书,直接接受该证书,从而建立起和攻击机的安全连接。这样,客户端发送的数据,都会被攻击机获取和解密。
 
证书锁定Certificate Pinning是SSL/TLS加密的额外保证手段。它会将服务器的证书公钥预先保存在客户端。在建立安全连接的过程中,客户端会将预置的公钥和接受的证书做比较。如果一致,就建立连接,否则就拒绝连接。
 
Certificate Pinning在手机软件中应用较多。因为这些应用连接的服务器相对固定,可以预先将服务器的X509证书或者公钥保存在App中。例如,苹果应用商店Apple App Store就预置了这个功能。当使用中间人工具或者Fiddler之类的工具拦截数据,就会造成应用商店无法联网的情况。
 
在渗透测试中,遇到这类技术,有三种解决办法。第一种是从系统层面禁用证书锁定验证功能。第二种是反编译软件,将其保存的公钥替换为攻击机的证书。第三种,如果该目标不是分析的对象,可以设置代理时忽略其要连接的服务器,不进行拦截和修改。
 
 
PS:如果在手机上采用第一种或者第二种方式,就需要手机root或者越狱。

证书锁定Certificate Pinning技术的更多相关文章

  1. 008_ssl Certificate Pinning

    证书锁定Certificate Pinning技术 在中间人攻击中,攻击主机通常截断客户端和服务器的加密通信.攻击机以自己的证书替代服务器发给客户端的证书.通常,客户端不会验证该证书,直接接受该证书, ...

  2. 证书锁定SSL/TLS Pinning

    前言 APP端抓包中, 设置抓包代理后会发现部分APP(如app store.Facebook)直接无法访问,其他部分app又功能正常,为什么呢?这涉及 ssl-pinning,证书锁定. 证书锁定( ...

  3. 证书透明度Certificate Transparency

    发现使用google浏览器访问HTTPS网址时,点击小锁-->>连接-->>有一项服务器未提供任何 certificate transparency 信息?只有google浏览 ...

  4. 什么是证书透明度(Certificate Transparency)?

    SSL基础概念 什么是加密? 加密是一种新型的电子信息保护方式,就像过去使用保险箱和密码锁保护纸上信息一样.加密是密码学的一种技术实现方式:信息被转换为难以理解的形式(即编码),以便只有使用密钥才能将 ...

  5. How to verify Certificate Pinning?

    Some friends of mine they worry about the risk of Man-in-the-middle so they ask me how to verify the ...

  6. [转帖]密钥库文件格式(Keystore)和证书文件格式(Certificate)

    密钥库文件格式[keystore]代码 https://blog.csdn.net/zzhongcy/article/details/22755317 格式 : JKS 扩展名 : .jks/.ks ...

  7. C#在客户端验证数字证书(Certificate)

    ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallback;//Init时执行,用于 ...

  8. 如何在Win8.1和Win2012上运用PowerShell快速生成、安装、导出自签名证书 (Self-Signed Certificate)

    自签名证书用途很广,测试,开发,本地或者云端网站(比如Microsoft Azure Web Site)都会使用到.本文会介绍一种在Win8.1和Win2012 R2上使用PowerShell快速生成 ...

  9. 使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据

    一.  使用证书结合对称加密算法加.解密长数据 上一章节讨论了如何使用RSA证书加密数据,文中提到:“Dotnet的RSA实现有个特点,它必须要在明文中添加一些随机数,所以明文不能把128字节占满,实 ...

随机推荐

  1. python-闭包函数和装饰器

    目录 闭包函数 什么是闭包? 两种为函数传参的方式 使用参数的形式 包给函数 闭包函数的应用 闭包的意义: 装饰器 无参装饰器 什么是装饰器 为什么要用装饰器 怎么用装饰器 完善装饰器 闭包函数 什么 ...

  2. shell-code-拷贝文件

    #!/bin/bash while read F do cp ${F}"_pe_1.fastq.gz" /public/home/chenjy/usr/ZD/data/cleand ...

  3. Elasticsearch安装---安装jdk

    1.在Linux 上检查Java版本是否满足要求: java -version 如果运行上面命令时报错:-bash: java: command not found,首先检查是否有jdk ,要是有安装 ...

  4. POJ-3278 广度优先搜索入门

    #include<stdio.h> #include<stdlib.h> struct node{ int x; int s; }s[]; int main(){ ]={}; ...

  5. MFC自绘按钮的实现,按钮动态效果

    最近项目需要实现按钮的动态效果,多方学习,现在终于能实现一些功能了. 过程如下: 第一,新建一MFC对话框应用程序. 第二,删除自带按钮,并添加两个按钮,button1,button2,ID为IDB_ ...

  6. Selenium WebDriver-下拉框断言

    #encoding=utf-8 import unittest import time import chardet from selenium import webdriver class Visi ...

  7. 移动端click时间、touch事件、tap事件详解

    一.click 和 tap 比较 两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件. singleTap和doubleTap 分 ...

  8. 关于EF调用存储过程那点事...

    最近研究了下EF怎么调用 数据库的分页存储过程,发现还是很不错的 1.数据库存储过程如下,一个简单的不含条件判断的 2.然后新建数据模型中选择存储过程: : 3.EF会自动生存一个返回复杂类型(Obj ...

  9. 紫书第三章训练1 D - Crossword Answers

    A crossword puzzle consists of a rectangular grid of black and white squares and two lists of defini ...

  10. 使用MySQLWorkBench连接数据库

    在日常使用中,经常使用命令行去连接MySQL数据库不方便,推荐使用MySQLWorkBench去远程连接进行管理,下面记录一下使用步骤: 1. 安装MySQLWorkBench后,界面如下,点击“+” ...