SSRS Problem z SQL Server Reporting Services i wildcard SSL certificate

29-paź-2013

Też miałem problem opisywany tu:

http://connect.microsoft.com/SQLServer/feedback/details/514292/reporting-services-2008-cannot-create-http-endpoint-with-a-wildcard-ssl-cert

i tu

http://answers.flyppdevportal.com/categories/sqlserver/sqlreportingservices.aspx?ID=27ecdb2d-d6be-4e10-a7e2-7fedba1266e2

i

http://blogs.msdn.com/b/mariae/archive/2007/12/12/ssl-configuration-and-reporting-services.aspx

http://social.technet.microsoft.com/Forums/en-US/046edd44-628a-4418-825e-d0b9ff41c28c/report-and-report-server-sites-wont-start-error-creating-http-endpoint

http://social.technet.microsoft.com/Forums/en-US/046edd44-628a-4418-825e-d0b9ff41c28c/report-and-report-server-sites-wont-start-error-creating-http-endpoint

Żadne z tych rozwiązań nie rozwiązało do końca mojego problemu, dlatego poniżej umieszczam najważniejsze fragmenty mojego pliku reportserver.config z małym komentarzem.

Skoro ReportingServices ma działać na wszystkich interfejsach i pod wszystkimi nazwami na które zewala certyfikat to można to załatwić następującym wpisem:

<URLReservations>
<Application>
<Name>ReportServerWebService</Name>
<VirtualDirectory>ReportServer</VirtualDirectory>
<URLs>
<URL>
<UrlString>https://+:8080</UrlString>
<AccountSid>… tutaj sid…</AccountSid>
<AccountName>…tutaj konto…</AccountName>
</URL>
</URLs>
</Application>
<Application>
<Name>ReportManager</Name>
<VirtualDirectory>ReportsMGR</VirtualDirectory>
<URLs>
<URL>
<UrlString>https://+:8080</UrlString>
<AccountSid>…tutaj SID…</AccountSid>
<AccountName>…tutaj konto…</AccountName>
</URL>
</URLs>
</Application>
</URLReservations>

Kolejna rzecz, to aby serwer wiedział jak się może sam do siebie odwołać:

<UI>
<ReportServerUrl>
https://host.domena:8080/ReportServer
</ReportServerUrl>
<PageCountMode>Estimate</PageCountMode>
</UI>

No i na końcu bindings, które wskazują na powiązanie ReportManagera i Report Servera z określonymi certyfikatami.

<Bindings>
<Binding>
<ApplicationName>ReportManager</ApplicationName>
<CertificateHash>590fee2fc6ae8gg468909ee022fc22dfffbcf6bf</CertificateHash>
<IPAddress>0.0.0.0</IPAddress>
<Port>8080</Port>
</Binding>
<Binding>
<ApplicationName>ReportServerWebService</ApplicationName>
<CertificateHash>590fee2fc6ae8gg468909ee022fc22dfffbcf6bf</CertificateHash>
<IPAddress>0.0.0.0</IPAddress>
<Port>8080</Port>
</Binding>
</Bindings>

 

W moim przypadku serwer miał problemy z wystartowaniem o ile konto usługi nie było administratorem lokalnym:

e ERROR: Error creating HTTP endpoint. System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
at Microsoft.ReportingServices.HostingInterfaces.IRsUnmanagedCallback.CreateHttpEndpoint(RsAppDomainType application, String[] urlPrefixes, Int32 cPrefixes, String[] hosts, Int32 cHosts, Boolean wildCardPresent, String virtualDirectory, String filePath, Int32 authType, Int32 logonMethod, String authDomain, String authRealm, Boolean authPersist, Int32 extendedProtectionLevel, Int32 extendedProtectionScenario, Boolean enabled)
at Microsoft.ReportingServices.Library.ServiceAppDomainController.SetWebConfiguration(RunningApplication rsApplication, Boolean enabled, String folder)

e ERROR: Failed to register url=https://host.domena:443/Reports/ for endpoint 3, error=5.
rshost!rshost!2384!10/24/2013-14:26:03:: w WARN: Endpoint 3 is enabled but no url is registered for vdir=/Reports, pdir=D:\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager.
servicecontroller!DefaultDomain!1070!10/24/2013-14:26:03:: e ERROR: Error creating HTTP endpoint. System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
at Microsoft.ReportingServices.HostingInterfaces.IRsUnmanagedCallback.CreateHttpEndpoint(RsAppDomainType application, String[] urlPrefixes, Int32 cPrefixes, String[] hosts, Int32 cHosts, Boolean wildCardPresent, String virtualDirectory, String filePath, Int32 authType, Int32 logonMethod, String authDomain, String authRealm, Boolean authPersist, Int32 extendedProtectionLevel, Int32 extendedProtectionScenario, Boolean enabled)
at Microsoft.ReportingServices.Library.ServiceAppDomainController.SetWebConfiguration(RunningApplication rsApplication, Boolean enabled, String folder)
r

Ale i to udało się obejść. W kluczu

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

są umieszczone bindings portów i katalogów wirtualnych.

Komendą

netsh http delete urlacl url=https://Extranet:442/Reports/

można pousuwać niepotrzebne wpisy, a komendą

netsh http add urlacl url=https://+:8080/Reports user=MYSERVER\MyAccout

założyć nowe potrzebne powiązania

Komentarze są wyłączone

Autor: Rafał Kraik