Apakah ada cara untuk membuat tanda tangan PKCS#7 (S/MIME) dengan perangkat HSM yang sesuai dengan PKCS#11 (pembaca kartu) menggunakan PHP murni, yaitu tanpa panggilan perintah shell eksplisit, mis. menggunakan PHP OpenSSL atau lem lainnya?

Saya berhasil membuat tanda tangan PKCS#7 menggunakan CLI openssl dengan mesin PKCS#11 seperti:

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");

Saya ingin membersihkan ini tetapi sepertinya tidak mungkin menggunakan PHP murni karena sejauh yang saya tahu openssl_pkcs7_sign() hanya dapat digunakan dengan file kunci pribadi tanpa dukungan apa pun untuk kunci yang disediakan pkcs11-engine. Apakah saya melewatkan sesuatu?

0
cprn 12 Desember 2017, 14:01

1 menjawab

Jawaban Terbaik

Tidak ada, sementara ada pengikatan PKCS#11 untuk banyak bahasa, tidak ada satu pun untuk PHP.

Anda akan membutuhkan ini, lalu Anda dapat membuat PKCS#7 dan menandatanganinya menggunakan pustaka itu.

Sayangnya tidak ada bahwa Anda perlu menggunakan CLI.

1
rmhrisk 16 Desember 2017, 06:52