openssl — подпись PKCS # 7 в PHP с использованием PKCS # 11 без вызова CLI

Существует ли способ создания подписи PKCS # 7 (S / MIME) с помощью HSM-устройства (считывателя карт), совместимого с PKCS # 11, с использованием чистого PHP, то есть без явного вызова команды оболочки, например, с помощью PHP OpenSSL библиотека или какой-то другой клей?

Я могу успешно создать подпись PKCS # 7 с помощью CLI openssl с движком PKCS # 11 вот так:

putenv('PIN='.$secret_card_pin);
shell_exec("export PIN; OPENSSL_CONF=openssl.cnf openssl smime -sign -engine pkcs11 -md sha1 -binary -in {$tmpFileIn} -out {$tmpFileOut} -outform der -keyform engine -inkey id_ed0007 -signer pubcert.pem");

Я хочу очистить это, но это кажется невозможным, используя чистый PHP, потому что, насколько я могу судить openssl_pkcs7_sign () Функция может использоваться только с файлом закрытого ключа без какой-либо поддержки pkcs11-engine предоставленные ключи. Я что-то пропустил?

0

Решение

Нет, в то время как для многих языков есть привязки PKCS # 11, для PHP нет ни одной.

Вам понадобится это, тогда вы сможете создать PKCS # 7 и подписать его с помощью этой библиотеки.

К сожалению, отсутствует, что вам нужно будет использовать CLI.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]