codeigniter 如何用PHP创建一个分离的P7S文件?

juud5qan  于 2023-02-20  发布在  PHP
关注(0)|答案(1)|浏览(160)

我有一个特殊的需求:在我的软件中,我生成了一个TXT文档,我需要使用CAdES方法对此文件进行签名,并生成一个分离的P7 S文件,但我没有找到有关如何执行此操作的任何信息。
那么我的一步一步

  • 生成包含我需要的所有内容的此TXT
  • 使用有效的PFX证书(我已经拥有)对此进行签名
  • 基于此以前的签名生成P7 S文件

我尝试使用函数openssl_pkcs7_sign,但我只有一个HTTP 500错误,没有捕获任何异常,所以我真的不知道发生了什么。
这是一个简单的例子,我尝试了(我做了很多不同的调用这个函数,这是最后一个):

// the message you want to sign so that recipient can be sure it was you that
    // sent it
    $data = 'Here is the content';

    // save message to file
    $fp = fopen("licence.txt", "w");
    fwrite($fp, $data);
    fclose($fp);

    // encrypt it
    if (openssl_pkcs7_sign("license.txt", "licence.txt.p7s", "my_pfx_file.pfx",
       array("file://some_folder/my_pfx_file.pfx"),
       null
       )) {
       // message signed - send it!
       exit('foi');
    } else {
        exit('falhou');
    }

我希望有人能帮帮我!

6ioyuze2

6ioyuze21#

根据documentation,密钥和证书应该是实体、“file://...”格式的字符串或文件的内容。
由于某种原因,我不能使用'file://...'格式,所以我不得不使用openssl_x509_read作为证书,openssl_pkey_get_private作为密钥。另外,如果你在某个参数中使用数组,它期望密钥在0索引,密码在1。
对于任何错误,请查看openssl_error_string,只要您从这些方法中得到false,它就会包含任何错误。
希望这有帮助!

相关问题