是否可以将数字证书作为参数传递,使用它进行签名,而不是将其存储在本地

本文关键字:存储 数字证书 参数传递 是否 | 更新日期: 2023-09-27 17:55:14

我已经搜索了这个,但还没有找到答案。

如果我想使用数字证书对某些内容进行签名,通常必须将其保存在证书存储中。

但是,是否可以将数字证书作为方法参数传递,使用证书对文档进行签名,并且不以任何方式将其存储在本地?

我会在 C++ 或 C# 中执行此操作。

是否可以将数字证书作为参数传递,使用它进行签名,而不是将其存储在本地

可以使用 X509Certificate2 类的各种构造函数从文件或字节数组创建证书。 例如:

string certFile = @"MyCert.pfx";
string pfxPassword = "password"; // never hard code password in code
X509Certificate2 certificate = new X509Certificate2(certFile, pfxPassword, 
    X509KeyStorageFlags.MachineKeySet);
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)certificate.PrivateKey;

然后,可以使用加密服务提供程序进行签名,如如何:使用数字签名对 XML 文档进行签名。

现在这是否"不以任何方式将其存储在本地"? 嗯,不完全是。 证书不存储,但私钥存储在Microsoft加密 API 加密服务提供程序密钥数据库中。