我正在构建一个应用程序,使用户能够连接到同一台服务器。与使用自己的证书/私钥的应用程序/设备不同,重要的是确保每个用户都有自己的证书/私钥可用于加密。
现在我从OpenSSL网站文档中了解到,他们的OpenSSL内部证书存储库可以为RSA密码保存一个证书/密钥对。我的问题是:
假设我有一个名为ssl1的SSL结构,它是从我的SSL_CTX创建的,其中没有将证书/密钥设置为在SSL_CTX中使用(因此没有继承证书/密钥)。然后继续设置与某些用户关联的ssl1的证书/密钥。然后假设我有一个名为ssl2的SSL结构,它是从同一个SSL_CTX创建的。然后继续为ssl2设置证书/密钥,该证书/密钥与第一个用户相关联。
如果此时调用SSL_connect() API on ssl1,它会使用为ssl2设置的证书/密钥吗?我之所以这样问,是因为商店说它只保存了一个证书/密钥对,而我最后加载了ssl2的cert/key,因此我猜想它会覆盖我首先为ssl1加载的证书/密钥。
谢谢你看我的帖子。我感谢你所能提供的任何帮助/智慧/指示。
发布于 2011-07-29 15:46:34
首先,我对您要求的实现细节感到困惑。其次,我想不出在什么情况下不同的密钥是有用的,除非您试图通过用户的证书进行身份验证--显然您没有这样做(用户需要不同的加密,而不是身份验证。
我相信您真正想做的是使用为完全前向保密提供的设置来建立连接。要做到这一点,您希望使用TLS密码器都有以TLS_DHE_开头的名称。那些使用Diffie-Hellman密钥交换,从而使得服务器的密钥角色基本上是对用户进行服务器身份验证。
发布于 2012-10-05 06:24:07
据我所知,SSL_CTX充当SSL对象的模板。因此,当您创建新的SSL对象时,它继承了创建它的SSL_CTX的属性/属性。这是明确提到的这里
因此,对于您的问题,ssl1和ssl2对象都将使用它们自己的证书/密钥。
https://stackoverflow.com/questions/6156227
复制相似问题