【发布时间】: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:
“也许测试机缺少证书的根链?” - 我认为这是问题所在。刚问了办公室里的另一个人,证书是由第三方颁发的,而不是现有的可信来源。在我的本地机器上,这似乎不是问题,但我认为在服务器上阻止它有更高级别的安全性......现在看几个选项,
- 我可以绕过这个安全检查只为这个证书,因为我们 知道它值得信赖,
- 我可以从 第三方和
- 我可以为第三个创建根证书吗 派对。
【问题讨论】:
-
代码只是挂在那行?如果您将 Visual Studio 中的异常设置更改为同时处理已处理和未处理的异常,您是否仍然在该行看不到任何异常?
-
它并没有那么挂起......它在那个时候打破了功能并从那里继续,但我没有理由看到......如果我改变异常设置是否适用于服务器上的已发布版本?因为我无法在那里正确调试它,只能通过手动添加报告......它可以在我的本地机器上运行,所以它不会在那里捕获任何东西。
-
如果您无法安装远程调试器,异常设置将无济于事。
-
这就是我的想法......遗憾的是我无法将它安装在服务器上......我可能可以但我无法从本地机器上的 Visual Studio 访问它,因为没有直接访问。
标签: c# ssl-certificate