gpt4 book ai didi

C# SSL服务器模式必须使用带有对应私钥的证书

转载 作者:太空狗 更新时间:2023-10-29 17:43:18 33 4
gpt4 key购买 nike

我将学习如何在服务器端使用 C# 处理 HTTPS 流量,至于第一步,我遇到了一些麻烦。

这是一些代码(http://pastebin.com/C4ZYrS8Q):

class Program
{
static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None) return true;
Console.WriteLine("Certificate error: {0}", sslPolicyErrors);
return false;
}

static void Main()
{
var tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 8080);
tcpListener.Start();
var clientAccept = tcpListener.AcceptTcpClient();
Thread.Sleep(1000);

if (clientAccept.Available > 0)
{
var sslStream = new SslStream(clientAccept.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
var certificate = new X509Certificate("path\server.pfx", "password");
sslStream.AuthenticateAsServer(certificate);
}

Console.ReadLine();
}
}

不要争论! :) 这只是我只想在 C# 中使用 SSL 处理实现一些基本步骤的测试代码。

所以...问题出现在这一行:

sslStream.AuthenticateAsServer(certificate);

enter image description here

从俄语翻译为:

  • SSL 服务器模式必须使用带有相应私钥的证书。

我以为我的 X509 证书不正确,但再次检查:

makecert.exe -r -pe -n "CN=localhost" -sky exchange -sv server.pvk server.cer
pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx -pi <password>

似乎 X509 的创建一切正常,其他证明这条线工作正常:

var certificate = new X509Certificate("path\server.pfx", "password");

并且程序没有在上面的行中抛出异常。

那么,我的代码中的 SSL 处理有什么问题,我如何在服务器端处理传入的 SSL 流?

最佳答案

一切都很好,答案是使用 X509Certificate2 类而不是 X509Certificate

并将您创建的证书添加到信任列表。

关于C# SSL服务器模式必须使用带有对应私钥的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23044914/

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