Проблемы с цифровой подписью php и электронной почты

Я пытаюсь подписывать электронные письма цифровой подписью с помощью php, но у меня с этим возникают проблемы. Я создал сертификат, подписанный моим собственным ЦС с открытым ssl:

openssl req -new -nodes -out request.pem -keyout key.pem -days 1098 -config ./openssl.cnf
openssl ca -in request.pem -out cert.pem -config ./openssl.cnf

Я создал закрытый ключ key.pem подписанный сертификат 04.pem В корневом каталоге apache у меня есть файл podepsany_email.php и cert + key рядом с ним.

для цифровой подписи использую функцию openssl_pkcs7_sign (). Код:

openssl_pkcs7_sign("./msg.txt", "./signed.txt", "./04.pem" ,"./key.pem", $headers);

Результатом вызова моего скрипта является сообщение об ошибке:

Предупреждение: openssl_pkcs7_sign () [function.openssl-pkcs7-sign]: ошибка при получении закрытого ключа в C: \ data \ www \ podepsany_email.php в строке 70

Не могли бы вы указать мне, как решить эту проблему? Спасибо

K.


person Petr Kostroun    schedule 08.09.2011    source источник
comment
Для файлов не заданы пароли или парольные фразы?   -  person Nicholas Wilson    schedule 08.09.2011
comment
Нет, ключ экспортируется без пароля. Решением этой проблемы является изменение всех путей к файлам при вызове функции на абсолютные пути. Тогда функция запустится без проблем.   -  person Petr Kostroun    schedule 08.09.2011
comment
Вы можете указать это в ответе и принять его самостоятельно, установив галочку, чтобы закрыть вопрос.   -  person Nicholas Wilson    schedule 08.09.2011


Ответы (1)


см. обсуждение документации php: http://php.net/manual/en/function.openssl-pkcs7-sign.php

вы должны поставить "file: //" перед именами файлов .pem.

person Ludovit Scholtz    schedule 03.09.2012