SSL_CTX_set_verify()
和SSL_set_verify()
调用可分别用于为基础上下文和ssl设置verify_callback()
函数。以下是verify_callback()
verify_callback的返回值控制着策略 进一步验证过程。如果verify_callback返回0,则 “验证失败”立即停止验证过程 州。如果设置了SSL_VERIFY_PEER,则会发送验证失败警报 到对等方并终止TLS / SSL握手。如果 verify_callback返回1,继续验证过程。如果 verify_callback总是返回1,TLS / SSL握手不会 关于验证失败和连接终止 将成立。
现在回答我的问题。如果我设置verify_callback()
(以及任何其他必要的OpenSSL设置调用,证书等),然后调用SSL_connect()
,是否可以安全地假设对verify_callback()
的任何调用以建立连接目的是在SSL_connect()
电话返回之前返回?
在我看来,这是一个安全的假设,因为文档声明此回调是决定是否建立连接的决定因素。因此,回调将直接影响SSL_connect()
调用的返回值。任何人都可以确认/否认这个假设吗?
答案 0 :(得分:2)
假设您只对TCP连接感兴趣:简答:是,长答案:取决于:
SSL_connect
可能会在建立连接的过程中返回-1。在这种情况下,您应该致电SSL_get_error
并检查问题所在(如果它返回SSL_ERROR_WANT_READ
或SSL_ERROR_WANT_WRITE
您需要重复SSL_connect
来电。如果您需要重复通话 - 则答案为否(verify_callback
将在第一次和最后一次SSL_connect
通话之间调用。