我有一个运行SSRS 2014的SSRS实例,我希望将其配置为通过SSL使用.
该服务器位于http://reports.mydomain2.com
我从域名www.mydomain.com上购买了GoDaddy的多SSL证书,并将reports.mydomain2.com添加为SAN
我从GoDaddy生成SSL证书和IIS一样,将证书导入中间证书颁发机构和个人/证书
我启动了SSRS配置管理器,我正在尝试设置SSL我看到了证书,但是当我选择它并单击Apply我得到错误,SSL证书无法绑定
显示的错误是
Microsoft.ReportingServices.WmiProvider.WMIProviderException: An unknown error has occurred in the WMI Provider. Error Code 80070520 ---> System.Runtime.InteropServices.COMException (0x80070520): A specified logon session does not exist. It may already have been terminated. (Exception from HRESULT: 0x80070520) --- End of inner exception stack trace --- at Microsoft.ReportingServices.WmiProvider.RSWmiAdmin.ThrowOnError(ManagementBaseObject mo) at Microsoft.ReportingServices.WmiProvider.RSWmiAdmin.CreateSSLCertificateBinding(String application, String certificateHash, String ipAddress, Int32 port) at ReportServicesConfigUI.WMIProvider.RSReportServerAdmin.CreateSSLCertificateBinding(UrlApplication app, String certificateHash, String ipAddress, Int32 port)
我用命令检查了绑定
netsh http show urlacl
我在443号港口找到了一个条目
Reserved URL : https://+:443/sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75}/ User: NT SERVICE\SstpSvc Listen: Yes Delegate: Yes User: BUILTIN\Administrators Listen: No Delegate: No User: NT AUTHORITY\SYSTEM Listen: Yes Delegate: Yes SDDL: D:(A;;GA;;;S-1-5-80-3435701886-799518250-3791383489-3228296122-2938884314)(A;;GR;;;BA)(A;;GA;;;SY)
我不知道这是否有任何区别(如果端口443已经绑定,阻止它绑定到SSRS url或不
但另一个可能的问题可能是SSRS配置管理器不允许我将SSL绑定的URL更改为reports.mydomain2.com.但它试图绑定到证书的默认域.
知道什么可能是错的,我该如何解决?
我找到了解决方案,希望它能帮助别人.
从GoDaddy下载的证书不包含私钥.这是创建证书绑定错误的原因.为了解决这个问题,我必须在我在IIS中生成初始CSR的机器上导出带有私钥的证书(我还导出了所有扩展属性,以防万一)
所以我的步骤如下:
在我生成CSR的机器上,我导入从证书颁发机构收到的证书.
在同一台机器上,我将带有私钥和扩展属性的证书导出到.pfx
在SSRS机器上,我导入了导出的证书
启动SSRS配置管理器,在"Web服务URL"部分中,选择新导入的证书,然后单击" 应用"
如果生成的证书的URL与SSRS服务器的DNS完全匹配,则应该完成.
如果证书的URL与SSRS DNS名称不匹配(但报告服务器的URL上有SAN,您将看到SSRS配置管理器中选择的SSL证书设置为"未知",ssl URL也设置为"未知".
打开SSRS配置文件,RsReportServer.config,并编辑UrlReservations的条目,为SSL设置所需的URL
ReportServerWebService ReportServer https://reports.mydomain2.org:443 .... NT Service\ReportServer http://+:80 .... NT Service\ReportServer ReportManager Reports http://+:80 .... NT Service\ReportServer https://reports.mydomain2.org:443 .... NT Service\ReportServer
您必须添加或编辑https的条目(您将在端口80上找到http的条目,您不应该更改),并使用端口80上的条目中的AccountSid获取ssl上的新条目
运行以下命令以查找所有有界URL.您必须找到报告服务器的URL,并记下SDDL,这在为报告服务器创建SSL URL时将需要.
netsh http show urlacl
删除SSRS配置管理器创建的有界URL,该URL指向错误的URL(为其创建证书的主URL)
netsh http delete urlacl url=https://www.mydomain1.org:443/ReportServer netsh http delete urlacl url=https://www.mydomain1.org:443/Reports
运行以下命令为报表服务器添加正确的URL.我们需要使用绑定到端口80的报告服务器的entro中找到的SSDL(参见上面的第8点)
netsh http add urlacl url=https://reports.mydomain2.org:443/ReportServer user="NT Service\ReportServer" listen=yes sddl=<....> netsh http add urlacl url=https://reports.mydomain2.org:443/Reports user="NT Service\ReportServer" listen=yes sddl=<....>