В настоящее время я пишу служебное приложение, которое будет подключаться к заданному IP-адресу и порту и проверять информацию в сертификате SSL с помощью HttpWebRequest. Когда я пытаюсь извлечь сертификат, я получаю сообщение об ошибке, связанное с возникновением исключения. Исключением, по-видимому, является то, что процесс копирования сертификата SSL запускает еще одну проверку.
Вот код, и, возможно, кто-то может показать мне лучший способ сделать это или я что-то упускаю. Меня не волнует, истек ли срок действия SSL-сертификата или он не соответствует URL-адресу. Ничто из этого не имеет отношения к тому, что я делаю.
Когда я назначаю X509Certificate в делегате новой переменной и смотрю на переменную в отладчике, все свойства показывают, что SSLCert.Issuer выдал исключение типа «System.Security.Cryptography.CyrptographicException»
Когда я пытаюсь получить доступ к свойству SSLCert, Я получаю следующее исключение: m_safeCertContext — недопустимый дескриптор
Меня ищут это исключение, но все указывает на недействительный сертификат, что может быть правдой, если срок действия сертификата истек, и может быть правдой для комбинации IP и порта, к которой я подключаюсь. Но поскольку я подключаюсь к IP-адресу, используя IP-адрес, а не что-либо, что соответствует общему имени, я ожидаю этого, и меня это не волнует, поскольку мне все еще нужна информация.
Код приведен ниже, я также добавил несколько комментариев о том, что не работает, а что работает.
// To get around the SSL validation in the HttpWebRequest
System.Net.ServicePointManager.ServerCertificateValidationCallback =
delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
// The below works but isn't what I want. CertName and ExpireDate are both Strings
this.CertName = ProcessSubject(certificate.Subject);
this.ExpireDate = certificate.GetExpirationDateString();
// The below works but the X509Certificate SSLCert shows exceptions in the debugger for most of the properties.
this.SSLCert = certificate;
return true; // **** Always accept
};
HttpWebRequest myRequest = (HttpWebRequest)System.Net.WebRequest.Create("https://" + this.IP + ":" + this.Port + "/SSLCheck.html");
myRequest.KeepAlive = false;
myRequest.Method = "GET";
try
{
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
}
catch (Exception e)
{
if (e.Message != "The remote server returned an error: (404) Not Found.")
{
throw Exception("Error");
}
}
// THE BELOW FAILS
this.CertName = this.SSLCert.Subject;
Подробнее здесь: https://stackoverflow.com/questions/527 ... quest-in-c
Как использовать сертификаты SSL с HttpWebRequest в C#? ⇐ C#
Место общения программистов C#
-
Anonymous
1770973493
Anonymous
В настоящее время я пишу служебное приложение, которое будет подключаться к заданному IP-адресу и порту и проверять информацию в сертификате SSL с помощью HttpWebRequest. Когда я пытаюсь извлечь сертификат, я получаю сообщение об ошибке, связанное с возникновением исключения. Исключением, по-видимому, является то, что процесс копирования сертификата SSL запускает еще одну проверку.
Вот код, и, возможно, кто-то может показать мне лучший способ сделать это или я что-то упускаю. Меня не волнует, истек ли срок действия SSL-сертификата или он не соответствует URL-адресу. Ничто из этого не имеет отношения к тому, что я делаю.
Когда я назначаю X509Certificate в делегате новой переменной и смотрю на переменную в отладчике, все свойства показывают, что [b]SSLCert.Issuer выдал исключение типа «System.Security.Cryptography.CyrptographicException»[/b]
Когда я пытаюсь получить доступ к свойству SSLCert, Я получаю следующее исключение: [b]m_safeCertContext — недопустимый дескриптор[/b]
Меня ищут это исключение, но все указывает на недействительный сертификат, что может быть правдой, если срок действия сертификата истек, и может быть правдой для комбинации IP и порта, к которой я подключаюсь. Но поскольку я подключаюсь к IP-адресу, используя IP-адрес, а не что-либо, что соответствует общему имени, я ожидаю этого, и меня это не волнует, поскольку мне все еще нужна информация.
Код приведен ниже, я также добавил несколько комментариев о том, что не работает, а что работает.
// To get around the SSL validation in the HttpWebRequest
System.Net.ServicePointManager.ServerCertificateValidationCallback =
delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
// The below works but isn't what I want. CertName and ExpireDate are both Strings
this.CertName = ProcessSubject(certificate.Subject);
this.ExpireDate = certificate.GetExpirationDateString();
// The below works but the X509Certificate SSLCert shows exceptions in the debugger for most of the properties.
this.SSLCert = certificate;
return true; // **** Always accept
};
HttpWebRequest myRequest = (HttpWebRequest)System.Net.WebRequest.Create("https://" + this.IP + ":" + this.Port + "/SSLCheck.html");
myRequest.KeepAlive = false;
myRequest.Method = "GET";
try
{
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
}
catch (Exception e)
{
if (e.Message != "The remote server returned an error: (404) Not Found.")
{
throw Exception("Error");
}
}
// THE BELOW FAILS
this.CertName = this.SSLCert.Subject;
Подробнее здесь: [url]https://stackoverflow.com/questions/5275283/how-do-i-use-ssl-certificates-with-httpwebrequest-in-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия