有没有一种方法可以使用纯 PHP 使用符合 PKCS#11 的 HSM 设备(读卡器)创建 PKCS#7 (S/MIME) 签名,即无需显式 shell 命令调用,例如使用PHP OpenSSL库或其他胶水?
openssl
我可以使用带有 PKCS#11 引擎的CLI 成功创建 PKCS#7 签名,如下所示:
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
提供的密钥。我错过了什么吗?