Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline RoamerRus  
#1 Оставлено : 22 сентября 2010 г. 16:09:25(UTC)
RoamerRus

Статус: Участник

Группы: Участники
Зарегистрирован: 29.12.2008(UTC)
Сообщений: 22
Мужчина
Откуда: Краснодар

Сказал «Спасибо»: 15 раз
Поблагодарили: 1 раз в 1 постах
Написал тестовую веб-службу с авторизацией по сертификату:
Цитата:
[System.Web.Services.WebMethod()]
public int TestMethod(int itest)
{
return itest*2;
}

Методы службы отображаются и запускаются при указании корректного сертификата, выданного на УЦ КриптоПро.
Написал веб-приложение с авторизацией по сертификату для проверки этой службы (добавил соответствующий Web Reference в проект).
Авторизуюсь в приложении по этому же сертификату. Передаю текущий сертификат пользователя в веб-службу:
Цитата:
protected void TestButton_Click(object sender, EventArgs e)
{
X509Certificate2 x509c = new X509Certificate2();
x509c.Import(HttpContext.Current.Request.ClientCertificate.Certificate);

testwebservice.ExpandedData ed = new testwebservice.ExpandedData();
ed.ClientCertificates.Add(x509c);
Response.Write("5*2 = " + ed.TestMethod(5));
}

Однако, когда вызываю метод из веб-службы возникает ошибка:
Цитата:
System.NotSupportedException: The certificate key algorithm is not supported.
Источник ошибки:
Line 95: public int TestMethod(int itest) {
Line 96: object[] results = this.Invoke("TestMethod", new object[] {
Line 97: itest});
Line 98: return ((int)(results[0]));

Если же сертификат в веб-службу не передавать, то сообщение об ошибке меняется на:
Цитата:
System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

Скажите, пожалуйста, что я делаю не так? Возможна ли передача контекстного сертификата в веб-службу без использования Sharpei?
Offline Kirill Sobolev  
#2 Оставлено : 22 сентября 2010 г. 16:11:25(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Возможна.
Какой CSP?
Как вызываете веб-службу?
Техническую поддержку оказываем тут
Наша база знаний
Offline RoamerRus  
#3 Оставлено : 22 сентября 2010 г. 16:30:36(UTC)
RoamerRus

Статус: Участник

Группы: Участники
Зарегистрирован: 29.12.2008(UTC)
Сообщений: 22
Мужчина
Откуда: Краснодар

Сказал «Спасибо»: 15 раз
Поблагодарили: 1 раз в 1 постах
Kirill Sobolev написал:
Возможна.
Какой CSP?
Как вызываете веб-службу?

CSP: КС1 3.0.3300.3
Вызываю веб-службу как написано выше, т.е. создаю экземпляр веб-службы и вызываю метод этой веб-службы:
Код:
protected void TestButton_Click(object sender, EventArgs e)
{
X509Certificate2 x509c = new X509Certificate2();
x509c.Import(HttpContext.Current.Request.ClientCertificate.Certificate);

testwebservice.ExpandedData ed = new testwebservice.ExpandedData();
ed.ClientCertificates.Add(x509c);
Response.Write("5*2 = " + ed.TestMethod(5));
}
Offline Kirill Sobolev  
#4 Оставлено : 22 сентября 2010 г. 18:15:33(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Т.е. на самом деле веб-приложение выступает как прокси для гостового TLS с двухсторонней аутентификацией?
Техническую поддержку оказываем тут
Наша база знаний
Offline RoamerRus  
#5 Оставлено : 22 сентября 2010 г. 19:12:33(UTC)
RoamerRus

Статус: Участник

Группы: Участники
Зарегистрирован: 29.12.2008(UTC)
Сообщений: 22
Мужчина
Откуда: Краснодар

Сказал «Спасибо»: 15 раз
Поблагодарили: 1 раз в 1 постах
Kirill Sobolev написал:
Т.е. на самом деле веб-приложение выступает как прокси для гостового TLS с двухсторонней аутентификацией?

Да, веб-приложение выступает как прокси для гостового TLS. Вообще-то я хотел просто передать сертификат из веб-приложения в веб-службу. На мой взгляд для этого достаточно односторонней аутентификации. Или я что-то путаю?
Offline Kirill Sobolev  
#6 Оставлено : 22 сентября 2010 г. 19:32:41(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Да, односторонний (серверной) аутентификации будет вполне достаточно, если передавать сертификат клиента не через TLS.
Для двухсторонней аутентификации веб-приложению понадобится секретный ключ от HttpContext.Current.Request.ClientCertificate.Certificate, чего у него, естественно, нет.
Техническую поддержку оказываем тут
Наша база знаний
Offline RoamerRus  
#7 Оставлено : 22 сентября 2010 г. 20:28:09(UTC)
RoamerRus

Статус: Участник

Группы: Участники
Зарегистрирован: 29.12.2008(UTC)
Сообщений: 22
Мужчина
Откуда: Краснодар

Сказал «Спасибо»: 15 раз
Поблагодарили: 1 раз в 1 постах
Kirill Sobolev написал:
Да, односторонний (серверной) аутентификации будет вполне достаточно, если передавать сертификат клиента не через TLS.
Для двухсторонней аутентификации веб-приложению понадобится секретный ключ от HttpContext.Current.Request.ClientCertificate.Certificate, чего у него, естественно, нет.

Ясно, нужно по TLS, значит все-таки меня интересует именно двухсторонняя аутентификация. Как мне заполнить поле HttpContext.Current.Request.ClientCertificate.Certificate.PrivateKey? Или нужно вообще другими компонентами пользоваться для передачи текущего сертификата клиента в из прокси в веб-службу?
Offline Kirill Sobolev  
#8 Оставлено : 22 сентября 2010 г. 20:34:08(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Я вообще не уверен в работоспособности такой системы при условии, что веб-служба, веб-приложение и клиент - это 3 разных машины.
Как вариант - сделайте клиентский сертификат для веб-приложения и именно с ним вызывайте веб-службу, передавая сертификат клиента в качестве параметра метода.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.