Openssl

在 openssl 輸出中驗證 return:1 是什麼意思

  • January 8, 2016

我不明白 openssl 輸出。執行openssl如下:

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

最終一切都很好,最終實體的證書被驗證OK: Verify return code: 0 (ok)

但是return:1對於下面的中間體,在輸出開頭的驗證呢?這是什麼意思或意義何在?

depth=3 C = US, O = Equifax, OU = Equifax 安全證書頒發機構驗證返回: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 = US, ST = California, L = Mountain View, O = Google Inc, CN = google.com 驗證返回:1

---
證書鏈
0 秒:/C=US/ST=加利福尼亞/L=山景/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 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
i:/C=US/O=Equifax/OU=Equifax 安全證書頒發機構
---

驗證回調函式(用於對特定用途的證書適用性進行最終驗證)由 SSL 傳遞一個稱為欄位的欄位,該preverify_okay欄位指示證書鍊是否通過了適用於所有情況的基本檢查。A1表示這些檢查通過。

int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx)

verify_callback 函式用於控制設置 SSL_VERIFY_PEER 標誌時的行為。它必須由應用程序提供並接收兩個參數: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);
   }

引用自:https://serverfault.com/questions/747525