Что касается документации по подписанию электронных писем с pkcs7 в php, я должен использовать предыдущий сгенерированный сертификат.
Какова команда для точного создания необходимых файлов для этого примера в openssl? http://www.php.net/manual/it/function.openssl-pkcs7-sign.php
<?php // the message you want to sign so that recipient can be sure it was you that // sent it $data = <<<EOD You have my authorization to spend $10,000 on dinner expenses. The CEO EOD; // save message to file $fp = fopen("msg.txt", "w"); fwrite($fp, $data); fclose($fp); // encrypt it if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem", array("file://mycert.pem", "mypassphrase"), array("To" => "joes@example.com", // keyed syntax "From: HQ <ceo@example.com>", // indexed syntax "Subject" => "Eyes only") )) { // message signed - send it! exec(ini_get("sendmail_path") . " < signed.txt"); } ?>
Заранее спасибо за вашу помощь.
Изменить 1:
$prepend = "file:/"; openssl_pkcs7_sign($prepend . realpath(dirname(__FILE__)) . "/text.txt", $prepend . realpath(dirname(__FILE__)) . "/enc.txt", $prepend . realpath(dirname(__FILE__)) . "/selfcert.pem", array($prepend . realpath(dirname(__FILE__)) . "/enc_key.pem", "123456"), $headers);
Я сгенерировал файл cert с помощью команды
openssl req -x509 -days 365 -newkey rsa:1024 -keyout enc_key.pem -out selfcert.pem
Все еще получите ошибку:
Предупреждение: openssl_pkcs7_sign (): ошибка получения секретного ключа в …
Изменить 2: добавлено добавление
Может быть, это как-то связано с «preprend»? Im действительно не уверен, что проблема заключается либо в извлечении файла, либо в самом ключе.
Решил это сам. Проблема заключалась в правильном извлечении ключей. Поэтому для всех, кто приходит на эту проблему:
$prepend = "file://"; openssl_pkcs7_sign(realpath(dirname(__FILE__)) . "/text.txt", realpath(dirname(__FILE__)) . "/enc.txt", $prepend . realpath(dirname(__FILE__)) ."/selfcert.pem", array($prepend . realpath(dirname(__FILE__)) ."/enc_key.pem", "123456"), $headers);