https原理(七)其他

fiddler原理+fiddler为什么抓chrome而不能抓curl和httpclient?fiddler为什么能篡改报文?

中的ssl pinning 本质即是双向ssl

https://zhuanlan.zhihu.com/p/60392573/有一个破解的案例

 

2

单向ssl破解 https://www.zhihu.com/tardis/bd/ans/1470144979

一、根证书是伪造的。如果攻击者通过黑客手段,在客户端电脑上安装了自己的根证书,那它就可以验证通过自己伪造的服务器公钥。问题在于怎么把根证书安全的交到客户端手里,目前浏览器基本都在内部预置了权威CA机构的根证书,以减少权威CA机构的根证书被篡改的可能,不过这并不能100%的解决问题, 像某些网站会使用自己的根证书,这些根证书并没有预置在浏览器中

二、CA向服务器颁发的公钥证书是伪造的。这样黑客也可以伪装自己的服务器公钥了,也会被客户端验证通过。一般来讲,权威CA颁发的公钥证书都是可靠的,但也不是没有被黑的例子,比如曾经荷兰的DigiNotar,就因为安全漏洞被黑了,颁布了数百个伪造的公钥证书,最终导致整个公司失信,破产了。

 

有私钥可以生成公钥

有公钥不能生成私钥(https://blog.csdn.net/sn5diphone6/article/details/122881394)

https://blog.csdn.net/lxfHaHaHa/article/details/86619714里有用私钥生成公钥的实践

 

4 wireshark

https://www.cnblogs.com/blankicefire/p/7865096.html

https://zhuanlan.zhihu.com/p/75461564

 

5

浏览器的truststore,就是操作系统内置的一群CA公钥(证书)

tomcat的truststore与浏览器内置CA证书有啥区别?浏览器里面只有CA证书没有服务端公钥,CA公钥对客户端证书的数字签名解密核对

 

6 为什么不用bank?

因为要传递客户端证书,用bank时,客户端拿到的是bank公钥(非服务端公钥),服务端拿到的也是bank公钥(非客户端公钥),可以是另一对也可以是同一对,也可以走http,所以失去了双向的意义,连真正的客户端证书都拿不到

那为啥单向时候可以用bank,因为单向客户端本来就是验证bank公钥

由于MyFiddler和后端实验时用的相同ca,(PorxyNoHttpDecode无需),无法在浏览器上体现透明代理与明文代理,需要查看两边sha1,可以证明浏览器获得的服务端证书是不同的,此前已证明同一个CN前后两次签发的证书是不同的(根据https原理(四)双向实践(java客户端+tcp代理) 9 的结论)

 

7 Fiddler的两种filter

7.1 明文

客户端与fiddler ssl握手,fiddler与服务端ssl握手,过滤原则上只是ui的过滤

7.2 透明

fiddler只处理初次HTTP CONNECT请求,客户端与服务端直接握手

可用于teams 双向ssl只要打开fiddler就挂的问题解决

 

总结:

1)双向中,客户端与服务端用同一个密钥对不妨碍安全性;当然也可以用不同CA的

2)服务端truststore原则上不能有客户端私钥,tomcat不允许

3)truststore可以不给,会指向jre cacerts

4)truststore应该会需要客户端CA证书

5)want+filter的形式我不能突破

6)允许透明代理

7)有客户端私钥可以明文代理

8)truststore里有CA证书就行了?还是证书链支持?

9)mkcert install会导入jre cacerts

10)同一个公钥,两次jks,sha1 一样

11)p12 jks会有多个密钥对?tomcat可以通过别名指定

12)为什么不用bank?

13)这一套东西足够安全,除非获取客户端私钥

 


来自https原理

来自fiddler原理+fiddler为什么抓chrome而不能抓curl和httpclient?fiddler为什么能篡改报文?

来自https原理(二)服务端公钥有没有被CA私钥加密

来自https原理(三)双向实践(curl)

 

来自https原理(五)双向实践(https代理)

posted on 2023-03-02 23:25  silyvin  阅读(34)  评论(0编辑  收藏  举报