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

Уведомление

Icon
Error

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

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
Приветствую! Этсновая Whistle

Подскажите пожалуйста, интерфейс ISelfManagementService когда планируется вытащить в отдельный сервис?
Сейчас у меня версия DSS 1.0.1660.1322 (пока самая свежая).
Offline epsgar  
#2 Оставлено : 2 июня 2016 г. 17:18:02(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
Не хочется плодит новую тему, вопрос несколько похожий, но уже на счет интерфейса CryptoPro.DSS.Common.UserManagementService.IUserManagementService.
Поднимаю сервис через точку ".../cert".
С поднятием защищенного соединения вроде проблем нет; при вызове метода GetUser() прилетает исключение:
"Запрос HTTP запрещен для схемы аутентификации клиентов "Anonymous" (она же The HTTP request is unauthorized with client authentication scheme 'Anonymous').
Внутреннее исключение: Удаленный сервер возвратил ошибку: (403) Запрещено.

Что имеем:
Код:

      var umsEndpoint = (from endpoint in endpoints where endpoint.Address.ToString().Contains("cert") select endpoint).First();      

      umsChannelFactory = new ChannelFactory<IUserManagementService>(umsEndpoint.Binding, umsEndpoint.Address);
      umsChannelFactory.Credentials.SupportInteractive = false;

      var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
      store.Open(OpenFlags.ReadOnly);
      var filteredCerts = store.Certificates.Find(X509FindType.FindBySerialNumber, ConfigurationManager.AppSettings["umsCertSN"].Replace(" ", ""), false);
      if (filteredCerts.Count == 0) throw new ArgumentException();
      var selectedCert = filteredCerts[0];      
      umsChannelFactory.Credentials.ClientCertificate.Certificate = selectedCert;
      umsChannelFactory.Credentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

      umsChannelFactory.Credentials.ServiceCertificate.Authentication.TrustedStoreLocation = StoreLocation.LocalMachine;
      umsChannelFactory.Credentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
      umsChannelFactory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;

      umsChannelFactory.Open();

      var channel = umsChannelFactory.CreateChannel();
      var user = channel.GetUser(UserManagementService.IdentifierType.PhoneNumber, "");


Мой стэк:
Код:

Exception rethrown at [0]: 
   в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   в CryptoPro.DSS.Common.UserManagementService.IUserManagementService.GetUser(IdentifierType type, String identifierValue)


Стэк сервера:

Код:

Server stack trace: 
   в System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest request, HttpWebResponse response, WebException responseException, HttpChannelFactory`1 factory)
   в System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory`1 factory, WebException responseException, ChannelBinding channelBinding)
   в System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   в System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   в System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   в System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   в System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)


Пытался полечиться отсюда, но без результатов:


Хм, только сейчас подумал, а это может быть ответом от сервера, мол сертификат не принят?
Offline epsgar  
#3 Оставлено : 7 июня 2016 г. 9:59:55(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
up
Offline Георгий Садофьев  
#4 Оставлено : 7 июня 2016 г. 16:04:19(UTC)
Георгий Садофьев

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

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

Поблагодарили: 16 раз в 16 постах
Добрый день!

1. Если в браузере открыть страницу https://host/stsapp/UserManagement.svc/cert - сертификат запрашивается?
2. В сертификате (EKU), с которым подключаетесь к сервису, есть OID "Проверка подлинности клиента" (1.3.6.1.5.5.7.3.2) ?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Георгий Садофьев за этот пост.
epsgar оставлено 09.06.2016(UTC)
Offline epsgar  
#5 Оставлено : 8 июня 2016 г. 16:29:17(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
Автор: Yoda Перейти к цитате
Добрый день!

1. Если в браузере открыть страницу https://host/stsapp/UserManagement.svc/cert - сертификат запрашивается?
2. В сертификате (EKU), с которым подключаетесь к сервису, есть OID "Проверка подлинности клиента" (1.3.6.1.5.5.7.3.2) ?


1. Неа (но видимо должен)
2. Да

Эт самое, а при установке\настройке DSS я мог этот момент упустить (например в админке сертификат запрашивается) и не настроить?
Offline epsgar  
#6 Оставлено : 8 июня 2016 г. 16:35:20(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
После некоторых изменений в IIS теперь по ссылке "https://host/stsapp/UserManagement.svc/cert" из браузера красуется:
Предоставленные учетные данные не дают права на просмотр этого каталога или страницы.
Offline Георгий Садофьев  
#7 Оставлено : 8 июня 2016 г. 16:55:45(UTC)
Георгий Садофьев

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

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

