Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建合格的电子签名创建设备_Php_Ssl_Ssl Certificate_Electronic Signature - Fatal编程技术网

Php 如何创建合格的电子签名创建设备

Php 如何创建合格的电子签名创建设备,php,ssl,ssl-certificate,electronic-signature,Php,Ssl,Ssl Certificate,Electronic Signature,QSCD可以部署为云服务,只要它符合要求的标准。因此,我不希望出于立法原因创建一个,而是希望我的软件能够证明证书来自我们 其想法是创建一个PKI,QSCD向用户“颁发”密钥,然后用户以电子方式签署PDF文件。如果公钥可以解码该文件,则证明该文件确实来自该用户(在这种情况下,将是签署证书的bot帐户) 我已经找到了在线解决方案,使您有权为此类服务付费,但我想知道如何创建我自己的解决方案。我是使用openssl.*来实现这一点的。我看了一些答案,想知道如何解决这个问题 我现在一直关注的部分是如何加载

QSCD可以部署为云服务,只要它符合要求的标准。因此,我不希望出于立法原因创建一个,而是希望我的软件能够证明证书来自我们

其想法是创建一个PKI,QSCD向用户“颁发”密钥,然后用户以电子方式签署PDF文件。如果公钥可以解码该文件,则证明该文件确实来自该用户(在这种情况下,将是签署证书的bot帐户)

我已经找到了在线解决方案,使您有权为此类服务付费,但我想知道如何创建我自己的解决方案。我是使用
openssl.*
来实现这一点的。我看了一些答案,想知道如何解决这个问题

我现在一直关注的部分是如何加载PDF文档并使用私钥对其进行电子签名,然后导出新的PDF文件,然后使用公钥对其进行解密,确保其未被篡改

我当前的尝试如下所示:

$config = array(
    "digest_alg" => 'sha512',
    "private_key_bits" => 4096,
    "private_key_type" => OPENSSL_KEYTYPE_RSA
);

$keyPair = openssl_pkey_new($config);
$privateKey = NULL;
openssl_pkey_export($keyPair, $privateKey);
$keyDetails = openssl_pkey_get_details($keyPair);
$publicKey = $keyDetails['key'];

openssl_pkcs7_sign("toSign.pdf", "signed.pdf"); // how to sign using the private key?
penssl_public_decrypt("signed.pdf", $publicKey);