Я хотел бы знать, как я могу подписать файл в php. Мне нужно подписать XML-файл. Когда я выполняю этот кусок кода, он дает мне следующую ошибку:
Предупреждение: openssl_sign (): предоставленный параметр ключа не может быть приведен к закрытому ключу в C: \ xampp \ htdocs \ test \ index.php в строке 35
Предупреждение: openssl_free_key () ожидает, что параметр 1 будет ресурсом, логическое значение указано в C: \ xampp \ htdocs \ test \ index.php в строке 38
Код такой:
$data->save("test.xml");
$signature;
$pkeyid = openssl_pkey_get_public("./public.cer");
$path = 'test.xml';
openssl_sign($path, $signature, $pkeyid);
openssl_free_key($pkeyid);
Исправлена:
Итак, у меня было неправильное представление о том, что я должен подписывать данные публичным сертификатом, а также я не загружал данные должным образом. Я изменил это, и это сработало 🙂
Вот функция, которую я использовал:
$ pkeyid = openssl_pkey_get_private (file_get_contents (‘./ private.key’));
Путь «./public.cer», скорее всего, является ошибкой. Попробуйте вместо этого использовать абсолютный путь. Второе предупреждение говорит о том, что $ pkeyid является логическим значением, и именно это openssl_pkey_get_public () возвращает при ошибке.
Других решений пока нет …