Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

http、tcp、ip #54

Open
TokenYangForever opened this issue Oct 25, 2018 · 0 comments
Open

http、tcp、ip #54

TokenYangForever opened this issue Oct 25, 2018 · 0 comments

Comments

@TokenYangForever
Copy link
Owner

TokenYangForever commented Oct 25, 2018


Q: 说一下SSL/TLS协议
A:

  • TLS:Transport Layer Security 安全传输层协议。SSL:Secure Sockets Layer安全套接层。两者结合在一起,通过加密传输内容,配置身份证书、以及校验功能,来保障网络传输安全。https就是封装了SSL/TLS的http协议,wss就是封装了SSL/TLS的websocket协议。
  • SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥(公钥存放在数字证书里),然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
  • SSL/TLS协议的基本过程分三步:1)客户端从服务器获取公钥、2)生成密钥、3)开始加密通信
  • 中途涉及到四次握手,可以参考https://tls.ulfheim.net/
    image
    • 第一次握手:客户端发送Client Hello。附带上协议版本信息、客户端生成的随机数据、客户端支持的压缩方法、加密算法等等。
    • 第二次握手:
      • 服务端返回一个Server Hello:包含协议版本信息、服务端生成的随机数据、一个session-id、一个选择使用的压缩方法、一个选择使用的加密方法、其他拓展等。
      • 同时服务端提供一个证书(certificate):其中包含服务端的域名、使用的公钥、以及来自受信任的第三方提供的证明--证明该服务端拥有提供的公钥所对应的私钥。
      • 服务端生成密钥交换:服务端必须计算出一组公钥/私钥密钥对,用于后面的密钥交换。
      • 服务器密钥交换:服务端提供密钥交互相关信息。在密钥交互过程中,服务端和客户端都有一组公钥和私钥,然后会把自己的公钥发送给对方。共享加密密钥的会由一方的私钥和另一方的公钥,共同组成。
        http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
@TokenYangForever TokenYangForever changed the title http、tcp、ip大杂烩 http、tcp、ip Nov 22, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant