gpt4 book ai didi

.net - 使用自签名证书而不在证书存储中安装

转载 作者:行者123 更新时间:2023-12-04 03:11:45 25 4
gpt4 key购买 nike

我有一个来自第三方的自签名证书 (.cer) 文件。我想在代码中使用该证书连接到他们的网络服务(通过 HTTPS),而不是将它安装在我的 Windows 证书存储中。具体来说,这是为了让团队中的所有其他开发人员不必在本地安装此证书,以便连接为他们工作。

有没有办法在代码中做到这一点?它可以使用老式的 web 服务客户端代码(使用 wsdl.exe 或 VS 的添加 Web 引用)或 WCF 客户端代码(使用 svcutil.exe 或 VS 的添加服务引用)——我们还没有确定我们想要走的路还没有。

我试过:

proxy.ClientCertificates.Add(X509Certificate.CreateFromCertFile(@"d:\temp\mycert.cer"));

使用老式网络服务代码,运气不佳 - 它仍然失败并显示 Could not establish trust relationship for the SSL/TLS secure channel. 直到我在证书存储中实际安装证书。同样的事情:

<identity>
<certificate encodedValue="the base64 encoded contents of the file" />
</identity>

在 app.config 的端点中使用 WCF 客户端技术。

谢谢

最佳答案

之所以需要证书是因为 HTTPS。 Web 服务由传输安全 (HTTPS) 和您的系统不信任的证书保护。要信任证书,常见的方法是将证书安装到证书存储区。这一切都不是 .NET 功能——它是 .NET 责任之外的 Windows 功能。

要信任任意 SSL crtificate,.NET 提供回调方法,您可以在其中编写自己的代码来验证证书:ServicePointManager.ServerCertificateValidationCallback。如果您只是从回调中返回 true,您将信任每个证书,但这仅用于开发和测试!部署到生产应用程序后,应使用证书存储中的证书或使用回调中定义的特定验证(不推荐)。

关于.net - 使用自签名证书而不在证书存储中安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com