首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP-PKPass不适用于PHP7使用iOS中的S/MIME签名时间属性添加pass签名的日期和时间

PHP-PKPass不适用于PHP7使用iOS中的S/MIME签名时间属性添加pass签名的日期和时间
EN

Stack Overflow用户
提问于 2013-11-19 21:27:29
回答 2查看 1.1K关注 0票数 2

嗨,我是iOS7和php的新手,我一直在尝试让这个PHP-PKPass Class在iOS7上工作,它在我的Safari浏览器上运行得很好,当我尝试下载这个包并将它添加到我的存折safari时,我可以看到门票的样子,safari告诉我“无法下载文件”这是它有sample running with my certificates的链接,我查看了手机日志,上面写着:

提供的passTypeIdentifier或teamIdentifier可能与您的证书不匹配,或者无法验证证书信任链。

我的所有证书都工作正常json是正确的,因为我可以在我的Mac上可视化它,到目前为止,我所做的研究指出,需要使用服务器日期时间签名的包在iOS6中没有强制执行,但在iOS7中强制执行

任何人都可以通过php使用S/MIME签名时间属性将pass签名的日期和时间添加到当前的php类中?

代码语言:javascript
复制
 protected function createSignature($manifest) {
            $paths = $this->paths();

            file_put_contents($paths['manifest'], $manifest);

            $pkcs12 = file_get_contents($this->certPath);
            $certs = array();
            if(openssl_pkcs12_read($pkcs12, $certs, $this->certPass) == true) {
                    $certdata = openssl_x509_read($certs['cert']);
                    $privkey = openssl_pkey_get_private($certs['pkey'], $this->certPass );

                    if(!empty($this->WWDRcertPath)){

                            if(!file_exists($this->WWDRcertPath)){
                                    $this->sError = 'WWDR Intermediate Certificate does not exist';
                                    return false;
                            }

                            openssl_pkcs7_sign($paths['manifest'], $paths['signature'], $certdata, $privkey, array(), PKCS7_BINARY | PKCS7_DETACHED, $this->WWDRcertPath);
                    }else{
                            openssl_pkcs7_sign($paths['manifest'], $paths['signature'], $certdata, $privkey, array(), PKCS7_BINARY | PKCS7_DETACHED);
                    }

                    $signature = file_get_contents($paths['signature']);
                    $signature = $this->convertPEMtoDER($signature);
                    file_put_contents($paths['signature'], $signature);

                    return true;
            } else {
                    $this->sError = 'Could not read the certificate';
                    return false;
            }
    }
EN

回答 2

Stack Overflow用户

发布于 2013-11-19 21:49:38

尝试将证书和密钥作为文件引用进行传递。例如。

代码语言:javascript
复制
openssl_pkcs7_sign($paths['manifest'],
            $paths['signature'],
            'file://' . $certs['cert'],
            array('file://' . $certs['cert'], $this->certPass),
            array(),
            PKCS7_BINARY|PKCS7_DETACHED,
            $this->WWDRcertPath);
票数 1
EN

Stack Overflow用户

发布于 2013-11-20 22:00:40

我创建了一个新的pass ID,生成了一个新的p12证书,现在可以使用了!感谢您的帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20072793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档