Как получить (GET) данные из самоподписанной веб-страницы HTTPS, когда у меня есть открытый ключ, закрытый ключ и файл ca? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь получить некоторые данные с веб-сайта https, и у меня есть учетные данные (как открытый, так и закрытый ключ), а также CA для того же.Как я могу это сделать?

Я пытался сделать это, но безуспешно

private string RetrieveSoftwareDataMsgFromURL() {
            var cacert = File.ReadAllText(@"Certs\ca.crt");
            var clientcert = File.ReadAllText(@"Certs\client.crt");
            var clientkey = File.ReadAllText(@"Certs\client.key");

            ServicePointManager.Expect100Continue = true;
            ServicePointManager.DefaultConnectionLimit = 9999;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 |SecurityProtocolType.Tls |SecurityProtocolType.Tls11 |SecurityProtocolType.Tls12;
            ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };

            ICertificateProvider provider = new CertificateFromFileProvider(clientcert, clientkey);
            X509Certificate2 clientCertificate = provider.Certificate;

            string url = "https://SomeWebsite.com/changelog";

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            httpWebRequest.Method = "GET";
            httpWebRequest.AuthenticationLevel = AuthenticationLevel.MutualAuthRequired;
            httpWebRequest.ClientCertificates.Add(clientCertificate);
            httpWebRequest.Credentials = CredentialCache.DefaultCredentials;

            string result = "Nothing's In There";
            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
                result = streamReader.ReadLine();
            }

            return result;
        }

В итоге я выбрал это исключение "System.Net.WebException: 'Запрос был прерван: Возможноне создавать безопасный канал SSL / TLS. '».

...