【问题标题】:trouble using SSL certificate from Third Party使用来自第三方的 SSL 证书时遇到问题
【发布时间】:2016-07-14 12:07:32
【问题描述】:

我正在开发一个与第三方网络服务通信的网络服务。第三方要求我使用 SSL 证书与他们的系统进行所有通信。

在我的应用程序中,我使用以下代码从文件加载证书,例如“certificate.p12”:

Cert = new X509Certificate2(certPath, certPWD);

然后我将它添加到我的网络请求中,如下所示:

webRequest.ClientCertificates.Add(Cert);

在我的开发机器上,这可以完美运行,但是,在测试服务器(位于数据中心外部)上,我根本无法让它工作。

我还尝试将证书放入不同位置的证书存储区、当前用户和本地计算机,然后从那里加载它而不是在代码中。同样的问题。

使用当前版本,应用程序在加载文件时停止...我在该行之前和之后都有调试信息,它没有通过它,但也没有抛出任何错误。

我很困惑...感谢任何帮助。

谢谢。

更新:虽然我不是 100% 确定,但我很确定我在这一行收到“对象未设置为引用实例”错误

Cert = new X509Certificate2(certPath, certPWD);

更新 2

“也许测试机缺少证书的根链?” - 我认为这是问题所在。刚问了办公室里的另一个人,证书是由第三方颁发的,而不是现有的可信来源。在我的本地机器上,这似乎不是问题,但我认为在服务器上阻止它有更高级别的安全性......现在看几个选项,

  1. 我可以绕过这个安全检查只为这个证书,因为我们 知道它值得信赖,
  2. 我可以从 第三方和
  3. 我可以为第三个创建根证书吗 派对。

【问题讨论】:

  • 代码只是挂在那行?如果您将 Visual Studio 中的异常设置更改为同时处理已处理和未处理的异常,您是否仍然在该行看不到任何异常?
  • 它并没有那么挂起......它在那个时候打破了功能并从那里继续,但我没有理由看到......如果我改变异常设置是否适用于服务器上的已发布版本?因为我无法在那里正确调试它,只能通过手动添加报告......它可以在我的本地机器上运行,所以它不会在那里捕获任何东西。
  • 如果您无法安装远程调试器,异常设置将无济于事。
  • 这就是我的想法......遗憾的是我无法将它安装在服务器上......我可能可以但我无法从本地机器上的 Visual Studio 访问它,因为没有直接访问。

标签: c# ssl-certificate


【解决方案1】:

尝试联系数据中心的 IT 支持,并确保用于运行托管应用程序的进程的身份具有访问证书存储所需的权限。

【讨论】:

  • 我没有使用证书存储。我有一个 .p12 文件的证书,我正在打开它。
  • 只是为了测试,将一个简单的文本文件拖放到与p12 文件相同的文件夹中,然后尝试使用File.Open(path, FileMode.Open) 打开它以进行阅读。可能是文件系统访问问题。
  • 遗憾的是,这也不是答案...我自己也想知道,所以我添加了一个新的 Web 方法,按照你说的做,读取同一目录中的文本文件,但它读取它完美。
  • 另外 2 个要调查的选项: - 也许 p12 证书主机名绑定到特定机器(您的开发机器)并且它不能被测试服务器使用? - 可能是测试机缺少证书的根链?
猜你喜欢
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
相关资源
最近更新 更多