Esempio n. 1
0
        public static void Setup(TestContext testContext)
        {
            _endpointHost = ConfigurationManager.AppSettings.Get("EndpointHost");
            _endpointIp   = ConfigurationManager.AppSettings.Get("EndpointIP");

            var ssllService = new SSLLabsApiService(ConfigurationManager.AppSettings.Get("ApiUrl"));

            _endpoint = ssllService.GetEndpointData(_endpointHost, _endpointIp);
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "www.ashleypoole.somereallybadurl";

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost);
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();
            var ssllService       = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            TestHost = "www.ashleypoole.somereallybadurl";
            TestIP   = "111.111.111.111";

            Response = ssllService.GetEndpointData(TestHost, TestIP);
        }
Esempio n. 4
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();
            var webResponseModel  = new WebResponseModel()
            {
                Payloay           = "{\"engineVersion\":\"1.11.4\",\"criteriaVersion\":\"2009i\",\"clientMaxAssessments\":5,\"notice\":\"Some notice goes here\"}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = "https://api.ssllabs.com/api/v2/info"
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Info();
        }
Esempio n. 5
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();
            var webResponseModel  = new WebResponseModel()
            {
                Payloay           = "",
                StatusCode        = 0,
                StatusDescription = "",
                Url = ""
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://blah-blah.dev.ssllabs.com/api/blah/", mockedApiProvider.Object);

            Response = ssllService.Info();
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay           = "{\"errors\":[{\"message\":\"Parameters \u0027fromCache\u0027 and \u0027startNew\u0027 cannot be used at the same time\"}]}",
                StatusCode        = 400,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost + "&startNew=on&fromCache=on&all=done")
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost, SSLLabsApiService.Publish.On, SSLLabsApiService.StartNew.On,
                                           SSLLabsApiService.FromCache.Ignore, null, SSLLabsApiService.All.Done, SSLLabsApiService.IgnoreMismatch.Off);
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            TestIP   = "111.111.111.111";
            var webResponseModel = new WebResponseModel()
            {
                Payloay           = "{\"errors\":[{\"message\":\"Endpoint not found\"}]}",
                StatusCode        = 400,
                StatusDescription = "Bad Request",
                Url = ("https://api.ssllabs.com/api/v2/getEndpointData?host=" + TestHost + "s=" + TestIP)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.GetEndpointData(TestHost, TestIP);
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTP\",\"isPublic\":false,\"status\":\"DNS\"" +
                          ",\"statusMessage\":\"Resolving domain names\",\"startTime\":1422475200798,\"engineVersion\":\"1.12.8\"," +
                          "\"criteriaVersion\":\"2009i\"}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost);
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www2.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www2.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTP\",\"isPublic\":false,\"status\":\"ERROR\"," +
                          "\"statusMessage\":\"Unable to resolve domain name\",\"startTime\":1422478797953,\"testTime\":1422478798017," +
                          "\"engineVersion\":\"1.12.8\",\"criteriaVersion\":\"2009i\",\"cacheExpiryTime\":1422478858017}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost, SSLLabsApiService.Publish.On, SSLLabsApiService.StartNew.On,
                                           SSLLabsApiService.FromCache.Ignore, null, SSLLabsApiService.All.Done, SSLLabsApiService.IgnoreMismatch.Off);
        }
