SSL_CTX_set_verify()
和SSL_set_verify()
調用可分別用於設置基礎上下文和ssl的verify_callback()
函數。下面是從verify_callback()
文檔片段:OpenSSL verify_callback和SSL_connect
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()
呼叫的返回值。任何人都可以證實/否認這個假設?
感謝您的回答。我假設你的答案意味着如下:如果底層套接字是非阻塞的,並且'SSL_connect'成功返回(即使在多次重複調用之後),那麼這意味着'verify_callback'被調用並在'SSL_connect'前返回。回報? –
@HK - 是的,如果是非阻塞套接字'verify_callback',將會在第一個和最後一個'SSL_connect'調用之間被調用。 – sirgeorge
還有一件事。你介意告訴我這是否記錄在某處?還是它沒有使用OpenSSL的經驗? –