在 openssl 输出中验证 return:1 是什么意思

jou*_*ell 12 openssl

我不明白 openssl 的输出。运行 openssl 如下:

#openssl s_client -connect google.com:443 -CAfile cacert.pem < /dev/null

最终一切都很好,因为最终实体的证书已经过验证: Verify return code: 0 (ok)

但是return:1对于下面的中间体,在输出开头的验证呢?这是什么意思或有什么意义?

depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority 验证返回:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA 验证返回:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2 验证返回:1
depth=0 C = 美国,ST = 加利福尼亚,L = 山景城,O = Google Inc,CN = google.com 验证返回:1

---
证书链
 0 秒:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=google.com
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 秒:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax 安全证书颁发机构
---


Dav*_*rtz 15

验证回调函数(用于对特定用途的证书的适用性执行最终验证)由 SSL 传递一个称为preverify_okay字段的字段,该字段指示证书链是否通过了适用于所有情况的基本检查。A1表示这些检查通过了。

int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx)
Run Code Online (Sandbox Code Playgroud)

当设置 SSL_VERIFY_PEER 标志时,verify_callback 函数用于控制行为。它必须由应用程序提供并接收两个参数: preverify_ok 指示相关证书的验证是否通过 (preverify_ok=1) 或未通过 (preverify_ok=0)。

verify return:1就是显示的内容。

如果需要更多详细信息,可以检查代码:

int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
    {
    [ snip ]
    BIO_printf(bio_err,"verify return:%d\n",ok);
    return(ok);
    }
Run Code Online (Sandbox Code Playgroud)