说我有简单的客户端 - 服务器php ssl-application
- 服务器生成私钥/公钥
- 服务器开始监听套接字
- 客户端连接到套接字:
stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv3_CLIENT)
它是如何工作的?客户端在运行中生成私钥/公钥并将其存储在内存中?
对于浏览器https同样的问题,浏览器也一样吗?在飞行中生成私钥/公钥?
一般情况下:客户从哪里获取密钥?
答案 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的优秀书籍。