SSL_CTX_set_verify()SSL_set_verify()调用可用于分别为基础上下文和ssl设置verify_callback()函数。这是verify_callback()文档的摘录:



现在我的问题。如果我设置了verify_callback()(以及其他必要的OpenSSL设置调用,证书等),则调用SSL_connect(),是否可以安全地假设对verify_callback()的任何用于连接建立目的的调用将在SSL_connect()调用返回之前返回?

在我看来,这是一个安全的假设,因为文档指出此回调决定了是否建立连接。因此,回调将直接影响SSL_connect()调用的返回值。谁能确认/否认这个假设?

最佳答案

假设您只对TCP连接感兴趣:简短答案:,很长答案:这取决于:

  • 如果您以阻止模式连接-始终
  • 如果您以非阻塞模式进行连接-在建立连接的过程中SSL_connect可能返回-1。在这种情况下,您应该调用SSL_get_error并检查问题出在哪里(如果返回SSL_ERROR_WANT_READSSL_ERROR_WANT_WRITE,则需要重复SSL_connect调用)。如果您需要重复通话-答案是而不是(verify_callback将在第一个和最后一个SSL_connect调用之间被调用)。
  • 关于c++ - OpenSSL verify_callback和SSL_connect,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33437321/

    10-11 19:38