【问题标题】:Providing Only the Path from an Assembly File仅提供来自程序集文件的路径
【发布时间】:2018-05-05 05:46:36
【问题描述】:

这是我的问题;目前我正在使用位于我的计算机本地的证书密钥文件,该文件是发送 web 请求所必需的。这个项目将在其他项目中使用,我不愿意将我的证书发送给他们。

我正在尝试使用构建操作 - 内容将文件包含在构建项目中。虽然,我无法找到这个文件的位置。我也使用“嵌入式资源”作为构建操作,但我遇到了问题,因为我只能在流中加载文件,这不是我想要的,因为对象:

 X509Certificate2 certificate = new X509Certificate2(certName, password);

只使用证书文件的位置,不需要打开它。

谁能提供一个解决方案,让我能够将文件构建到项目中并仅引用其路径到上面的对象?

谢谢,

【问题讨论】:

  • 所以您想对应用程序的最终用户隐藏客户端证书?你可以让它稍微困难,但没有防弹方法。如果您想自己保留它,请让您的客户端应用程序调用您创建的 Web 服务,然后使用证书调用真正的 Web 服务 - 这样他们就根本不需要它。

标签: c# .net web-services build


【解决方案1】:

您可以通过提供嵌入的资源名称来获取证书,如下所示:

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 在评论中所说,它只会略微提高安全性,因为“资源”很容易访问,你唯一能实现的就是文件不会很容易看到。

【讨论】:

  • 做到了!谢谢你。是的,我明白,因为这将在内部使用,我希望尽可能地消除可见性会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2011-05-13
相关资源
最近更新 更多