public async Task Run(List <string> hosts)
        {
            foreach (string host in hosts)
            {
                _log.Debug($"Testing TLS for {host}");
                List <TlsTestResult> testlResults = await _tlsSecurityTester.Test(host);

                foreach (var testlResult in testlResults)
                {
                    _log.Debug($"{testlResult.Test.Id} : {testlResult.Test.Name},");
                    _log.Debug($"\t{testlResult.Result}");
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <MxRecordTlsSecurityProfile> Test(MxRecordTlsSecurityProfile mxRecordTlsSecurityProfile)
        {
            List <Console.TlsTestResult> results      = new List <Console.TlsTestResult>();
            List <X509Certificate2>      certificates = null;

            if (!string.IsNullOrWhiteSpace(mxRecordTlsSecurityProfile.MxRecord.Hostname))
            {
                results = await _tlsSecurityTester.Test(mxRecordTlsSecurityProfile.MxRecord.Hostname);

                certificates = results.FirstOrDefault(_ => _.Result.Certificates.Any())?
                               .Result.Certificates.ToList() ?? new List <X509Certificate2>();
            }

            return(new MxRecordTlsSecurityProfile(mxRecordTlsSecurityProfile.MxRecord,
                                                  new TlsSecurityProfile(
                                                      mxRecordTlsSecurityProfile.TlsSecurityProfile.Id,
                                                      null,
                                                      new TlsTestResults(
                                                          IsErrored(results)
                            ? mxRecordTlsSecurityProfile.TlsSecurityProfile.TlsResults.FailureCount + 1
                            : 0, new TlsTestResultsWithoutCertificate(
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Tls12AvailableWithBestCipherSuiteSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id ==
                                                                                                  (int)TlsTestType.Tls12AvailableWithBestCipherSuiteSelectedFromReverseList)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Tls12AvailableWithSha2HashFunctionSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Tls12AvailableWithWeakCipherSuiteNotSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Tls11AvailableWithBestCipherSuiteSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Tls11AvailableWithWeakCipherSuiteNotSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Tls10AvailableWithBestCipherSuiteSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Tls10AvailableWithWeakCipherSuiteNotSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.Ssl3FailsWithBadCipherSuite)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.TlsSecureEllipticCurveSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.TlsSecureDiffieHellmanGroupSelected)),
                                                              ToTestResult(results.FirstOrDefault(_ =>
                                                                                                  _.Test.Id == (int)TlsTestType.TlsWeakCipherSuitesRejected))),
                                                          certificates))));
        }
