2012-11-26 35 views
3

我使用此代碼簽署一份文件openssl_pkcs7_sign:添加中間證書

openssl_pkcs7_sign($in,$out, 
    cert.crt, 
    cert.key, 
    array(), 
    PKCS7_NOATTR 
); 

但是它仍然打開時顯示爲不可驗證。

相反,這OpenSSL的命令正常工作:

openssl smime -sign -in in -out out -signer cert.crt -inkey cert.key -certfile ca-bundle -outform der -nodetach 

爲什麼不工作的PHP代碼?

回答

3

OK,

openssl_pkcs7_sign($in,$out, 
    cert.crt, 
    cert.key, 
    array(), 
    PKCS7_NOATTR, 
    "/real/path/of/ca/intermeidate/cert/file.pem" 
     ); 

的伎倆。最後一個$ extracerts arg使用真實路徑而不是file://

+0

非常感謝,您剛剛爲我節省了一大筆頭痛的問題 –

+0

@Reviewers,我不認爲我爲該帖子建議的修改「旨在解決該職位的作者「。我認爲它完全「作爲編輯有意義」,因爲它顯着提高了答案的質量。你能否擴展你的拒絕? –