如果客户端已经具有服务器证书,则SSL握手/协议如何工作?
|
我对SSL / TLS协议和OpenSSL库的经验非常有限。从本质上讲,我本周开始学习它,但是我为迄今为止所学到的知识而感到自豪。
我确实有一个挥之不去的问题,还没有找到答案。我已经尝试使用Google搜索,并寻找其他可用的资源,但似乎我不知道如何正确地问我的问题。它与握手过程有关,如果客户端已经具有服务器证书,该怎么办?
我了解握手的最初部分涉及以下高级步骤:
客户端发送问候消息
服务器以自己的问候消息响应
服务器发送证书
客户端验证服务器证书
服务器发送表明协商已完成的消息
我只是似乎无法弄清楚当客户端已经具有服务器证书时此过程如何工作。我知道会话ID可用于执行恢复的握手,其中只发送问候消息,然后在消息加密后再显示一条说明任何数据的消息,从而避免了非对称握手中的密钥生成。但是对我来说,使用这些会话ID似乎不是一个好主意,因为从本质上讲,它们将不得不持续很长时间,这可能会带来安全问题(我不知道怎么做,但是拥有一个长期存在的会话ID。也许我是错的)。我认为该行为可能与网络浏览器的行为相似,但是未能找到关于该途径的任何信息。
我去看了一下OpenSSL API进行了一些研究,它还留下了缠绵的问题。 API方法:
int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
初始化/设置所有我的OpenSSL结构时,使我认为这将是服务器证书文件(如果已存在)。但是我做了进一步的研究,它可以用于客户端和服务器应用程序。因此,在我是客户端且还没有服务器证书的情况下,我会在调用SSL_connect()API进行SSL握手之前放弃使用上述API方法吗?我想如果是这种情况,我也将以某种方式使用OpenSSL API来保存服务器证书吗?
感谢您阅读我的文章。感谢您可能提供的任何帮助/指导/指标。如果我的问题/想法不清楚,请告诉我,我会尽力澄清。
没有找到相关结果
已邀请:
1 个回复
嘘伪