我正在与OpenSSL相互认证的DTLS客户端握手进行战斗,我应该能够解决OpenSSL 1.0和1.1的小问题。
简而言之,问题是如果节点和对等端证书在握手启动时正确加载,那么握手成功并且DTLS会话工作。但是,如果在加载证书之前启动握手,我似乎找不到一种方法来完成握手,一旦证书加载,似乎也禁止更新证书,至少如果试图使用相同的SSL上下文。
我尝试在加载证书时为SSL上下文替换X509_STORE,并在对等验证失败时调用SSL_clear或SSL_renegotiate,但似乎SSL3_MT_CERTIFICATE或对等验证一旦失败就不会重新发生。
有任何建议在哪里看下一步,甚至有可能得到这个工作使用相同的SSL上下文?
好了,我确定了这个问题的原因。在证书验证失败后,客户端和服务器无法按照RFC 5746中的描述进行安全重新协商。