这是我的问题;目前,我正在使用位于我的计算机本地的证书密钥文件,该文件是发送网络请求所必需的。该项目将在其他项目中使用,我不方便将证书发送给他们。
我尝试使用Build Action - Content在构建时将文件包含在项目中。虽然,我无法找到此文件的位置。我还使用了#34; Embedded Resource"作为一个Build Action但我遇到了问题,因为我只能在流中加载文件,这不是我正在寻找的东西,因为对象:
X509Certificate2 certificate = new X509Certificate2(certName, password);
仅使用证书文件的位置,不需要打开它。
有人可以提供一个解决方案,我可以将文件构建到项目中,并仅引用其上述对象的路径吗?
谢谢,
答案 0 :(得分:1)
您可以通过提供嵌入式resourceName:
来获取证书,如下所示using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
var cert = new X509Certificate2();
cert.Import(assemblyData);
}
但正如@ Alex.K在评论中所说,它只会略微提高安全性,因为“资源”非常容易获取,你唯一能做到的就是文件不会很容易看到。