面试题
讲一讲https以及证书(SSL)

讲一讲https以及证书(SSL)

  • https是密文传输,通过非对称密钥,数字证书等方式完成数据加密传输。解决了http明文传输易受到中间人攻击的问题。
  • 非对称加密是指一对不同的密钥,用其中一个密钥加密的密文,只能被另一个密钥解开,公开的密钥称为公钥,不公开的称为私钥。 能解决对称加密被中间人获取到密钥的问题,但仍不能解决中间人在中间代理信息的问题,即中间人获取到公钥后,对两端用自己的公钥私钥代理信息。
  • 证书则能解决中间人代理信息的问题
    1. 首先服务端使用摘要算法(例如MD5)将证书明文(例如域名,服务端公钥)生成摘要,然后送给CA权威机构。
    2. CA机构将摘要用CA机构自己的私钥进行加密,得出来的叫签名,然后附在证书上。
    3. 证书被发送到客户端,客户端通过同样的摘要算法对证书明文计算摘要,然后用CA机构的公钥解开签名得到解密的摘要, 两者比对相同,则证明证书没有篡改,证书上服务端的公钥是该服务端生成的公钥,因此客户端拿到了服务端的公钥。
  • 浏览器向服务器发起Https请求的流程如下:
    1. 首先浏览器向服务器发起请求。
    2. 服务器将证书机构颁发给自己的证书传递给浏览器。
    3. 浏览器从本地安装的根证书中找到证书机构的公钥,用公钥来验签证书的正确性,确保是证书机构用私钥签名的合法证书,从而拿到了服务器公钥。
    4. 浏览器随机生成一个对称秘钥key,用证书中的服务器公钥加密这个key,再传输给服务器。
    5. 服务器用私钥解密后取出对称秘钥key,并用该key加密确认内容返回给客户端,告知可以开始通信。
    6. 浏览器与服务器开始采用该key进行加密通信。