Search code examples
reporting-servicesssrs-2016fqdn

SSRS 2016 Reports Virtual folder is not accessible from outside the server (with the bunch of 400 "bad request" errors for some internal requests)


I have the problem with access to the SSRS 2016 "Reports" Virtual folder from outside the server.

The server located in the AWS Cloud server, for access to it using RDP we (in the BI department) use server name "xxx-test-xxx.eu-central-1.elb.amazonaws.com". I am not strong in that topic, but as I understand - that is the URL-address (FQDN) of Load Balancer on the AWS side, which is forward later to some IP address, which can be changed periodically.

So, on the server already successfully configured MS SQL Server 2016 and SSRS (in the Native mode). Everything work inside if use URLs http(://)127.0.0.1/reports, http(://)SQL_INSTANCE_NAME/Reports and even http(://)xxx-test-xxx.eu-central-1.elb.amazonaws.com/Reports (for that goal has been added line "127.0.0.1 localhost xxx-test-xxx.eu-central-1.elb.amazonaws.com" into Windows "hosts" file).

Now I am trying to get access to the SSRS portal from outside the server (without any SSL certificate yet, just trough HTTPS):

  • Main IIS web-application of the server successfully opens using http(://)xxx-test-xxx.eu-central-1.elb.amazonaws.com (I have to input my AD credentials from the server in the login window)
  • ReportServer virtual folder successfully opens using http(://)xxx-test-xxx.eu-central-1.elb.amazonaws.com/ReportServer (I have to input my AD credentials from the server in the login window)
  • but when I am trying to open Reports virtual folder by http(://)xxx-test-xxx.eu-central-1.elb.amazonaws.com/Reports - after input of my AD credentials I see damaged or not loaded page. Sometime it is timeout_text, sometimes I even see corrupted headers of the page damaged_headers.

Tried a lot of things to do, but nothing helped: - 80 port is opened for Inbound and Outbound connections in the firewall on the server - in the registry disabled DisableLoopbackCheck - added xxx-test-xxx.eu-central-1.elb.amazonaws.com into BackConnectionHostNames in the registry - trying to edit rsreportserver.config multiple times manually, added "http(://)xxx-test-xxx.eu-central-1.elb.amazonaws.com/ReportServer" as and

In the browser console in the network tab there are a lot of internal requests with the 400 "bad request" errors for some of them But the problem did not disappear... Please, help me to find the solution or at least the direction.


Solution

  • Finally, I decided my problem.

    Before that I tried reconfigure everything multiple times, but nothing helped. Then I saw https://social.msdn.microsoft.com/Forums/en-US/d2542ebb-61e0-4cf2-84c5-04614db36719/remote-server-returned-an-error-400-bad-request?forum=sqlreportingservices:

    "The issue seems to be caused by the Reporting Services virtual directories is not configured to use SSL correctly. If the Reporting Services virtual directories are in the same site of the web application, once we configure the application to use SSL, the Internet Informatin Server(IIS) will require the SSRS to use SSL too. To fix the issue, please configure the SSRS to use SSL through Reporting Services Configuration Manager"

    And then I did:

    • installed some SSL certificate (it can be even certificate for another URL)
    • mapped all internal IP + URL, which is integrated to SSL certificate, to ReportServer and Reports SSRS Web Applications in the SSRS Service Manager
    • stop SSRS Service using the CMD commands
    • delete wrong matched URL from the internal listening ports:
    netsh http add urlacl url=https://xxx-test-xxx.eu-central-1.elb.amazonaws.com:443/ReportServer user="NT SERVICE\ReportServer"
    netsh http add urlacl url=https://xxx-test-xxx.eu-central-1.elb.amazonaws.com:443/Reports user="NT SERVICE\ReportServer"
    netsh http delete urlacl url=https://"trash URL, which is integrated to SSL certificate":443/ReportServer/
    netsh http delete urlacl url=https://"trash URL, which is integrated to SSL certificate":443/Reports
    netsh http show urlacl
    
    • As the result only correct URLs should be there
    • Modify C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config to the appropriate state
    • Probably unnecessarily step: Changed ReportingServicesService.exe.config from the "bin" subfolder: put "4" as DefaultTraceSwitch value and "all:3,http:4" as Components nvalue in the RStrace section
    • Started SSRS service. Connection from outside the server works, but with the Alert for the wrong certificate. Next step should be generate the correct certificate for the URL and use it.