Как отсканировать и проверить версию TLS для сайта? - PullRequest
1 голос
/ 09 ноября 2019

Как сканировать и проверять версию TLS для веб-сайта?

Я искал решения, которые могут автоматически сканировать весь домен веб-сайта конечной точки в нашей компании. У SSL Labs было ручное онлайн-решение

https://www.ssllabs.com/ssltest/index.html

Как эту функцию можно реализовать программным способом?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2019

Использовать HttpClient ... заставить его использовать TLS 1.2 ... посмотреть, если он потерпит неудачу ... прибыль.

public async Task<bool> SupportsTls12(string url)
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    var client = new HttpClient();
    try
    {
        var response = await client.GetAsync(url);
        return true;
    }
    catch(HttpRequestException)
    {
        return false;
    }
}

Если вы обнаружите, что это дает ложные положительные / отрицательные значения, возможно, вам придетсяизмените обработчик исключений, чтобы проверить конкретную ошибку, которая возвращается. Но это общая идея.

0 голосов
/ 09 ноября 2019

SSLLabsAPI, кажется, работает

using SslLabsLib.Enums;
using SslLabsLib;

public static void TLSChecker(string urlString)
{

    SslLabsClient client = new SslLabsClient();                                 
    // Get ipaddress and host
    var analysis = client.GetAnalysis(urlString, 24, AnalyzeOptions.Publish);
    Console.WriteLine(analysis.Host);            

    foreach (var item in analysis.Endpoints)
    {
        Console.WriteLine(item.IpAddress);

       var endpointanalysis = client.GetCachedEndpointAnalysis(analysis.Host, IPAddress.Parse(item.IpAddress));

        // get protocol list
        foreach (var protocol in endpointanalysis.Details.Protocols)
        {
            Console.WriteLine(protocol.Id);
            Console.WriteLine(protocol.Name);
            Console.WriteLine(protocol.Version);                    
        }                

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...