Esempio n. 10
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();
            var webResponseModel  = new WebResponseModel()
            {
                Payloay = "{\"statusDetails\":{\"TESTING_PROTOCOL_INTOLERANCE_399\":\"Testing Protocol Intolerance (TLS 1.99)\",\"" +
                          "PREPARING_REPORT\":\"Preparing the report\",\"TESTING_SESSION_RESUMPTION\":\"Testing session resumption\",\"" +
                          "TESTING_NPN\":\"Testing NPN\",\"RETRIEVING_CERT_V3__NO_SNI\":\"Retrieving certificate\",\"RETRIEVING_CERT_V3__SNI_APEX\"" +
                          ":\"Retrieving certificate\",\"TESTING_CVE_2014_0224\":\"Testing CVE-2014-0224\",\"TESTING_CAPABILITIES\":\"" +
                          "Determining server capabilities\",\"TESTING_HEARTBLEED\":\"Testing Heartbleed\",\"TESTING_PROTO_3_3_V2H\":\"Testing TLS 1.1 (v2 handshake)\"" +
                          ",\"TESTING_SESSION_TICKETS\":\"Testing Session Ticket support\",\"VALIDATING_TRUST_PATHS\":\"Validating trust paths\",\"TESTING_RENEGOTIATION\"" +
                          ":\"Testing renegotiation\",\"TESTING_HTTPS\":\"Sending one complete HTTPS request\",\"TESTING_V2H_HANDSHAKE\":\"Testing v2 handshake\",\"" +
                          "TESTING_STRICT_RI\":\"Testing Strict Renegotiation\",\"TESTING_SUITES_DEPRECATED\":\"Testing deprecated cipher suites\",\"TESTING_HANDSHAKE_SIMULATION" +
                          "\":\"Simulating handshakes\",\"TESTING_STRICT_SNI\":\"Testing Strict SNI\",\"TESTING_PROTO_3_1_V2H\":\"Testing TLS 1.0 (v2 handshake)\",\"" +
                          "TESTING_PROTOCOL_INTOLERANCE_499\":\"Testing Protocol Intolerance (TLS 2.99)\",\"TESTING_TLS_VERSION_INTOLERANCE\":\"Testing TLS version intolerance" +
                          "\",\"TESTING_PROTOCOL_INTOLERANCE_304\":\"Testing Protocol Intolerance (TLS 1.3)\",\"TESTING_SUITES_BULK\":\"Bulk-testing less common cipher suites\",\"" +
                          "TESTING_BEAST\":\"Testing for BEAST\",\"TESTING_PROTO_2_0\":\"Testing SSL 2.0\",\"BUILDING_TRUST_PATHS\":\"Building trust paths\",\"TESTING_PROTO_3_1\":\"" +
                          "Testing TLS 1.0\",\"TESTING_PROTO_3_0_V2H\":\"Testing SSL 3.0 (v2 handshake)\",\"TESTING_PROTO_3_0\":\"Testing SSL 3.0\",\"TESTING_PROTOCOL_INTOLERANCE_300" +
                          "\":\"Testing Protocol Intolerance (SSL 3.0)\",\"TESTING_PROTOCOL_INTOLERANCE_301\":\"Testing Protocol Intolerance (TLS 1.0)\",\"TESTING_PROTOCOL_INTOLERANCE_302" +
                          "\":\"Testing Protocol Intolerance (TLS 1.1)\",\"TESTING_PROTOCOL_INTOLERANCE_303\":\"Testing Protocol Intolerance (TLS 1.2)\",\"TESTING_OCSP_STAPLING_PRIME\":" +
                          "\"Trying to prime OCSP stapling\",\"TESTING_EXTENSION_INTOLERANCE\":\"Testing Extension Intolerance (might take a while)\",\"TESTING_SSL2_SUITES\":\"" +
                          "Checking if SSL 2.0 has any ciphers enabled\",\"TESTING_OCSP_STAPLING\":\"Testing OCSP stapling\",\"TESTING_SUITES\":\"Determining available cipher suites\"," +
                          "\"TESTING_PROTO_3_2_V2H\":\"Testing TLS 1.1 (v2 handshake)\",\"TESTING_POODLE_TLS\":\"Testing POODLE against TLS\",\"RETRIEVING_CERT_V3__SNI_WWW\":\"" +
                          "Retrieving certificate\",\"CHECKING_REVOCATION\":\"Checking for revoked certificates\",\"TESTING_COMPRESSION\":\"Testing compression\",\"TESTING_SUITE_PREFERENCE" +
                          "\":\"Determining cipher suite preference\",\"TESTING_PROTO_3_2\":\"Testing TLS 1.1\",\"TESTING_PROTO_3_3\":\"Testing TLS 1.2\",\"TESTING_LONG_HANDSHAKE\":\"" +
                          "Testing Long Handshake (might take a while)\"}}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = "https://api.ssllabs.com/api/v2/info"
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.GetStatusCodes();
        }
Esempio n. 11
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTPS\",\"isPublic\":false,\"status\":\"READY\",\"" +
                          "startTime\":1422115006431,\"testTime\":1422115131804,\"engineVersion\":\"1.12.8\",\"criteriaVersion\":\"2009i\",\"" +
                          "endpoints\":[{\"ipAddress\":\"104.28.6.2\",\"statusMessage\":\"Ready\",\"grade\":\"A\",\"hasWarnings\":false,\"" +
                          "isExceptional\":false,\"progress\":100,\"duration\":64286,\"eta\":2393,\"delegation\":3},{\"ipAddress\":\"104.28.7.2\"" +
                          ",\"statusMessage\":\"Ready\",\"grade\":\"A\",\"hasWarnings\":false,\"isExceptional\":false,\"progress\":100,\"duration\"" +
                          ":61046,\"eta\":2393,\"delegation\":3}]}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost);
        }