Ejemplo n.º 3
0
        public async Task <TlsTestResults> Test(TlsTestPending tlsTest)
        {
            List <TlsTestResult> results = new List <TlsTestResult>();

            List <X509Certificate2> certificates = new List <X509Certificate2>();

            if (!string.IsNullOrWhiteSpace(tlsTest.Id) && tlsTest.Id.Trim() != ".")
            {
                results = await _tlsSecurityTester.Test(tlsTest.Id);

                certificates = results.FirstOrDefault(_ => _.Result.Certificates.Any())?
                               .Result.Certificates.ToList() ?? new List <X509Certificate2>();
            }

            BouncyCastleTlsTestResult tls12AvailableWithBestCipherSuiteSelected = ToTestResult(
                results.FirstOrDefault(_ => _.Test.Id == (int)TlsTestType.Tls12AvailableWithBestCipherSuiteSelected));

            BouncyCastleTlsTestResult tls12AvailableWithBestCipherSuiteSelectedFromReverseList = ToTestResult(
                results.FirstOrDefault(_ =>
                                       _.Test.Id ==
                                       (int)TlsTestType.Tls12AvailableWithBestCipherSuiteSelectedFromReverseList));

            BouncyCastleTlsTestResult tls12AvailableWithSha2HashFunctionSelected = ToTestResult(results.FirstOrDefault(
                                                                                                    _ =>
                                                                                                    _.Test.Id == (int)TlsTestType.Tls12AvailableWithSha2HashFunctionSelected));

            BouncyCastleTlsTestResult tls12AvailableWithWeakCipherSuiteNotSelected = ToTestResult(
                results.FirstOrDefault(_ =>
                                       _.Test.Id == (int)TlsTestType.Tls12AvailableWithWeakCipherSuiteNotSelected));

            BouncyCastleTlsTestResult tls11AvailableWithBestCipherSuiteSelected = ToTestResult(results.FirstOrDefault(
                                                                                                   _ =>
                                                                                                   _.Test.Id == (int)TlsTestType.Tls11AvailableWithBestCipherSuiteSelected));

            BouncyCastleTlsTestResult tls11AvailableWithWeakCipherSuiteNotSelected = ToTestResult(
                results.FirstOrDefault(_ =>
                                       _.Test.Id == (int)TlsTestType.Tls11AvailableWithWeakCipherSuiteNotSelected));

            BouncyCastleTlsTestResult tls10AvailableWithBestCipherSuiteSelected = ToTestResult(results.FirstOrDefault(
                                                                                                   _ =>
                                                                                                   _.Test.Id == (int)TlsTestType.Tls10AvailableWithBestCipherSuiteSelected));

            BouncyCastleTlsTestResult tls10AvailableWithWeakCipherSuiteNotSelected = ToTestResult(
                results.FirstOrDefault(_ =>
                                       _.Test.Id == (int)TlsTestType.Tls10AvailableWithWeakCipherSuiteNotSelected));

            BouncyCastleTlsTestResult ssl3FailsWithBadCipherSuite = ToTestResult(results.FirstOrDefault(_ =>
                                                                                                        _.Test.Id == (int)TlsTestType.Ssl3FailsWithBadCipherSuite));

            BouncyCastleTlsTestResult tlsSecureEllipticCurveSelected = ToTestResult(results.FirstOrDefault(_ =>
                                                                                                           _.Test.Id == (int)TlsTestType.TlsSecureEllipticCurveSelected));

            BouncyCastleTlsTestResult tlsSecureDiffieHellmanGroupSelected = ToTestResult(results.FirstOrDefault(_ =>
                                                                                                                _.Test.Id == (int)TlsTestType.TlsSecureDiffieHellmanGroupSelected));

            BouncyCastleTlsTestResult tlsWeakCipherSuitesRejected = ToTestResult(results.FirstOrDefault(_ =>
                                                                                                        _.Test.Id == (int)TlsTestType.TlsWeakCipherSuitesRejected));


            return
                (new TlsTestResults(tlsTest.Id,
                                    IsErrored(results),
                                    CheckHostNotFound(results),
                                    tls12AvailableWithBestCipherSuiteSelected,
                                    tls12AvailableWithBestCipherSuiteSelectedFromReverseList,
                                    tls12AvailableWithSha2HashFunctionSelected,
                                    tls12AvailableWithWeakCipherSuiteNotSelected,
                                    tls11AvailableWithBestCipherSuiteSelected,
                                    tls11AvailableWithWeakCipherSuiteNotSelected,
                                    tls10AvailableWithBestCipherSuiteSelected,
                                    tls10AvailableWithWeakCipherSuiteNotSelected,
                                    ssl3FailsWithBadCipherSuite,
                                    tlsSecureEllipticCurveSelected,
                                    tlsSecureDiffieHellmanGroupSelected,
                                    tlsWeakCipherSuitesRejected,
                                    certificates.Select(_ => Convert.ToBase64String(_.RawData)).ToList(),
                                    new List <SelectedCipherSuite>
            {
                new SelectedCipherSuite(TlsTestType.Tls12AvailableWithBestCipherSuiteSelected.ToString(),
                                        tls12AvailableWithBestCipherSuiteSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(
                    TlsTestType.Tls12AvailableWithBestCipherSuiteSelectedFromReverseList.ToString(),
                    tls12AvailableWithBestCipherSuiteSelectedFromReverseList?.CipherSuite
                    ?.ToString()),
                new SelectedCipherSuite(TlsTestType.Tls12AvailableWithSha2HashFunctionSelected.ToString(),
                                        tls12AvailableWithSha2HashFunctionSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.Tls12AvailableWithWeakCipherSuiteNotSelected.ToString(),
                                        tls12AvailableWithWeakCipherSuiteNotSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.Tls11AvailableWithBestCipherSuiteSelected.ToString(),
                                        tls11AvailableWithBestCipherSuiteSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.Tls11AvailableWithWeakCipherSuiteNotSelected.ToString(),
                                        tls11AvailableWithWeakCipherSuiteNotSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.Tls10AvailableWithBestCipherSuiteSelected.ToString(),
                                        tls10AvailableWithBestCipherSuiteSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.Tls10AvailableWithWeakCipherSuiteNotSelected.ToString(),
                                        tls10AvailableWithWeakCipherSuiteNotSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.Ssl3FailsWithBadCipherSuite.ToString(),
                                        ssl3FailsWithBadCipherSuite?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.TlsSecureEllipticCurveSelected.ToString(),
                                        tlsSecureEllipticCurveSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.TlsSecureDiffieHellmanGroupSelected.ToString(),
                                        tlsSecureDiffieHellmanGroupSelected?.CipherSuite?.ToString()),
                new SelectedCipherSuite(TlsTestType.TlsWeakCipherSuitesRejected.ToString(),
                                        tlsWeakCipherSuitesRejected?.CipherSuite?.ToString())
            }
                                    ));
        }