用于浏览器

时间:2015-08-05 15:12:06

标签: ssl encryption browser https

使用Digicert's SSL mechanism explanation我已经了解了如何在浏览器和服务器之间加密数据,以下是我的理解。

  1. 浏览器会向服务器发送请求以获取一些资源。服务器检查请求的协议是否为HTTPS,如果是,则它将发送其证书(此证书已由某些CA(证书颁发机构,如Digicert)签署)。
  2. 浏览器将通过验证其有效CA池中是否有签名权限来检查证书是否有效。
  3. 如果浏览器发现此证书由有效CA签名,则会生成会话密钥并使用证书中的公钥对其进行加密。
  4. 浏览器会将此加密的会话密钥发送到服务器,服务器将解密会话密钥,并将向浏览器发回一个确认,该确认将使用会话密钥加密。
  5. 上述步骤完成 SSL握手,然后在浏览器和服务器之间开始安全通信。
  6. 问题:
    基于我的上述理解,以下是我无法找到答案的问题:

    1. 浏览器将生成会话密钥并使用服务器的公钥对其进行加密。但是哪种加密算法(或通常称为Cipher)将用于浏览器?
    2. 完成SSL握手后,所有通信都将使用对称会话密钥进行加密,但这里也会再次使用哪种加密算法(或通常称为Cipher)?
    3. 浏览器使用的加密算法是否依赖于从服务器收到的证书?
      • 或者对于浏览器完成的所有加密,将使用相同的算法或密码。
    4. 如果我错了,请更正我,证书中还有算法或密码信息?如何将这些信息推送到证书中?
      • 在生成证书时,我需要告诉哪个算法,加密多少位,填充等等?
    5. 根据上述答案,我将提出最重要的问题 - 假设我正在向某人提供我的服务器私钥,以便他可以监控我的服务器的SSL流量,然后除了向他提供私钥以外的所有其他内容我需要照顾。我是否需要告诉他我在服务器上使用的算法或密码?

1 个答案:

答案 0 :(得分:1)

密码组选择通常遵循以下步骤:

  1. 客户端/浏览器/用户代理在握手期间建议服务器支持的密码套件列表。该列表按客户首选项排序。
  2. 服务器查看其支持的密码列表,并选择使用客户端最喜欢的密​​码。
  3. 如果服务器维护密码套件首选项(Apache:SSLHonorCipherOrder,nginx:ssl_prefer_server_ciphers,Lighttpd:ssl.honor-cipher-order等),则它从其列表中选择客户端支持的第一个密码(客户端)偏好不被尊重)。
  4. **某些服务器和SSL实现可能具有特殊条件,即使客户端指示对密码套件的支持(以解决客户端SSL实现中存在的已知错误),也会限制某些客户端使用密码套件。例如,https://community.qualys.com/message/22681#22681