gpt4 book ai didi

c++ - OpenSSL verify_callback 和 SSL_connect

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:47 26 4
gpt4 key购买 nike

SSL_CTX_set_verify()SSL_set_verify() 调用可用于为底层上下文和 ssl 设置 verify_callback() 函数,分别。以下是 verify_callback() 文档中的一个片段:

The return value of verify_callback controls the strategy of the further verification process. If verify_callback returns 0, the verification process is immediately stopped with "verification failed" state. If SSL_VERIFY_PEER is set, a verification failure alert is sent to the peer and the TLS/SSL handshake is terminated. If verify_callback returns 1, the verification process is continued. If verify_callback always returns 1, the TLS/SSL handshake will not be terminated with respect to verification failures and the connection will be established.

现在回答我的问题。如果我设置 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com