openssl_pkcs7_sign在签署Passbook的传递文件时不返回任何内容

时间:2013-01-07 09:20:41

标签: php openssl passbook

openssl_pkcs7_sign('manifest.json', 'signature', $certdata, $privkey, array(), PKCS7_BINARY | PKCS7_DETACHED, 'AppleWWDRCA.pem');

它创建一个空的签名文件,没有错误消息。

但我可以使用OpenSSL命令行制作正确的签名(使用相同的WWDR副本,p12,pkpass文件):

openssl smime -binary -sign -certfile AppleWWDRCA.pem -signer passcertificate.pem -inkey passkey.pem -in manifest.json -out signature -outform DER -passin pass:123123

1 个答案:

答案 0 :(得分:0)

检查$ certdata和$ privkey的值,如果它们是文件名,则前缀为'file://'。

正如@Charles所说,你的错误日志是寻找线索失败原因的最佳位置。

我们曾经使用过以下命令,但在基准测试后我们发现exec表现更好。

openssl_pkcs7_sign( 
    "manifest.json",
    "signature",
    "file://" . $certdata,
    array("file://" . $privkey, $keyPassword),
    array(),
    PKCS7_BINARY|PKCS7_NOATTR|PKCS7_DETACHED,
    "/path/to/AppleWWDRACA.pem");