9 c# ssl https handle x509certificate
我将学习如何在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();
}
}
Run Code Online (Sandbox Code Playgroud)
不要争辩!:)这只是测试代码,我只想在C#中实现SSL处理的一些基本步骤.
所以......问题发生在这一行:
sslStream.AuthenticateAsServer(certificate);
Run Code Online (Sandbox Code Playgroud)

从俄语翻译为: - 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>
Run Code Online (Sandbox Code Playgroud)
似乎X509的创作一切都很好,其他证据就是这条线很好用:
var certificate = new X509Certificate("path\server.pfx", "password");
Run Code Online (Sandbox Code Playgroud)
并且程序没有在上面的行中抛出异常.
那么,我的代码中的SSL hanlding有什么问题?如何处理作为服务器端的传入SSL流?
| 归档时间: |
|
| 查看次数: |
7482 次 |
| 最近记录: |