Esempio n. 12
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTP\",\"isPublic\":true,\"" +
                          "status\":\"IN_PROGRESS\",\"startTime\":1422479488403,\"engineVersion\":\"1.12.8\",\"criteriaVersion\":\"2009i\"" +
                          ",\"endpoints\":[{\"ipAddress\":\"104.28.6.2\",\"statusMessage\":\"In progress\",\"statusDetails\":\"TESTING_HTTPS\"" +
                          ",\"statusDetailsMessage\":\"Sending one complete HTTPS request\",\"progress\":-1,\"eta\":-1,\"delegation\":3}," +
                          "{\"ipAddress\":\"104.28.7.2\",\"statusMessage\":\"Pending\",\"progress\":-1,\"eta\":-1,\"delegation\":3}]}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost + "&publish=on&all=done")
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost, SSLLabsApiService.Publish.On, SSLLabsApiService.StartNew.On,
                                           SSLLabsApiService.FromCache.Ignore, null, SSLLabsApiService.All.Done, SSLLabsApiService.IgnoreMismatch.Off);
        }
Esempio n. 13
0
        private static void Main()
        {
            const string apiUrl = "https://api.ssllabs.com/api/v2";

            Console.WriteLine("File path to file with sites.");
            var inputFileName = Console.ReadLine();

            Console.WriteLine("File path to output file.");
            var outputFileName = Console.ReadLine();

            const string delimiter     = ";";
            var          sslService    = new SSLLabsApiService(apiUrl);
            var          serviceStatus = sslService.Info();

            if (serviceStatus.Online && inputFileName != null)
            {
                if (File.Exists(inputFileName))
                {
                    var fileContent = File.ReadAllText(inputFileName, Encoding.UTF8);
                    var sites       = fileContent.Split(delimiter.First());

                    var output = new List <string[]>();
                    foreach (var site in sites)
                    {
                        Console.WriteLine($"Started analyzing {site}");
                        var analysisResult = sslService.AutomaticAnalyze(site);
                        var response       = new Response
                        {
                            SiteUrl = site,
                            Grade   = analysisResult.endpoints != null && analysisResult.endpoints.Any() ? analysisResult.endpoints.First().grade : "FAILED"
                        };

                        output.Add(new[] { response.SiteUrl, response.Grade });
                        Console.WriteLine($"Finished analyzing {response.SiteUrl} with grade: {response.Grade}");
                    }

                    if (outputFileName == null)
                    {
                        outputFileName = "output.csv";
                    }

                    if (File.Exists(outputFileName))
                    {
                        File.Delete(outputFileName);
                    }

                    Console.WriteLine("Generating CSV");
                    using (TextWriter writer = File.CreateText(outputFileName))
                    {
                        foreach (var result in output)
                        {
                            writer.WriteLine(string.Join(delimiter, result));
                        }
                    }
                    Console.WriteLine("CSV generated.");
                    Console.WriteLine("Press any key to exit.");
                    Console.ReadKey();
                }
                else
                {
                    Console.WriteLine("ERROR: Could not find sites.txt file.");
                    Console.WriteLine("Press any key to exit.");
                    Console.ReadKey();
                }
            }
            else
            {
                Console.WriteLine("ERROR: SSL Labs API is unreachable.");
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
            }
        }
Esempio n. 14
0
 public static void Setup(TestContext testContext)
 {
     _host        = ConfigurationManager.AppSettings.Get("EndpointHost");
     _ssllService = new SSLLabsApiService(ConfigurationManager.AppSettings.Get("ApiUrl"));
     _analyze     = _ssllService.AutomaticAnalyze(_host);
 }
