Też miałem problem opisywany tu:
i tu
i
http://blogs.msdn.com/b/mariae/archive/2007/12/12/ssl-configuration-and-reporting-services.aspx
Ż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