2013-10-24 51 views
1

我想驗證遠程站點的SSL證書。捲曲可以給出一個通用的成功或失敗指示,但沒有細節。我的客戶需要具體說明爲什麼證書失敗:錯誤的域名,已撤銷或已過期的證書,不可信的CA等。PHP和SSL:如何檢索遠程站點證書的「詳細」驗證結果?

當證書上的主機名錯誤時,curl_error($ ch)返回適當的錯誤。但是,如果證書過期或被撤銷,它不會返回任何信息,它將返回"Peer certificate cannot be authenticated with known CA certificates",這是不正確的。

如何使用PHP獲取遠程站點證書無效/不可信的確切原因?

看起來像捲曲不能做到這一點。

回答

0

要獲得有效期內,我用this answer

,並將此:

$cert_info = openssl_x509_parse($cont["options"]["ssl"]["peer_certificate"]); 

    if($cert_info['validFrom_time_t'] < time() < $cert_info['validTo_time_t']) { 
     //Certificate is CURRENT! 
    } else { 
     //Certificate is Expired or not yet valid 
    }