Осталось с 0 клиентскими сертификатами на выбор при доступе к управлению SSRS.
Окружающая среда:
Службы Reporting Services, работающие на установке SQL Server 2008 R2 с пакетом обновления 3 (SP3) на сервере Windows 2008 с установленным.Net 4.6.1 и включенным.Net 3.5 в качестве функции. IIS, база данных и служба отчетов - все на локальном компьютере (настраиваемый URL-адрес входа на другом компьютере, но, похоже, это не связано).
Изменения сделаны:
По соображениям безопасности мы вынуждены перейти на TLS 1.2, поэтому мы сделали с IISCrypto, включив только TLS 1.2
Результат:
С этого момента мы получаем ошибку только при попытке доступа к сайту управления отчетами. В браузере мы получаем ошибку 500, говорящую:
Основное соединение было закрыто: при получении произошла непредвиденная ошибка
В журналах SSRS мы видим следующее исключение:
System.Net.WebException: базовое соединение было закрыто: при получении произошла непредвиденная ошибка. ---> System.ComponentModel.Win32Exception: клиент и сервер не могут связываться, потому что они не обладают общим алгоритмом
Вызов стека запускается в ReportServer OnInit(), поэтому он сразу не запускается и возникает ошибка при инициализации служб Reporting Services.
Включение трассировки в.Net Framework Я обнаружил следующие сообщения, в которых показано, что сбой происходит, когда SSRS вызывает свои собственные веб-службы:
System.Net Information: 0 : [5076] HttpWebRequest#38854310 - Request: POST /ReportServer/ReportService2010.asmx HTTP/1.1
System.Net Information: 0 : [4124]
SecureChannel#52830003::.ctor(hostname=themachineshostname, #clientCertificates=0)
System.Net Information: 0 : [4124] Enumerating security packages:
System.Net Information: 0 : [4124] Negotiate
System.Net Information: 0 : [4124] NegoExtender
System.Net Information: 0 : [4124] Kerberos
System.Net Information: 0 : [4124] NTLM
System.Net Information: 0 : [4124] Schannel
System.Net Information: 0 : [4124] Microsoft Unified Security Protocol Provider
System.Net Information: 0 : [4124] WDigest
System.Net Information: 0 : [4124] TSSSP
System.Net Information: 0 : [4124] pku2u
System.Net Information: 0 : [4124] CREDSSP
System.Net Information: 0 : [4124] SecureChannel#52830003 - Left with 0 client certificates to choose from.
System.Net Information: 0 : [4124] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent = Outbound, scc = System.Net.SecureCredential)
System.Net Error: 0 : [4124] AcquireCredentialsHandle() failed with error 0X80090331.
Вещи уже проверены:
Используемый сертификат все еще действителен, и его цепочка подписей помещена в надлежащие "промежуточные" и "корневые" хранилища.
Запуск пула приложений от имени администратора не помогает.
Использование пользовательского подписанного сертификата, созданного из IIS, не помогает.
Важно: проблема возникает только на сайте управления службами Reporting Services, отчеты работают нормально
Следующие шаги
Есть идеи, что еще попробовать? Есть ли способ узнать, почему пакеты безопасности не выбраны?
Обновить
Проблема не связана с TLS1.2, так как при включении TLS 1 я снова получаю ту же ошибку. Я предполагаю, что URL-адрес входа как-то участвует.
1 ответ
Давайте удостоверимся, что в реестре правильно установлены 2 вещи (как на вашем сервере отчетов, так и на сервере настраиваемого входа в систему IIS). Перезагрузка требуется после изменения настроек досягаемости (по одному, чтобы увидеть, что работает).
Включение клиента / сервера TLS 1.2 в реестре
Идти к HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
и убедитесь, что TLS 1.2 включен, а другие провайдеры отключены. Если TLS 1.2 нет, создайте его. Подробности здесь
Убедитесь, что UseStrongCrypto включен для.NET
Перейдите сюда и убедитесь, что включена надежная криптография.
Примечание: я на мобильном устройстве, поэтому сложно набрать подробный ответ. Если все это работает для вас, я могу добавить более подробную информацию в ответ позже.