powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как получить объект X509Certificate2 из webResponse
6 сообщений из 6, страница 1 из 1
Как получить объект X509Certificate2 из webResponse
    #38128530
AlexZgur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Прошу помощи, никак не могу найти информацию. Задача - отправить POST запрос на сервер и получить из ответа сертификат пользователя.

Пробую делать так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
                        WebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://xxx/ui/Register/RegViewFoundCert.asp");
                        webRequest.Method = "POST";
                        webRequest.ContentType = "application/x-www-form-urlencoded";
                        webRequest.ContentType = "application/x-x509-ca-cert";
                        webRequest.ContentType="application/pkix-cert";
                        webRequest.Headers.Add("Content-Disposition","Attachment;FileName=cert.cer");

                        System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();

                        byte[] ByteArr = System.Text.UTF8Encoding.UTF8.GetBytes("TokenID=XXX&Password=XXX&CertID=" + cert_id);

                        webRequest.ContentLength = ByteArr.Length;
                        webRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
                        webRequest.GetRequestStream().Close();

                        HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
                        WebHeaderCollection temp = webResponse.Headers;
                        String str = temp.ToString();
                        Int64 fileSize = webResponse.ContentLength;

                        Stream strResponse = webResponse.GetResponseStream();

                        byte[] _buffer = new byte[fileSize];
                        strResponse.Read(_buffer, 0, _buffer.Length);

                        X509Certificate2 serverCert = new X509Certificate2(_buffer);



вываливается в исключение "Требуемый объект не найден" на операции X509Certificate2 serverCert = new X509Certificate2(_buffer);

рад любой помощи!
спасибо!
...
Рейтинг: 0 / 0
Как получить объект X509Certificate2 из webResponse
    #38128617
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexZgur

странную вещь вы говорите. Вы клиент, отправляете веб запрос на сервер. Так вот клиенсткий сертификат содержится в запросе. В ответе содержится серверный сертификат. Тут вам поможет поиск по
Код: c#
1.
System.Net.ServicePointManager.ServerCertificateValidationCallback
...
Рейтинг: 0 / 0
Как получить объект X509Certificate2 из webResponse
    #38128693
AlexZgur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netivan, и вправду - непонятно

в общем суть такая, есть консоль по поиску сертификатов клиента (на простом asp). Что делает: по фамилии предоставляет ссылки на сертификаты. Но ссылки конечно не простые, а хитро...ые ))) - представляют из себя submit формы. По итогу формируется post запрос. По результатам запроса формируется клиентский сертификат и отправляется в Response.Write. Такая вот реализация

В принципе нет ничего криминального если приведу здесь исходник странички, формирующей response

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
<!-- #include FILE="RegHeader.asp" -->

<%
    CheckToken "RegViewFoundCert.asp"
	if UseFindCertModeReg <> 1 then SysError "Запрещенный режим доступа к странице."
    Dim objView
    Dim CertID
    CertID=Request.Form("CertID")
	If Len(CertID) = 0 then SysError "Вам отказано в доступе к данной странице."
' Get certificate info
	Dim objReq
	Set objReq = Server.CreateObject(PROGID_CERTMAN)	
	Dim adoRs
	Set adoRs = Server.CreateObject("ADODB.Recordset")
	Dim xmlDoc
	Set xmlDoc = Server.CreateObject(PROGID_XMLDOC)
	xmlDoc.async=false
	xmlDoc.loadXML objReq.GetCertificateInfo(CertID)
	if err.number <> 0 then SysError "Невозможно получить сертификат." & Hex(err.number) & ": " & err.description
	adoRs.Open xmlDoc
' Check for error
	if err.number <> 0 then SysError "Невозможно получить сертификат." & Hex(err.number) & ": " & err.description
    
    Response.Clear 
    Response.ContentType="application/x-x509-ca-cert"
    Response.ContentType="application/pkix-cert"
    Response.AddHeader "Content-Disposition", "Attachment;FileName=cert.cer"
    Response.Write adoRs("PKCS").Value
    set adoRs=Nothing
    Response.End 
    ' Check for error
    if err.number <> 0 then SysError Hex(err.number) & ": " & err.description
%>
...
Рейтинг: 0 / 0
Как получить объект X509Certificate2 из webResponse
    #38128730
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexZgur,

вы решили стандартный центр сертификации переписать чтоли? или он сам и есть?:) Попробуйте сохранить с вашего responsa байты как файл с расширением pfx и посмотрите че получится.
...
Рейтинг: 0 / 0
Как получить объект X509Certificate2 из webResponse
    #38128946
AlexZgur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он родимый и есть ))) Переписывать его не охота, так бы дернул XMLку и концы в воду. Воспользуюсь вашим советом!
...
Рейтинг: 0 / 0
Как получить объект X509Certificate2 из webResponse
    #38129071
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexZgur,

вам еще надо сэмулировать нажатие нужной ссылки. там же я так понимаю событие срабатывает и тд.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как получить объект X509Certificate2 из webResponse
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]