使用 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 的证书。

    Screenshot that shows generating certificate in subject alternative name.

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

    1. 单击证书并安装它。

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

      Screenshot that shows selecting local machine.

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

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

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

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

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

        Screenshot that shows enabling remote access from intranet.

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

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

        Screenshot that shows selecting certificate.

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

      注意

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

      Screenshot that shows enabling with TLS/SSL certificate (Advanced).

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

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

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

        Screenshot that shows choosing certificate.

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

      Screenshot that shows verifying the remote access settings in Self-hosted Integration Runtime Configuration Manager step 1.

      Screenshot that shows verifying the remote access settings in Self-hosted Integration Runtime Configuration Manager step 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. 选择“完成”以安装该证书。

      Screenshot that shows install the certificate on all nodes.

  6. 疑难解答

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

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

        Screenshot that shows viewing certificates in MMC snap in.

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

        Screenshot that shows the certificate installed in Personal and Trusted Root Certification Authorities store.

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

      Screenshot that shows verifying the certificate has a private key and isn't expired.

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

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

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

        Screenshot that shows the Service account for the self-hosted integration runtime has read permission to the private keys of certificate.