openssl中的'write certificate verify'是什么意思?

What is meant by 'write certificate verify' in openssl?

我正在通过以下命令使用存储在令牌中的密钥发送 Web 服务请求。

openssl s_client -engine pkcs11 -key slot_1-id_00 -keyform engine -CAfile cacert.pem -cert cert.pem -certform PEM -connect hostname:443 -tls1_2 -state -prexit

并收到错误

SSL_connect:error in SSLv3/TLS write certificate verify
13808:error:8207A006:PKCS#11 module:pkcs11_private_encrypt:Function failed:p11_rsa.c:116:
13808:error:14166006:SSL routines:tls_construct_client_verify:EVP lib:..\Users\Downloads\openssl-1.1.0j.tar\openssl-1.1.0j\ssl\statem\statem_clnt.c:2663:

我在我的 windows 机器上使用 openssl 1.1.0j,你能告诉我是什么原因导致了这个问题吗?关于这个问题没有太多可用的文档。

write certificate verify 是涵盖构建 发送(客户端)证书验证消息的协议状态;参见 rfc5426 section 7.4.8。错误堆栈有更具体的 14166006:SSL routines:tls_construct_client_verify:EVP lib(以及源文件和行)——错误发生在 libssl 代码调用 PKCS11 引擎要求设备签署需要签署的数据时向服务器证明您的身份。不幸的是,PKCS11 引擎将错误报告为简单的 'function failed',这不是很有用。

你能检查引擎(或驱动程序吗?)是否将相关信息放在其他地方,例如Windows 事件日志?

您从哪里获得 PKCS11 引擎?有文档吗?您确定它与您的 OpenSSL 兼容吗?您的 OpenSSL 是如何构建的(例如,编译器、Microsoft 的 C 运行时版本、动态或静态库)?

您是否有其他成功使用此硬件的软件,最好是与它相同的密钥?

您能否(并且可能)将此硬件移到另一台机器上并在那里尝试?