gpt4 book ai didi

c# - 使 C# 应用程序信任 SSL 证书

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:09 25 4
gpt4 key购买 nike

我正在尝试通过 HttpClient 类执行 HTTPS 获取请求。但是,由于提供的证书不受信任,因此在尝试执行请求时会抛出异常。

我可以访问私有(private) SSL key ,问题是如何将私有(private) key 安装到应用程序中,以便它可以从网站解密公钥?

HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://siteUsingSSL.com/");

var response = await httpClient.GetAsync("swagger/index.html");

Console.WriteLine(response.StatusCode);

最佳答案

要执行自定义 TLS/SSL 证书验证,请使用 ServicePointManager.ServerCertificateValidationCallback打回来。在回调中,您可以根据您喜欢的任何逻辑返回 true 或 false。

I have access to the private SSL key and the question is how do I install the private key into the application so it can decrypt the public key from the website?

绝对没有。私钥绝不能离开网站。此外,证书中没有任何可解密的内容。证书是使用私钥签名的,签名的验证需要嵌入在证书中的公钥。您收到的证书肯定有效,否则整个 SSL/TLS 握手将失败。

您需要决定的是您是否信任您收到的证书。

一个简单的解决方案是在您的代码中硬编码证书属性(例如指纹),然后验证收到的证书的指纹。但是,一旦您需要更改站点证书,这种验证就会被证明是错误的。

另一种天真的解决方案是验证证书颁发机构,但随后任何人都可以创建自签名证书并伪造您期望的颁发机构。

到目前为止,最好的解决方案是为您的站点使用受信任的证书。于是乎letsencrypt.org变得可用,真的没有理由不在您的网站上拥有受信任的证书。

关于c# - 使 C# 应用程序信任 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53322993/

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