问题描述
|
我正在构建一个应用程序,它将使用户能够连接到同一服务器。确保应用程序/设备不使用自己的证书/私钥,而是确保每个用户都有自己的证书/私钥用于加密,这一点很重要。
现在我从OpenSSL网站文档中知道,它们的内部OpenSSL证书存储可以为RSA密码保存一个证书/密钥对。我的问题是这样的:
假设我有一个名为ssl1的SSL结构,该结构是我从SSL_CTX创建的,我没有设置要在SSL_CTX中使用的证书/密钥(因此不继承证书/密钥)。然后,我继续为与某些用户关联的ssl1设置证书/密钥。然后,假设我从同一SSL_CTX创建了另一个名为ssl2的SSL结构。然后,我继续为ssl2设置与第一个用户不同的用户关联的证书/密钥。
如果此时我在ssl1上调用SSL_connect()API,它将使用我为ssl2设置的证书/密钥吗?我问,因为商店说它仅持有一个证书/密钥对,而我最后为ssl2加载了证书/密钥,因此我想它会覆盖我为ssl1首先加载的证书/密钥。
感谢您阅读我的文章。我感谢您可以提供的任何帮助/智慧/指标。
解决方法
首先,我对您要求的实现细节感到困惑。其次,除非您试图通过用户的证书对用户进行身份验证,否则我想不出一种不同的密钥有用的情况-您显然没有这样做(用户需要不同的加密,而不是身份验证)。
我相信您真正想做的是使用提供“正向保密性”的设置来建立连接。为此,您要使用TLS密码,所有密码的名称均以TLS_DHE_开头。那些服务器使用Diffie-Helman密钥交换,从而使服务器密钥的作用基本上成为对用户进行服务器身份验证的一种。
, 据我了解,SSL_CTX充当SSL对象的模板。因此,当您创建新的SSL对象时,它将继承创建对象的SSL_CTX的属性/属性。这里明确提到了这一点
因此,对于您的问题,ssl1和ssl2对象都将使用其自己的证书/密钥。