gpt4 book ai didi

c# - TCP套接字在C#中验证SslStream的SSL证书

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:17 31 4
gpt4 key购买 nike

我目前正在一个项目中,该项目包含通过TCP进行通信的服务器和客户端。因此,我想使用SSL保护我的连接。我在http://www.dib0.nl/code/367-using-a-client-certificate-with-an-ssl-stream-in-c找到了一个很好的例子。只有一个问题。它确实接受所有证书。我知道我必须修改RemoteCertificateValidationCallback函数并检查是否有SslPolicyErrors,但是当我这样做时,我在服务器端和客户端都收到了身份验证错误。它说证书无效。
我正在使用用openssl创建的证书。

public static bool ValidateServerCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors != SslPolicyErrors.None)
return false;
return true;
}


我希望有人能弄清楚我的错误。我认为这与证书有关。
谢谢您的帮助。

最佳答案

我在TCP客户端/服务器程序中使用了以下代码。而且工作正常!如果您在同一台计算机上创建了TCP客户端/服务器,则必须要求在MMC存储中同时拥有两个客户端/服务器证书。

private static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
// For Server Certificate Authentication Errors
if (sslPolicyErrors == SslPolicyErrors.None)
return true;

Console.WriteLine("Certificate error: {0}", sslPolicyErrors);

// Do not allow this client to communicate with unauthenticated servers.
return false;

// Return True if you want to accept all certificate.
//return true;
}


希望这也对您有用!

关于c# - TCP套接字在C#中验证SslStream的SSL证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369080/

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