我想知道网络服务是否可以使用" faked"来检测HTTPS连接。由Fiddler4(Web调试代理)创建的根证书,以防止逆向工程。
是否有任何方法可以检查加密是使用原始证书还是使用Fiddler制作的?
答案 0 :(得分:6)
服务器无法知道客户端收到的证书,除非客户端向服务器发送该信息。
从客户端JavaScript,您今天无法检测到此类拦截; JavaScript不公开内省证书的功能。 可以在网页中使用Java或Flash来检查连接到服务器时收到的证书,但是一个足够狡猾的拦截器可以避免MITM与Java / Flash连接。
相反,本机代码客户端应用程序可以检测服务器提供的证书,并拒绝任何与预期证书不匹配的证书;这称为certificate pinning
,它是某些应用程序使用的技术。请注意,这将比Fiddler阻止更多;它还会通过公司检查代理(例如BlueCoat,ISA TMG等)和一些流行的消费者防病毒程序来阻止连接。代理人(例如BitDefender)。更重要的是,如果用户愿意,用户可以绕过您的证书固定支票;您的代码在他们的设备上运行,并且他们能够修改内存中的代码以去除证书固定检查。在某些移动设备上,此代码修改需要" jail-breaking"设备,但这不是一个不可逾越的障碍。