1
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

4

1 回答 1

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");
于 2013-01-08T13:03:46.243 回答