当使用OpenSSL和非阻塞套接字时,可以方便地使用透明协商模式,通过在尚未安全连接的SSL上下文中调用SSL_write来启动协商,然后处理生成的错误(通常为SSL_WANT_READ)以进行读取来自输出BIO的握手包并通过传输发送它。
但是,如果没有对SSL_do_handshake的显式(阻塞)调用,我不清楚何时尝试验证证书。
一旦SSL_write第一次成功返回成功,我是否只需要进行证书检查?还是有更好的信号?
答案 0 :(得分:2)
在您开始协商之前,您应该使用SSL_set_verify()
来设置验证模式和可选的验证回调。处理回调中所需的任何其他特定于应用程序的验证。
然后,如果SSL_write()
和/或SSL_read()
成功返回,您就知道证书已经过验证。