【问题标题】:How to read a .p12 file in my web service如何在我的 Web 服务中读取 .p12 文件
【发布时间】:2014-03-13 16:07:33
【问题描述】:

我有一个问题。我有一个 Web 服务,并且我有一个“.p12”文件,我需要在我的 Web 服务中读取它来处理一些指令。阅读“.p12”文件是必要的(文件[认证]允许我在我的域[谷歌电子邮件服务]中创建用户)

嗯,在我的机器上,Web 服务运行良好,但是当我在服务器中发布 Web 服务时,它不起作用。我已将文件 (.p12) 复制到 web 服务的主文件夹中,也复制到 bin 文件夹中,在服务器的“C”单元中,但它不起作用。

这是读取文件的那一行(我用的是 C#):

var certificate = new X509Certificate2(@"C:\\nameOfMyFile.p12", "notasecret", X509KeyStorageFlags.Exportable);

它显示了一个错误:服务器无法处理请求。 ---> 内部错误。

之后,我尝试了这个:

string hpath = HttpContext.Current.Server.MapPath(".");
hpath = hpath + "\\nameOfMyFile.p12";
var certificate = new X509Certificate2(System.Web.HttpContext.Current.Server.MapPath(hpath, "notasecret", X509KeyStorageFlags.Exportable);

它显示了同样的错误:服务器无法处理请求。 ---> 内部错误。

之后,我只写文件名:

var certificate = new X509Certificate2(@"nameOfMyFile.p12", "notasecret", X509KeyStorageFlags.Exportable);

它显示了这个错误:服务器无法处理请求。 ---> 系统找不到指定的文件

那么,我是否需要为文件、文件夹、网络服务分配一项特殊权限?读取这样的文件 (.p12) 的最佳方式是什么?

提前致谢。

【问题讨论】:

  • 这听起来确实可能是一个配股问题。尝试将文件放在网站目录中,并确保您指定的匿名访问用户实际上有权从该目录读取。
  • 谢谢你的回答,我去看看。

标签: c# asp.net .net web-services


【解决方案1】:

老实说,我不知道这是否是最好的方法,但它适用于我的情况。

添加这些命名空间:

using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

我使用这个代码:

X509Certificate2 certificate = new X509Certificate2(@"file.p12", "password", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);

最后我把我的“.p12”文件复制到了windows的“inetsrv”文件夹中。

【讨论】:

    【解决方案2】:

    我的其他解决方案有个小问题:

    1. 您必须将 .p12 文件转储到 “C:\Windows\System32\inetsrv\”

    但如果您需要应用程序文件夹中的 .p12 文件,例如:"Certificate\xyz.p12" 那么最好使用我的解决方案:

    path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Certificates\\CertificatesZoomrideDriver.p12");
    
     X509Certificate2 clientCertificate = new X509Certificate2(System.IO.File.ReadAllBytes(path), "Vikas");
    

    它在域、本地和远程 PC 上运行。

    维卡斯·乔希 :):):):):)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多