你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 TLS/SSL 证书从 Intranet 启用远程访问(高级)

本教程介绍如何在多个本地计算机上安装自承载集成运行时,以及如何使用 TLS/SSL 证书(高级)从 Intranet 进行远程访问以保障集成运行时节点之间的通信安全。

先决条件

  • SSL/TLS 强加密简介。
  • 证书可以是 Web 服务器的常规 TLS 证书。 要求:
    • 证书必须是公共可信的 X509 v3 证书。 建议使用公共合作伙伴证书颁发机构 (CA) 颁发的证书。
    • 每个集成运行时节点必须信任此证书。
    • 建议采用使用者可选名称 (SAN) 证书,因为集成运行时节点的所有完全限定域名 (FQDN) 都需要受此证书保护。 (.NET Framework 4.6.1 已修复“WCF TLS/SSL 验证仅检查 SAN 中的最后一个 DNS 名称”问题。有关详细信息,请参阅缓解:X509CertificateClaimSet.FindClaims 方法。)
    • 不支持通配符证书 (*)。
    • 证书必须具有私钥(如 PFX 格式)。
    • 此证书可以使用 Windows Server 2012 R2 支持的任何 TLS/SSL 证书密钥大小。
    • 到目前为止,我们仅支持 CSP(加密服务提供程序)证书。 不支持使用 CNG 密钥(密钥存储提供者)的证书。

步骤

  1. 在所有计算机上运行以下 PowerShell 命令,获取其 FQDN:

    [System.Net.Dns]::GetHostByName("localhost").HostName
    

    例如,FQDN 是 node1.domain.contoso.com 和 node2.domain.contoso.com。

  2. 在“使用者可选名称”中生成包含所有计算机 FQDN 的证书。

    显示以使用者可选名称生成证书的屏幕截图。

  3. 在“本地计算机”->“个人”的所有节点上安装该证书,以便在集成运行时配置管理器上选择该证书:

    1. 单击证书并安装它。

    2. 选择“本地计算机”并输入密码。

      显示“选择本地计算机”的屏幕截图。

    3. 选择“将所有的证书放入下列存储”。 单击“浏览”。 选择“个人”。

    4. 选择“完成”以安装该证书。

  4. 启用“从 Intranet 进行远程访问”:

    1. 在自承载集成运行时节点注册期间:

      1. 选择“从 Intranet 进行远程访问”,然后选择“下一步”。

        显示从 Intranet 启用远程访问的屏幕截图。

      2. 设置“TCP 端口”(默认为 8060)。 确保已在防火墙中打开该端口。

      3. 单击“选择”。 在弹出窗口中,选择正确的证书,然后选择“完成”。

        显示“选择证书”的屏幕截图。

    2. 注册自承载集成运行时节点后:

      注意

      自承载集成运行时只有在具有单个节点时才能更改远程访问设置,这是由设计决定的。 否则,无法选中单选按钮。

      显示使用 TLS/SSL 证书(高级)启用的屏幕截图。

      1. 转到自承载“Integration Runtime Configuration Manager”->“设置”->“从 Intranet 进行远程访问”。 单击“更改”

      2. 选择“使用 TLS/SSL 证书进行访问(高级)”。

      3. 单击“选择”。 在弹出窗口中,选择正确的证书,然后选择“确定”。

        显示“选择证书”的屏幕截图。

    3. 验证自承载“Integration Runtime Configuration Manager”中的远程访问设置。

      显示在自承载 Integration Runtime Configuration Manager 步骤 1 中验证远程访问设置的屏幕截图。

      显示在自承载 Integration Runtime Configuration Manager 步骤 2 中验证远程访问设置的屏幕截图。

  5. 如果没有公共可信证书,则使用自签名证书:

    1. 生成并导出自签名证书(如果已有证书,可跳过此步骤):

      1. 通过 PowerShell 生成自签名证书(使用提升的权限):

        New-SelfSignedCertificate -DnsName contoso.com, node1.domain.contoso.com, node2.domain.contoso.com -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" -CertStoreLocation cert:\LocalMachine\My
        
      2. 若要将生成的证书(带私钥)导出到受密码保护的 PFX 文件,需要其指纹。 可以从 New-SelfSignedCertificate 命令的结果中复制该指纹。 例如,它是 CEB5B4372AA7BF877E56BCE27542F9F0A1AD197F

      3. 通过 PowerShell 导出生成的带私钥的证书(使用提升的权限):

        $CertPassword = ConvertTo-SecureString -String “Password” -Force -AsPlainText
        Export-PfxCertificate -Cert
        cert:\LocalMachine\My\CEB5B4372AA7BF877E56BCE27542F9F0A1AD197F -FilePath C:\self-signedcertificate.pfx -Password $CertPassword            
        
      4. 你已将带私钥的证书导出至 C:\self-signedcertificate.pfx。

    2. 在“本地计算机”->“受信任的根证书颁发机构存储”的所有节点上安装此证书:

      1. 单击证书并安装它。
      2. 选择“本地计算机”并输入密码。
      3. 选择“将所有的证书放入下列存储”。 单击“浏览”。 选择“受信任的根证书颁发机构”。
      4. 选择“完成”以安装该证书。

      显示在所有节点上安装证书的屏幕截图。

  6. 故障排除

    1. 验证目标存储中是否存在该证书:

      1. 按照操作指南:使用 MMC 管理单元查看证书 - WCF中的过程,在 MMC 管理单元中查看证书(本地计算机)。

        显示在 MMC 管理单元中查看证书的屏幕截图。

      2. 确认证书已安装在“个人”和“受信任的根证书颁发机构存储”中(如果它是自签名证书)。

        显示安装在“个人”和“受信任的根证书颁发机构”存储中的证书的屏幕截图。

    2. 验证证书是否具有私钥,并且是否未过期。

      屏幕截图显示如何验证证书是否具有私钥且未过期。

    3. 确保自承载集成运行时的服务帐户(默认帐户为 NT SERVICE\DIAHostService)具有证书私钥的读取权限:

      1. 右键单击此证书 ->“所有任务”->“管理私钥”。

      2. 如果没有读取权限,请授予该权限,然后应用并保存。

        显示自承载集成运行时的服务帐户对证书私钥具有读取权限的屏幕截图。