客户端如何在ssl连接中生成公钥?

时间:2014-03-06 16:13:33

标签: php sockets ssl

说我有简单的客户端 - 服务器php ssl-application - 服务器生成私钥/公钥 - 服务器开始监听套接字 - 客户端连接到套接字:
    stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv3_CLIENT)

它是如何工作的?客户端在运行中生成私钥/公钥并将其存储在内存中?

对于浏览器https同样的问题,浏览器也一样吗?在飞行中生成私钥/公钥?

一般情况下:客户从哪里获取密钥?

1 个答案:

答案 0 :(得分:3)

  
      
  • 服务器生成私钥/公钥。
  •   

没有。服务器已经安装了公钥和私钥。

  
      
  • 服务器开始侦听套接字。
  •   

没有。服务器开始在 端口

  
      
  • 客户端连接到套接字:   stream_socket_enable_crypto($ socket,true,STREAM_CRYPTO_METHOD_SSLv3_CLIENT)
  •   

  

它是如何工作的?客户端在运行中生成私钥/公钥并将其存储在内存中?

没有。客户端通常不具有公钥或私钥,但如果已经安装,则它已经安装。客户端不需要这些用于基本SSL工作。

  

对于浏览器https同样的问题,浏览器也一样吗?在飞行中生成私钥/公钥?

见上文。同样的答案。

  

一般情况下:客户从哪里获取密钥?

我认为您正在遭受SSL广泛误解,即SSL仅使用公共/私人密码术。它没有。它使用对称会话密钥,由两个对等方独立协商和计算。 PKI仅在SSL中用于相互验证对等体。

在任何情况下,您在运行时“生成”公共/私有密钥对的问题都没有意义。密钥对仅在对等方已具有公钥时才有用。

你似乎一直在阅读很多错误的信息。其中有很多,众所周知,包括所谓的“Linux文档项目”。对此的规范性引用是RFC 2246和后继者,Eric Rescoria也有一本关于SSL的优秀书籍。