C #: Как получить ответ SSL рукопожатия, прежде чем перейти к HttpWebrequest? - PullRequest
0 голосов
/ 04 июня 2018

Я хочу знать мой ответ на рукопожатие SSL перед выполнением любого запроса HttpWebRequest, чтобы в случае сбоя я не делал никакого запроса HttpWebRequest.

1 Ответ

0 голосов
/ 04 июня 2018

Если рукопожатие SSL завершается неудачно, оно вызывает исключение.Тем не менее, если вы действительно хотите выполнить какую-то грубую работу и заняться модными делами, проверьте класс SslStream .Я включил некоторые примеры кода оттуда ниже.Это позволит вам сделать более детальную работу по обеспечению безопасности, если у вас есть для этого вариант использования.

    // Create a TCP/IP client socket.
    // machineName is the host running the server application.
    TcpClient client = new TcpClient(machineName, 443);
    Console.WriteLine("Client connected.");

    // Create an SSL stream that will close the client's stream.
    SslStream sslStream = new SslStream(
        client.GetStream(), 
        false, 
        new RemoteCertificateValidationCallback (ValidateServerCertificate), 
        null
        );

    // The server name must match the name on the server certificate.
    try 
    {
        sslStream.AuthenticateAsClient(serverName);
    } 
    catch (AuthenticationException e)
    {
        Console.WriteLine("Exception: {0}", e.Message);
        if (e.InnerException != null)
        {
            Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
        }
        Console.WriteLine ("Authentication failed - closing the connection.");
        client.Close();
        return;
    }
...