我有一个带读卡器的智能卡,我决定在后者中实施客户端证书。
存储在卡中的私钥和公钥存储在服务器中。
应用场景是这样的:
在我的应用程序中,有一种证书身份验证模式(静态文件.pem),并且还使用私钥(也是静态.pem)。我使用openssl-net
函数(例如FromPrivateKey(string pem, string password)
和PrivateEncrypt(byte[] msg, RSA.Padding padding)
)来读取私钥并加密数据以发送到服务器。
所需要的问题是,自从我的pem文件以来,我没有先验的方法将我的私钥导出到我的智能卡中。
经过大量研究后,我明白我应该使用而不是这些函数类型函数:“ENGINE_load_private_key”,引擎“pkcs11”。
所以我看到了几个openssl配置的例子(例如http://openssl.6102.n7.nabble.com/Private-Key-from-Windows-Cert-Store-td20720.html)和pkcs11(opensc,engine_pkcs11等等。)麻烦的是这些配置是针对Linux的。
实际上,我需要开发一个客户端应用程序Windows WPF(用C#编写),它可以从智能卡或PEM文件中读取私钥。