先说明,我对ssl也不是完全理解,只知道它既用了对称加密,也用了非对称加密。。哈。。。
以我的理解,https是用ssl证书进行内容加密,然后服务端通过对应的证书进行解密(这里用的非对称加密?)。
因此,Fiddler要拦截https,需要给监控设备安装ssl证书。但是这个ssl证书,在接收方那边,是不承认的,既然如此。。。。它又是如何能对返回的数据进行解密的呢?
==========2023-8-27==========
补充,看了一下几位大佬的回答,我大概明白了证书的作用,就是验证身份而已,我补充一下我的疑惑:
1.https的发送内容被加密,是证书的作用吗?这个加密解密是谁操作的呢?我一直以为,服务端用ssl证书加密,如果客户端没用一样的ssl证书的话,则无法解密?
==========2023-8-25==========
补充,看了一下几位大佬的回答,我补充一下我的疑惑:
1.网站的服务器端,例如nginx,会配置一个ssl证书。这个证书和Fiddler的那个证书,有什么关联吗?既然人家服务器是以自己的这个证书为准的,那Fiddler这个证书,不是不承认吗?
给“监控”设备安装的是“可信证书颁发机构”的CA证书,不是普通的证书。
证书的颁发过程是:
证书机构对csr签名颁发证书(csr内的公钥copy到证书内)
证书的验证(可信)过程是:
访问HTTPS时
在自己的内置CA列表中找到这个CA证书,拿出来公钥
用CA证书公钥验证这个网站的证书是否合法
而Fiddler就是在终端设备的内置的CA证书列表中,插入自己的CA证书。这样,由Fiddler自己颁发的证书,在终端设备看来就是合法的证书。
更新:
没有任何关联,当使用Fiddler时,通信过程是这样的
Client <---> Fiddler <---> Server
第三步想通过,必须先在客户端
主动**信任**Fiddler的CA证书
重新强调:CA证书和域名证书是两个不一样的证书。CA证书是内置、预置在设备中的(手机、操作系统、浏览器)。
主动
信任CA证书,是手动的把CA证书导入到系统信任CA证书列表中。更新2:
https的加密和TLS加密不是一回事。
TLS/SSL握手是协商加密密钥和算法,协商后,就是单向加密了。
流程如下:
client和server握手
server告诉client,在你告诉我的这堆算法中,我支持最好的是算法A(如rsa2048+sha1+aes128)
同时,server应答的包括但不限于
client 验证证书、算法
https的过程,是协商使用哪个单向加密算法和密钥的过程。