簡而言之:如果您設定 $purpose=0,您可以使用此函式來驗證憑證鏈。
====================================================================
我想驗證一個憑證鏈,就像這樣
userCert.pem => middleCert.pem => rootCert.pem
我發現這些 openssl 函式都沒有直接提供這個功能。而有些朋友也跟我有同樣的需求,「mikey at badpenguins dot com」甚至自己寫程式碼來驗證憑證鏈(您可以在 openssl_verify 下方的註釋中看到)。
我注意到 openssl_verify 下方有一個被點了「-3 個讚」的註釋,它說「在 php 中驗證 X509 憑證鏈似乎可以使用 openssl_x509_checkpurpose() 來完成」,我閱讀了關於這個函式的原始碼,給定的 $purpose 常數變數(例如 X509_PURPOSE_SSL_CLIENT)是 1-7,如果您將 $purpose 設定在 1-7 之間,您就無法驗證憑證鏈。設定 $purpose=0 可以得到驗證憑證鏈的真實結果。
我給那個「-3 個讚」的註釋點了個讚,現在是 -2 個讚了,哈哈。