Добрый день!
Есть XML, мне необходимо подписать его в формате PKCS#7, использую openssl на php.
Мой код
if (openssl_pkcs7_sign($fileName.'.xml', $fileName.'_signed.xml', "cert.pem",
array("private.key", "passphrase"),
array("To" => "test@test.ru", // keyed syntax
"From: from@test.ru")
)) {
echo 111;
}
Единички не выводит, не понимаю почему.
Через терминал использую так
openssl smime -sign -in file.xml -signer cert.pem -inkey private.key -out file_signed.xml -outform PEM
и после запроса ввода pass phrase private key возникают ошибки
139919525967512:error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithm:p_lib.c:231:
139919525967512:error:0B07706F:x509 certificate routines:X509_PUBKEY_get:unsupported algorithm:x_pubkey.c:148:
139919525967512:error:0B080075:x509 certificate routines:X509_check_private_key:unknown key type:x509_cmp.c:346:
139919525967512:error:2108907F:PKCS7 routines:PKCS7_sign_add_signer:private key does not match certificate:pk7_smime.c:163:
Гуглил ошибки. ничего толкового не нашел, параметры какие только не подставлял, не получается подписать.
Помогите плиз, куда копать хоть, или если есть готовый пример.
Спасибо!
=====================
Первые две ошибки решил.
Остались еще две.
139694728468120:error:0B080073:x509 certificate routines:X509_check_private_key:key type mismatch:x509_cmp.c:343:
139694728468120:error:2108907F:PKCS7 routines:PKCS7_sign_add_signer:private key does not match certificate:pk7_smime.c:163:
========
Оказалось, что сервис неправильный сертификат прислал.