Поблагодарили: 16 раз в 16 постах
Каких "некоторых" изменений?
А что если теперь из кода постучаться?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Георгий Садофьев за этот пост.
epsgar оставлено 09.06.2016(UTC)
Offline epsgar  
#8 Оставлено : 8 июня 2016 г. 18:01:38(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
Автор: Yoda Перейти к цитате
Каких "некоторых" изменений?
А что если теперь из кода постучаться?



О, теперь из кода прилетело исключение "ID4011: обработчик SecurityTokenHandler не зарегистрирован для типа маркера проверки "System.IdentityModel.Tokens.X509WindowsSecurityToken"."
Не успел еще много погуглить.

Некоторые изменения:
У виртуальной директории STS (которая stsapp) настроены one2one client cert auth. Роли нужные для IIS вродь есть, Base64 сертификата в конфигурации прописан.

P.S. Спасибо мастер)
Offline Георгий Садофьев  
#9 Оставлено : 8 июня 2016 г. 18:11:07(UTC)
Георгий Садофьев

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

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

Поблагодарили: 16 раз в 16 постах
Ничего хорошего(

1. Уберите из кода
umsChannelFactory.Credentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation
2. Под "one2one client cert auth" что подразумевается? Отображение на виндовую учётку? Если да, то этого не нужно настраивать.

Можете в файлике
C:\Windows\System32\inetsrv\config\applicationHost.config
поискать (только очень аккуратно ничего не изменяя) строку
UserManagement.svc/cert

В идеале в файле должна быть такая секция:

Код:

    <location path="Default Web Site/STS/UserManagement.svc/cert">
        <system.webServer>
            <security>
                <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
            </security>
        </system.webServer>
    </location>
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Георгий Садофьев за этот пост.
epsgar оставлено 09.06.2016(UTC)
Offline epsgar  
#10 Оставлено : 9 июня 2016 г. 11:51:43(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
Секция для пути "Default Web Site/STS/UserManagement.svc/cert" есть, выглядит в точности.
Правильно понимаю, что из коробки уже всё настроено на IIS и дополнительно ничего прикручивать для UserManagement.svc не нужно?

Уточню: при доступе к "https://host/stsapp/UserManagement.svc/cert" из браузера должно вываливаться окошко выбора серта? Но это же страааааааанно
Offline Георгий Садофьев  
#11 Оставлено : 9 июня 2016 г. 11:57:48(UTC)
Георгий Садофьев

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

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

Поблагодарили: 16 раз в 16 постах
Да, всё должно быть настроено из коробки.
Да, должно появляться окошко для выбора сертификата (при определённых настройках и при наличии только одного сертификата окошко может и не появиться). Это совершенно не странно, просто для данной конечной точки требуется двусторонний TLS.

Итого: какая сейчас ошибка?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Георгий Садофьев за этот пост.
epsgar оставлено 09.06.2016(UTC)
Offline epsgar  
#12 Оставлено : 9 июня 2016 г. 12:23:42(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
Пока воз на том же месте.
Yoda, сертфикат оператора DSS ли в качестве сертификата можно\нужно подсунуть (или только админа)?
Offline Георгий Садофьев  
#13 Оставлено : 9 июня 2016 г. 12:28:38(UTC)
Георгий Садофьев

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

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

Поблагодарили: 16 раз в 16 постах
Вот эта?
Цитата:

ID4011: обработчик SecurityTokenHandler не зарегистрирован для типа маркера проверки "System.IdentityModel.Tokens.X509WindowsSecurityToken


Или 403?

Можно любой с клиентской аутентификацией, только отпечаток в DSS'е нужно зарегистрировать через Add-DssIdentityOperator.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Георгий Садофьев за этот пост.
epsgar оставлено 09.06.2016(UTC)
Offline epsgar  
#14 Оставлено : 9 июня 2016 г. 12:55:22(UTC)
epsgar

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

Группы: Участники
Зарегистрирован: 12.11.2015(UTC)
Сообщений: 18
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 6 раз
Ааа, вот оно чё. Таки Add-DssIdentityOperator решил все проблемы. Ларчик просто открывался)))
Спасибо огромное!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.