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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Shrike  
#1 Оставлено : 13 февраля 2012 г. 16:56:48(UTC)
Shrike

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

Группы: Участники
Зарегистрирован: 18.05.2011(UTC)
Сообщений: 24
Откуда: Moscow

Добрый день.
Подтвердите или опровергните пожалуйста утверждение: .NET приложение обращающееся по HTTPS, используя WCF-стек (т.е. безопасность уровня транспорта), к серверу, где в качестве SSL-сертификата используется ГОСТ-сертификат, требует установленного Sharpei.
Если это так, то поясните пож-та в чем причины этого?
Offline Максим Коллегин  
#2 Оставлено : 13 февраля 2012 г. 18:07:09(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 748 раз в 643 постах
Если используется клиентский сертификат, то требует. Все вопросы к MS.
Знания в базе знаний, поддержка в центре поддержки
Offline Shrike  
#3 Оставлено : 13 февраля 2012 г. 20:42:33(UTC)
Shrike

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

Группы: Участники
Зарегистрирован: 18.05.2011(UTC)
Сообщений: 24
Откуда: Moscow

maxdm написал:
Если используется клиентский сертификат, то требует. Все вопросы к MS.

Нет, только серверный. Т.е. сертификат задается в IIS'e и все. Мы столкнулись с проблемой, что SSL соединение в .NET WCF приложении не работает без Шарпея (через браузер при этом страница открывается). Это кажется странным, т.к. сетевой стек вроде один и тот же... (речь именно про транспортную безопасность, а не message security).
Offline Максим Коллегин  
#4 Оставлено : 13 февраля 2012 г. 23:00:40(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 748 раз в 643 постах
Какой номер сборки CSP 3.6?
Знания в базе знаний, поддержка в центре поддержки
Offline Shrike  
#5 Оставлено : 13 февраля 2012 г. 23:36:06(UTC)
Shrike

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

Группы: Участники
Зарегистрирован: 18.05.2011(UTC)
Сообщений: 24
Откуда: Moscow

maxdm написал:
Какой номер сборки CSP 3.6?

Версия ядра СКЗИ: 3.6.5359 КС1
Версия продукта: 3.6.6497
Offline Максим Коллегин  
#6 Оставлено : 14 февраля 2012 г. 0:25:23(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 748 раз в 643 постах
А выложите примерчик простенький - гляну повнимательнее.
Знания в базе знаний, поддержка в центре поддержки
Offline Shrike  
#7 Оставлено : 14 февраля 2012 г. 21:19:48(UTC)
Shrike

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

Группы: Участники
Зарегистрирован: 18.05.2011(UTC)
Сообщений: 24
Откуда: Moscow

maxdm написал:
А выложите примерчик простенький - гляну повнимательнее.


Ситуация следующая: на сервере простейший сервис, возвращающий дату, код с вашего позволения опускаю. Вся соль в конфигурации байндингов.
Клиентская конфигурация с двумя байндингами:
- анонимным доступ поверх https (wsHttpBinding)
- username/password-аутентификация поверх https (чтобы такой байндинг сделать использовался customBinding с набором стандартных элементов)

Код:

  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="https_anon">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </wsHttpBinding>
      <customBinding>
        <binding name="UserNameOverTransport">
          <security authenticationMode="SecureConversation">
            <secureConversationBootstrap authenticationMode="UserNameOverTransport" />
          </security>
          <textMessageEncoding />
          <httpsTransport />
        </binding>
      </customBinding>
    </bindings>
    <client>
      <endpoint address="https://myserver/testapp/infrastructureservice.svc/anon"
          binding="wsHttpBinding" bindingConfiguration="https_anon"
          contract="Aksicom.IInfrastructureService" name="https" />
      <endpoint address="https://myserver/testapp/infrastructureservice.svc"
          binding="customBinding" bindingConfiguration="UserNameOverTransport"
          contract="Aksicom.IInfrastructureService" name="https_custom" />
    </client>
  </system.serviceModel>


На сервере аналогичные байндинги, плюс кастомный валидатор username/password, который ничего не делает (код опять же опускаю, если надо выложу).

Через wsHttpBinding/"https_anon" все работает.
Через customBinding/"UserNameOverTransport" не работает - на клиенте возникает исключение:

An error occured: System.NotSupportedException: The certificate key algorithm is not supported.

Server stack trace:
at System.Security.Cryptography.X509Certificates.PublicKey.get_Key()
at System.IdentityModel.Claims.X509CertificateClaimSet.InitializeClaimsCore()
at System.IdentityModel.Claims.X509CertificateClaimSet.EnsureClaims()
at System.IdentityModel.Claims.X509CertificateClaimSet.<FindClaims>d__0.MoveNext()
at System.ServiceModel.Security.SecurityUtils.GetPrimaryIdentityClaim(AuthorizationContext authContext)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.SoapSecurityOutputSession.Initialize(SecurityToken sessionToken, SecuritySessionClientSettings`1 settings)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySimplexSessionChannel.InitializeSession(SecurityToken sessionToken)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.InitializeSecurityState(SecurityToken sessionToken)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OpenCore(SecurityToken sessionToken, TimeSpan timeout)
at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OnOpen(TimeSpan timeout)
at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

После установки Sharpei работают оба байндинга.

Отредактировано пользователем 14 февраля 2012 г. 21:28:03(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#8 Оставлено : 15 февраля 2012 г. 0:02:38(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 748 раз в 643 постах
Цитата:
System.NotSupportedException: The certificate key algorithm is not supported.
- если такое исключение возникает, значит без Sharpei работать и не будет.
Знания в базе знаний, поддержка в центре поддержки
Offline Shrike  
#9 Оставлено : 15 февраля 2012 г. 20:19:32(UTC)
Shrike

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

Группы: Участники
Зарегистрирован: 18.05.2011(UTC)
Сообщений: 24
Откуда: Moscow

Проблема решается отключением SecurityConversation:
Код:

			<customBinding>
				<binding name="UserNameOverTransport">
					<security authenticationMode="UserNameOverTransport" />
					<textMessageEncoding />
					<httpsTransport requireClientCertificate="false" authenticationScheme="Anonymous"  />
				</binding>
			</customBinding>
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.