如何使用现有根CA为SSRS多主机别名签署测试用证书?
我来一步步教你搞定用现有根CA签署SSRS别名证书的操作,亲测靠谱:
使用现有根CA签署SSRS别名证书的完整步骤
先划个重点:要让SSRS的多个别名都被信任,证书里的**使用者可选名称(SAN)**必须包含所有需要的主机名/别名,这一步绝对不能漏,不然单个别名的证书没法覆盖多个场景。
1. 生成包含所有SSRS别名的证书签名请求(CSR)
用PowerShell生成最方便,能精准控制SAN字段。打开管理员权限的PowerShell,运行以下命令(记得替换成你的实际信息):
# 定义证书参数,按需修改 $certParams = @{ Subject = "CN=ssrs-primary.yourdomain.com" # 填你的主SSRS域名/别名 KeyAlgorithm = "RSA" KeyLength = 2048 HashAlgorithm = "SHA256" KeyExportPolicy = "Exportable" NotAfter = (Get-Date).AddYears(2) # 证书有效期,自己调整时长 SubjectAlternativeName = @( "DNSName=ssrs-primary.yourdomain.com", "DNSName=ssrs-test.yourdomain.com", "DNSName=ssrs-local" # 把所有需要的别名都加在这里 ) CertStoreLocation = "Cert:\LocalMachine\My" } # 创建证书请求并导出为文件 $cert = New-SelfSignedCertificate @certParams $csrPath = "C:\Temp\SSRS_Cert_Request.csr" Export-CertificateRequest -Cert $cert -FilePath $csrPath
执行完后,你会在指定路径得到一个CSR文件,这就是要提交给根CA的核心请求文件。
2. 提交CSR到现有根CA进行签署
这一步分两种场景,取决于你的根CA类型:
场景A:域环境下的企业CA
如果你的根CA是域内的Active Directory企业CA,直接在PowerShell里提交请求就行:
# 替换成你的CA服务器名称和CA名称 $caServer = "your-ca-server.yourdomain.com" $caName = "Your-Root-CA" $signedCertPath = "C:\Temp\SSRS_Signed_Cert.cer" # 提交请求并获取签署后的证书 certreq -submit -config "$caServer\$caName" $csrPath $signedCertPath
执行过程中会弹出确认框,选你的根CA就好,完成后会得到一个.cer格式的已签署证书。
场景B:独立根CA
如果是独立CA,得手动操作几步:
- 把CSR文件复制到根CA服务器上
- 打开证书颁发机构控制台,右键点击「挂起的请求」→「提交新请求」,选中你的CSR文件
- 在「挂起的请求」里找到刚提交的请求,右键→「所有任务」→「颁发」
- 颁发完成后,在「颁发的证书」里找到该证书,右键→「所有任务」→「导出」,选择导出为
.cer格式,保存后复制回SSRS服务器
3. 导入签署后的证书到SSRS服务器
回到SSRS服务器,打开管理员PowerShell,把签署好的证书导入本地计算机的个人存储:
Import-Certificate -FilePath $signedCertPath -CertStoreLocation "Cert:\LocalMachine\My"
另外别忘了:如果SSRS服务器还没导入根CA的证书,得把根CA证书导入到受信任的根证书颁发机构存储里,不然系统会不认这个签署的证书:
- 打开MMC→添加「证书」管理单元→选择「本地计算机」
- 展开「受信任的根证书颁发机构」→「证书」→右键→「所有任务」→「导入」,选中根CA的证书文件
4. 将证书绑定到SSRS
最后一步就是让SSRS用上这个证书:
- 打开Reporting Services配置管理器
- 连接到你的SSRS实例
- 点击左侧的「Web服务URL」
- 在「SSL证书」下拉菜单里选中刚导入的那个包含所有别名的证书
- 点击「应用」,重启SSRS服务就生效了
这样你的SSRS所有别名就都能使用受信任的证书建立安全连接了。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

