QSCD может быть развернут как облачный сервис, если он соответствует требуемым стандартам. В связи с этим я не собираюсь создавать его по причинам законодательства, а скорее чтобы мой программный продукт мог доказать, что сертификат исходит от нас.
Идея состоит в том, чтобы создать PKI, где QSCD «выдает» пользователю ключи, которые затем электронным образом подписывают файл PDF. Если открытый ключ Можно декодировать файл, это доказывает, что он пришел от этого пользователя (в данном случае это будет учетная запись бота, которая подписывает сертификаты).
Я нашел онлайн-решения, которые дают вам право платить за такие услуги, но хотел знать, как создать собственное решение. Я сталкивался с использованием 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);
Задача ещё не решена.
Других решений пока нет …