Запрос сертификата клиента сервером HTTPS
От: puritanin Россия  
Дата: 03.10.10 02:00
Оценка:
Люди, помогите.

Настраиваю сервер на SSL утилитой:
httpcfg.exe set ssl -i 0.0.0.0:20020 -h 131A5B...1505 -f 2

То есть на любой IP адрес, порт 20020, сертификат сервера с хешем "131A5B...1505" (лежит в MY, подписан доверенным корневым в ROOT, все на LocalMachine), с проверкой сертификатов клиента (-f 2).


Из .net клиента обычным HttpWebRequest:


       // Принимаем любой сертификат сервера
       ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };

       var request = (HttpWebRequest)WebRequest.Create("https://A.B.C.D:20020/");
       request.ContentType = "application/xml";
       request.ContentLength = memoryStream.Length;
       request.Timeout = 300000;
       request.Method = "POST";
       request.KeepAlive = false;
       request.Pipelined = false;

       using (Stream stream = request.GetRequestStream())
            stream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);



Самое интересное, что все работает

Конфигурировал программно через HttpApi (HttpSetServiceConfiguration), комбинируя флаги и значения (DefaultCertCheckMode, DefaultFlags).
Результат один — клиент успешно обращается к серверу по SSL без сертификата.

А мне нужно сделать так, чтобы клиент мог обратиться к серверу ТОЛЬКО с собственным сертификатом.
Этот механизм мне пока не понятен, особенно, где как его сервер проверяет (копия клиентского сертификата лежит в хранилище..??)
Но даже простого отказа сервера, чтобы разобраться дальше, я не настроил....
Re: Запрос сертификата клиента сервером HTTPS
От: Jolly Roger  
Дата: 03.10.10 02:40
Оценка:
Здравствуйте, puritanin, Вы писали:

Имхо, -f 2 заставляет сервер запросить у клиента сертификат, и только. У системы просто нет необходимой для принятия решения об отказе информации, Ваш код должен сам это обработать. Ещё Вы можете параметром -t указать группу доверенных издателей.
"Нормальные герои всегда идут в обход!"
Re[2]: Запрос сертификата клиента сервером HTTPS
От: puritanin Россия  
Дата: 03.10.10 03:49
Оценка:
Точно,
я забыл про HttpListener.AuthenticationSchemes.
Там настраивается проверка и дальше нужно уже копать....

Сейчас попробую разобраться...

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.