Esempio n. 15
0
        public IActionResult GetSSLLabsReport(string id, [FromBody] SSLLabsRequestModel requestModel)
        {
            // check for null values
            if (requestModel == null && requestModel.Host == null)
            {
                return(BadRequest(new { Status = "Please enter a hostname or an ip address", Body = "" }));
            }

            var project = _projectsDbContext.Get(id);

            // Start the scan or get a already started scan.
            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v3");
            var analyze     = ssllService.Analyze(host: requestModel.Host, publish: Publish.Off, startNew: StartNew.Ignore,
                                                  fromCache: FromCache.Off, maxHours: 1, all: All.On, ignoreMismatch: IgnoreMismatch.Off);

            // Check every 8 seconds to see if the scan has completed.
            while (analyze.status != "READY" && analyze.status != null)
            {
                Thread.Sleep(8000);

                analyze = ssllService.Analyze(host: requestModel.Host, publish: Publish.Off, startNew: StartNew.Ignore,
                                              fromCache: FromCache.Off, maxHours: 1, all: All.On, ignoreMismatch: IgnoreMismatch.Off);
            }

            // If there are errors, return error status to notify the user.
            if (analyze.Errors.Any())
            {
                if (analyze.Errors.First().message.Contains("529"))
                {
                    return(StatusCode(529, new { Status = "Service Overloaded. Try again in a few minutes.", Body = "" }));
                }
                else if (analyze.Errors.First().message.Contains("503"))
                {
                    return(StatusCode(503, new { Status = "Service Unavailable. Try again in a few minutes.", Body = "" }));
                }
                else if (analyze.Errors.First().message.Contains("500"))
                {
                    return(StatusCode(500, new { Status = "Service Error", Body = "" }));
                }
                else if (analyze.Errors.First().message.Contains("429"))
                {
                    return(StatusCode(429, new { Status = "Too Many Requests. Try again in a few seconds.", Body = "" }));
                }
                else if (analyze.Errors.First().message.Contains("400"))
                {
                    return(StatusCode(400, new { Status = "Invalid Parameters", Body = "" }));
                }
                else if (analyze.Errors.First().message.Contains("preflight validation"))
                {
                    return(StatusCode(400, new { Status = "Incorrect format used. Use the format: 'http://www.example.com'", Body = "" }));
                }
                else if (analyze.Errors.First().message.Contains("System.Net.WebException"))
                {
                    return(StatusCode(500, new { Status = "No connection could be made. Try again in a few minutes.", Body = "" }));
                }
                else
                {
                    return(StatusCode(500, new { Status = "Something went wrong. Please try again", Body = "" }));
                }
            }

            // Save the api responsedata.
            project.SSLLabsDataTimeLastScan = DateTime.Now;
            project.SSLLabsData             = analyze.Wrapper.ApiRawResponse;
            _projectsDbContext.Put(id, project);

            // Return the raw response because the model in the wrapper is not up to date.
            return(Ok(analyze.Wrapper.ApiRawResponse));
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost    = "https://www.ashleypoole.co.uk";
            TestIP      = "104.28.6.2";
            TestAltName = "ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"ipAddress\":\"104.28.6.2\",\"statusMessage\":\"Ready\",\"grade\":\"A\",\"hasWarnings\":false,\"isExceptional\":false,\"progress\":100," +
                          "\"duration\":72382,\"eta\":2,\"delegation\":3,\"details\":{\"hostStartTime\":1422796942752,\"key\":{\"size\":  256,\"alg\":\"EC\",\"strength\"" +
                          ":3072},\"cert\":{\"subject\":  \"CN\u003dsni25535.cloudflaressl.com,OU\u003dPositiveSSL Multi-Domain,OU\u003dDomain Control Validated\",  \"commonNames\"" +
                          ":[\"sni25535.cloudflaressl.com\"],\"altNames\":[\"sni25535.cloudflaressl.com\",\"*.ashleypoole.co.uk\",\"ashleypoole.co.uk\"],\"notBefore\":1412294400000,\"" +
                          "notAfter\":1443657599000, \"issuerSubject\": \"CN\u003dCOMODO ECC Domain Validation Secure Server CA 2,O\u003dCOMODO CA Limited,L\u003dSalford,ST\u003d" +
                          "Greater Manchester,C\u003dGB\",\"sigAlg\":\"SHA256withECDSA\",\"issuerLabel\":\"COMODO ECC Domain Validation Secure Server CA 2\",\"revocationInfo\":3,\"" +
                          "crlURIs\":[\"http://crl.comodoca4.com/COMODOECCDomainValidationSecureServerCA2.crl\"],\"ocspURIs\":[\"http://ocsp.comodoca4.com\"],\"revocationStatus\":2," +
                          "\"sgc\": 0,\"validationType\":\"D\",\"issues\":0},\"chain\":{\"certs\":[{\"subject\":\"CN\u003dsni25535.cloudflaressl.com,OU\u003dPositiveSSL Multi-Domain,OU\u003dDomain Control Validated\"," +
                          "\"label\":\"sni25535.cloudflaressl.com\",\"issuerSubject\":\"CN\u003dCOMODO ECC Domain Validation Secure Server CA 2,O\u003dCOMODO CA Limited,L\u003dSalford," +
                          "ST\u003dGreater Manchester,C\u003dGB\",\"issuerLabel\":\"COMODO ECC Domain Validation Secure Server CA 2\",\"raw\":\"-----BEGIN CERTIFICATE-----\n" +
                          "MIIGvjCCBmWgAwIBAgIRALF5GuZKQORJW1QMc46ynb0wCgYIKoZIzj0EAwIwgZIxCzAJBgNVBAYT\r\nAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNV\r" +
                          "\nBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTgwNgYDVQQDEy9DT01PRE8gRUNDIERvbWFpbiBWYWxpZGF0\r\naW9uIFNlY3VyZSBTZXJ2ZXIgQ0EgMjAeFw0xNDEwMDMwMDAwMDBaFw0xNTA5MzAyMzU5NTlaMGsx\r\n" +
                          "ITAfBgNVBAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRlZDEhMB8GA1UECxMYUG9zaXRpdmVTU0wg\r\nTXVsdGktRG9tYWluMSMwIQYDVQQDExpzbmkyNTUzNS5jbG91ZGZsYXJlc3NsLmNvbTBZMBMGByqG\r\n" +
                          "SM49AgEGCCqGSM49AwEHA0IABORKHcGfCBQWiWrulPF3cKWXMbma/cST468asBpJ5gakOx1CqIbA\r\nTaqVsoGbMYdOVLe53eNsID9MI3RqxRobozOjggTAMIIEvDAfBgNVHSMEGDAWgBRACWFn8LyDcU/e\r\n" +
                          "Eggsb9TUK3Y9ljAdBgNVHQ4EFgQUY3rb5UBQMdvLQvjzLEROu0aOvyUwDgYDVR0PAQH/BAQDAgeA\r\nMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYw\r\n" +
                          "OgYLKwYBBAGyMQECAgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9D\r\nUFMwCAYGZ4EMAQIBMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwuY29tb2RvY2E0LmNvbS9D\r\n" +
                          "T01PRE9FQ0NEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EyLmNybDCBiAYIKwYBBQUHAQEE\r\nfDB6MFEGCCsGAQUFBzAChkVodHRwOi8vY3J0LmNvbW9kb2NhNC5jb20vQ09NT0RPRUNDRG9tYWlu\r\n" +
                          "VmFsaWRhdGlvblNlY3VyZVNlcnZlckNBMi5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLmNv\r\nbW9kb2NhNC5jb20wggMHBgNVHREEggL+MIIC+oIac25pMjU1MzUuY2xvdWRmbGFyZXNzbC5jb22C\r\n" +
                          "EyouYXNobGV5cG9vbGUuY28udWuCIiouYXNzZXRkZXZlbG9wZXJzaW50ZXJuYXRpb25hbC5jb22C\r\nEyouYmxvZ2VzY2VwdGljby5jb22CECouYm93bG1hbnByaXYudGuCESouY2FzYW5lcm8uY29tLmJy\r\n" +
                          "ghAqLmNoZXptaXMuY29tLmJygggqLmRuei5iZYIWKi5lc3BvcnRzdW5saW1pdGVkLmNvbYIPKi5o\r\nZHRyYWlsZXJzLnJvghAqLmhnbWFuaWEuY29tLmJyghcqLmhvdGVsYWxhbW9zcG9zYWRhLmNvbYIX\r\n" +
                          "Ki5rYXJuYWtwcm9idWlsZGVycy5jb22CEioubG91YmVlemFydC5jby51a4IOKi5tZWdvYWZlay5j\r\nb22CESoubXlkcnVnY29zdHMuY29tghgqLm5lcmRjdWJlZHNlcnZlcnMuY28udWuCEioucG9saXRj\r\n" +
                          "YXN0LXVyaS5jaIISKi53aGl0bWFubG9kZ2Uub3JnggsqLnd5bHN0LmNvbYIRYXNobGV5cG9vbGUu\r\nY28udWuCIGFzc2V0ZGV2ZWxvcGVyc2ludGVybmF0aW9uYWwuY29tghFibG9nZXNjZXB0aWNvLmNv\r\n" +
                          "bYIOYm93bG1hbnByaXYudGuCD2Nhc2FuZXJvLmNvbS5icoIOY2hlem1pcy5jb20uYnKCBmRuei5i\r\nZYIUZXNwb3J0c3VubGltaXRlZC5jb22CDWhkdHJhaWxlcnMucm+CDmhnbWFuaWEuY29tLmJyghVo\r\n" +
                          "b3RlbGFsYW1vc3Bvc2FkYS5jb22CFWthcm5ha3Byb2J1aWxkZXJzLmNvbYIQbG91YmVlemFydC5j\r\nby51a4IMbWVnb2FmZWsuY29tgg9teWRydWdjb3N0cy5jb22CFm5lcmRjdWJlZHNlcnZlcnMuY28u\r\n" +
                          "dWuCEHBvbGl0Y2FzdC11cmkuY2iCEHdoaXRtYW5sb2RnZS5vcmeCCXd5bHN0LmNvbTAKBggqhkjO\r\nPQQDAgNHADBEAiBvjsgIaYlNMYg2ZkQ+i4zvWb5emdogr7Of5YoPbnAZigIgG9TjdWNBqfGL4Q6O\r\n" +
                          "FYr4C7e/1G6x/0Fz+LdWk3pbD3s\u003d\r\n-----END CERTIFICATE-----\n\"},    {\"subject\":\"CN\u003dCOMODO ECC Domain Validation Secure Server CA 2,O\u003d" +
                          "COMODO CA Limited,L\u003dSalford,ST\u003dGreater Manchester,C\u003dGB\",\"label\":\"COMODO ECC Domain Validation Secure Server CA 2\",\"issuerSubject\":\"" +
                          "CN\u003dCOMODO ECC Certification Authority,O\u003dCOMODO CA Limited,L\u003dSalford,ST\u003dGreater Manchester,C\u003dGB\",\"issuerLabel\":\"COMODO ECC Certification Authority\"" +
                          ",\"raw\":\"-----BEGIN CERTIFICATE-----\nMIIDnzCCAyWgAwIBAgIQWyXOaQfEJlVm0zkMmalUrTAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC\r\n" +
                          "R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE\r\nChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB\r\n" +
                          "dXRob3JpdHkwHhcNMTQwOTI1MDAwMDAwWhcNMjkwOTI0MjM1OTU5WjCBkjELMAkGA1UEBhMCR0Ix\r\nGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR\r\n" +
                          "Q09NT0RPIENBIExpbWl0ZWQxODA2BgNVBAMTL0NPTU9ETyBFQ0MgRG9tYWluIFZhbGlkYXRpb24g\r\nU2VjdXJlIFNlcnZlciBDQSAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAjgZgTrJaYRwWQKO\r\n" +
                          "qIofMN+83gP8eR06JSxrQSEYgur5PkrkM8wSzypD/A7yZADA4SVQgiTNtkk4DyVHkUikraOCAWYw\r\nggFiMB8GA1UdIwQYMBaAFHVxpxlIGbydnepBR9+UxEh3mdN5MB0GA1UdDgQWBBRACWFn8LyDcU/e\r\n" +
                          "Eggsb9TUK3Y9ljAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAU\r\nBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgGBmeBDAECATBMBgNVHR8E\r\n" +
                          "RTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9FQ0NDZXJ0aWZpY2F0aW9u\r\nQXV0aG9yaXR5LmNybDByBggrBgEFBQcBAQRmMGQwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29t\r\n" +
                          "b2RvY2EuY29tL0NPTU9ET0VDQ0FkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2Nz\r\ncC5jb21vZG9jYTQuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCsaEclgBNPE1bAojcJl1pQxOfttGHL\r\n" +
                          "KIoKETKm4nHfEQGJbwd6IGZrGNC5LkP3Um8CMBKFfI4TZpIEuppFCZRKMGHRSdxv6+ctyYnPHmp8\r\n7IXOMCVZuoFwNLg0f+cB0eLLUg\u003d\u003d\r\n-----END CERTIFICATE-----\n\"}," +
                          "{\"subject\":\"CN\u003dCOMODO ECC Certification Authority,O\u003dCOMODO CA Limited,L\u003dSalford,ST\u003dGreater Manchester,C\u003dGB\",\"label\":" +
                          "\"COMODO ECC Certification Authority\",\"issuerSubject\":\"CN\u003dAddTrust External CA Root,OU\u003dAddTrust External TTP Network,O\u003dAddTrust AB,C\u003dSE\"," +
                          "\"issuerLabel\":\"AddTrust External CA Root\",\"raw\":\"-----BEGIN CERTIFICATE-----\nMIID0DCCArigAwIBAgIQQ1ICP/qokB8Tn+P05cFETjANBgkqhkiG9w0BAQwFADBvMQswCQYDVQQG\r\n" +
                          "EwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRU\r\nUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEw\r\n" +
                          "NDgzOFoXDTIwMDUzMDEwNDgzOFowgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1h\r\nbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSsw\r\n" +
                          "KQYDVQQDEyJDT01PRE8gRUNDIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MHYwEAYHKoZIzj0CAQYF\r\nK4EEACIDYgAEA0d7L3XJghWF+3XkkRbUq2KZ9T5SCwbOQQB/l+EKJDwdAQTuPdKNCZcM4HXk+vt3\r\n" +
                          "iir1A2BLNosWIxatCXH0SvQoULT+iBxuP2wvLwlZW6VbCzOZ4sM9iflqLO+y0wbpo4H+MIH7MB8G\r\nA1UdIwQYMBaAFK29mHo0tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRI\r\n" +
                          "d5nTeTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNVHSAECjAIMAYGBFUdIAAw\r\nSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC50cnVzdC1wcm92aWRlci5jb20vQWRkVHJ1c3RF\r\n" +
                          "eHRlcm5hbENBUm9vdC5jcmwwOgYIKwYBBQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2Nz\r\ncC50cnVzdC1wcm92aWRlci5jb20wDQYJKoZIhvcNAQEMBQADggEBAB3H+i5AtlwFSw+8VTYBWOBT\r\n" +
                          "BT1k+6zZpTi4pyE7r5VbvkjI00PUIWxB7QktnHMAcZyuIXN+/46NuY5YkI78jG12yAA6nyCmLX3M\r\nF/3NmJYyCRrJZfwE67SaCnjllztSjxLCdJcBns/hbWjYk7mcJPuWJ0gBnOqUP3CYQbNzUTcp6PYB\r\n" +
                          "erknuCRR2RFo1KaFpzanpZa6gPim/a5thCCuNXZzQg+HCezF3OeTAyIal+6ailFhp5cmHunudVEI\r\nkAWvL54TnJM/ev/m6+loeYyv4Lb67psSE/5FjNJ80zXrIRKT/mZ1JioVhCb3ZsnLjbsJQdQYr7Gz\r\n" +
                          "EPUQyp2aDrV1aug\u003d\r\n-----END CERTIFICATE-----\n\"}],\"issues\":0},\"protocols\":[{\"id\":769,\"name\":\"TLS\",\"version\":\"1.0\"},{\"id\":770,\"name\":\"TLS\"" +
                          ",\"version\":\"1.1\"},{\"id\":771,\"name\":\"TLS\",\"version\":    \"1.2\"}],\"suites\":{\"list\":[{\"id\":49195,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\"" +
                          ",\"cipherStrength\":128,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49187,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\"cipherStrength\":128," +
                          "\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49161,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\"cipherStrength\":128,\"ecdhBits\":256,\"ecdhStrength\":3072}" +
                          ",{\"id\":49196,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\"cipherStrength\":256,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49188,\"name\":\"" +
                          "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\",\"cipherStrength\":256,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49162,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\"" +
                          ",\"cipherStrength\":256,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49160,\"name\":\"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\",\"cipherStrength\":168,\"ecdhBits\":256," +
                          "\"ecdhStrength\":3072}],\"preference\":true},\"serverSignature\":\"cloudflare-nginx\",\"prefixDelegation\":true,\"nonPrefixDelegation\":true,\"vulnBeast\":true,\"" +
                          "renegSupport\":2,\"sessionResumption\":1,\"compressionMethods\":0,\"supportsNpn\":true,\"npnProtocols\":\"spdy/3.1 http/1.1\",\"sessionTickets\":1,\"ocspStapling\":true" +
                          ",\"sniRequired\":true,\"httpStatusCode\":301,\"httpForwarding\":\"http://www.ashleypoole.co.uk\",\"supportsRc4\":false,\"forwardSecrecy\":2,\"rc4WithModern\":false,\"" +
                          "sims\":{\"results\":[{\"client\":{\"id\":56,\"name\":\"Android\",\"version\":\"2.3.7\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":47}" +
                          ",{\"client\":{\"id\":58,\"name\":\"Android\",\"version\":\"4.0.4\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":59,\"name\":\"Android\",\"version\":\"4.1.1\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":60,\"name\":\"Android\",\"version\":\"4.2.2\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":61,\"name\":\"Android\",\"version\":\"4.3\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":62,\"name\":\"Android\",\"version\":\"4.4.2\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":88,\"name\":\"Android\",\"version\":\"5.0.0\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":94,\"name\":\"Baidu\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":91,\"name\":\"BingPreview\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":89,\"name\":\"Chrome\",\"platform\":\"OS X\",\"version\":\"40\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":84,\"name\":\"Firefox\",\"platform\":\"Win 7\",\"version\":\"31.3.0 ESR\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"" +
                          "suiteId\":49195},{\"client\":{\"id\":90,\"name\":\"Firefox\",\"platform\":\"OS X\",\"version\":\"35\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771" +
                          ",\"suiteId\":49195},{\"client\":{\"id\":72,\"name\":\"Googlebot\",\"version\":\"Jun 2014\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"" +
                          "suiteId\":49161},{\"client\":{\"id\":18,\"name\":\"IE\",\"platform\":\"XP\",\"version\":\"6\",\"isReference\":false},\"errorCode\":1,\"attempts\":1},{\"client\":" +
                          "{\"id\":19,\"name\":\"IE\",\"platform\":\"Vista\",\"version\":\"7\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":20,\"name\":\"IE\",\"platform\":\"XP\",\"version\":\"8\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":10}," +
                          "{\"client\":{\"id\":23,\"name\":\"IE\",\"platform\":\"Win 7\",\"version\":\"8-10\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}" +
                          ",{\"client\":{\"id\":95,\"name\":\"IE\",\"platform\":\"Win 7\",\"version\":\"11\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}" +
                          ",{\"client\":{\"id\":96,\"name\":\"IE\",\"platform\":\"Win 8.1\",\"version\":\"11\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}" +
                          ",{\"client\":{\"id\":64,\"name\":\"IE Mobile\",\"platform\":\"Win Phone 8.0\",\"version\":\"10\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"" +
                          "suiteId\":49161},{\"client\":{\"id\":65,\"name\":\"IE Mobile\",\"platform\":\"Win Phone 8.1\",\"version\":\"11\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"" +
                          "protocolId\":771,\"suiteId\":49195},{\"client\":{\"id\":25,\"name\":\"Java\",\"version\":\"6u45\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"" +
                          "suiteId\":47},{\"client\":{\"id\":26,\"name\":\"Java\",\"version\":\"7u25\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":86,\"name\":\"Java\",\"version\":\"8u31\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195},{\"client\":" +
                          "{\"id\":27,\"name\":\"OpenSSL\",\"version\":\"0.9.8y\",\"isReference\":false},\"errorCode\":1,\"attempts\":1},{\"client\":{\"id\":28,\"name\":\"OpenSSL\",\"version\":\"1.0.1h\"" +
                          ",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195},{\"client\":{\"id\":32,\"name\":\"Safari\",\"platform\":\"OS X 10.6.8\",\"" +
                          "version\":\"5.1.9\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161},{\"client\":{\"id\":33,\"name\":\"Safari\",\"platform\":" +
                          "\"iOS 6.0.1\",\"version\":\"6\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187},{\"client\":{\"id\":63,\"name\":\"Safari\",\"" +
                          "platform\":\"iOS 7.1\",\"version\":\"7\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187},{\"client\":{\"id\":85,\"name\":\"" +
                          "Safari\",\"platform\":\"iOS 8.1.2\",\"version\":\"8\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187},{\"client\":{\"id\":34," +
                          "\"name\":\"Safari\",\"platform\":\"OS X 10.8.4\",\"version\":\"6.0.4\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161},{\"client" +
                          "\":{\"id\":35,\"name\":\"Safari\",\"platform\":\"OS X 10.9\",\"version\":\"7\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187}," +
                          "{\"client\":{\"id\":87,\"name\":\"Safari\",\"platform\":\"OS X 10.10\",\"version\":\"8\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"" +
                          "suiteId\":49187},{\"client\":{\"id\":92,\"name\":\"Yahoo Slurp\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId" +
                          "\":49195},{\"client\":{\"id\":93,\"name\":\"YandexBot\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}]}" +
                          ",\"heartbleed\":false,\"heartbeat\":false,\"openSslCcs\":1,\"poodleTls\":1}}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/getEndpoint?host=" + TestHost + "%s=" + TestIP)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.GetEndpointData(TestHost, TestIP);
        }
Esempio n. 17
0
        public static void Setup(TestContext testContext)
        {
            var ssllService = new SSLLabsApiService(ConfigurationManager.AppSettings.Get("ApiUrl"));

            _info = ssllService.Info();
        }