为本地 Azure DevOps 设置具有安全套接字层 (SSL) 的 HTTPS

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

通过将 Azure DevOps Server 配置为将超文本传输协议安全(HTTPS)与安全套接字层(SSL)配合使用,可以增强 Azure DevOps Server 部署的安全性。 可以选择需要此协议,从而最大程度地提高部署的安全性,或者除了默认协议 HTTP 之外,还可以选择使用 SSL 支持 HTTPS。 如果使用 Visual Studio Release Management 2013,还可以将它配置为将 HTTPS 与 SSL 配合使用,但不能将其配置为支持 HTTP 和 HTTPS 和 SSL。

在选择配置之前,请查看此处所述的优点和缺点。 确定最符合组织安全需求的配置后,请按照本主题中的步骤配置部署。

本主题内容

除了支持 HTTPS 外,还支持使用 SSL 的 HTTPS 的优点

如果将 Azure DevOps Server 部署配置为支持这两种协议,则计算机已配置为使用 SSL 的 HTTPS 的用户将使用该协议进行连接,从而使部署更安全。 此外,为 HTTP 配置的计算机的用户仍可连接到部署。 尽管不应通过公用网络部署此配置,但可以通过继续在受控网络环境中支持 HTTP 连接来获得以下优势:

  • 可以通过将客户端计算机配置为使用 SSL 作为计划允许的 HTTPS 来增加部署的安全性。 如果采用分阶段方法,则无需同时升级所有计算机,并且尚未升级其计算机的用户仍可连接到部署。

  • 可以更轻松地配置和维护 Azure DevOps Server。

  • 从一个 Web 服务到另一个 Web 服务的调用比使用 SSL 的 HTTPS 更快。 因此,你可以继续支持来自客户端计算机的 HTTP 连接,其性能要求超过安全风险。

要求具有 SSL 的所有连接的 HTTPS 的优点

如果需要对所有连接使用 SSL 的 HTTPS,将获得以下优势:

  • 应用程序层、数据层和 Azure DevOps 客户端层之间的所有 Web 连接都更安全,因为它们需要证书。

  • 通过将证书配置为在预计项目阶段结束时过期,可以更轻松地控制访问。

支持或要求使用 SSL 的 HTTPS 的缺点

在将 Azure DevOps Server 配置为支持或要求使用 SSL 的 HTTPS 之前,应考虑以下缺点:

  • 可能会使正在进行的管理任务复杂化。 例如,可能需要重新配置部署以停止使用 SSL 支持 HTTPS,然后才能应用 Service Pack 或其他更新。

  • 你不仅必须配置,还必须管理证书颁发机构(CA)和证书信任。 可以在 Windows Server 2003 和 Windows Server 2008 中使用证书服务,但你可能不想投入部署安全公钥基础结构(PKI)所需的时间和资源。

  • 必须花费大量时间设置和测试这些配置之一,并且部署故障排除将变得更加困难。

  • 如果继续支持这两种协议,如果未适当保护 Azure DevOps 的应用程序层,则外部连接可能不会加密。

  • 如果需要使用 SSL 的 HTTPS,部署的性能将变慢。

将部署配置为支持或要求使用 SSL 的 HTTPS

本主题中的过程介绍一个过程,用于请求、颁发和分配 Azure DevOps Server 中的 SSL 连接所需的证书。 如果使用的软件不同于本主题所描述的软件,则可能需要执行不同的步骤。 若要支持与 Azure DevOps Server 部署的外部连接,还必须在 Internet Information Services(IIS)中启用基本身份验证、摘要式身份验证或两者。

按照本主题中的过程操作,你将完成以下任务:

  1. 获取用于部署 Azure DevOps Server 及其使用网站的证书。

  2. 安装并分配证书。

  3. 配置 Azure DevOps Server。

  4. 配置 Team Foundation Build。

  5. 配置 Visual Studio Release Management 2013

  6. 配置客户端计算机。

先决条件

若要执行本主题中的过程,必须先满足以下要求:

  • 必须安装 Azure DevOps 的数据和应用程序层中的逻辑组件,尽管在 Azure DevOps Server 本身的情况下,不一定进行配置。 这些层包括 IIS、SQL Server 以及你可能集成的任何其他组件,例如 Team Foundation Build 和 SQL Server Reporting Services。

    本主题中的过程是指在 Azure DevOps 的应用程序和数据层中运行逻辑组件的服务器或服务器。 应用程序和数据层可能在同一服务器或多台服务器上运行,如 Azure DevOps Server 安装指南中所述

  • 必须具有一个证书颁发机构(CA),可以从中颁发证书,或者已订阅具有受信任链的第三方认证机构。 本主题假定你使用证书服务作为 CA,但你可以使用为部署配置的任何 CA,或者来自受信任的第三方证书颁发机构的证书。 如果没有证书颁发机构,可以安装证书服务并配置一个证书服务。 有关详细信息,请参阅Microsoft网站上的以下文档集之一:

  • 你需要是管理员才能为 HTTPS 和 SSL 配置部署的所有组件。 如果在分布式部署中工作,其中不同人员对各个组件具有管理权限,则需要与这些人协调才能完成配置。

  • 具体而言,必须属于 Team Foundation 管理员 组,并且必须属于 应用程序层、数据层和 Team Foundation 的 Azure DevOps 代理服务器或服务器的管理员 组。

  • 若要配置生成服务器,必须属于 该服务器上的 Administrators 组。

  • 若要配置发布管理,你必须属于托管发布管理服务器的服务器上的管理员组,并且是发布管理中发布管理器角色的成员

  • 如果部署使用报告,则必须是管理安全组的成员,或者具有单独设置用于配置 Reporting Services 的等效权限。

    有关权限的详细信息,请参阅 Azure DevOps Server 的权限参考。

假设

本主题中的过程假定满足以下条件:

  • 数据层和应用程序层服务器或服务器已安装并部署在安全环境中,并根据安全最佳做法进行配置。

  • 你熟悉如何配置和管理 PPI 以及请求、颁发和分配证书。

  • 你熟悉开发环境的网络拓扑,并且熟悉配置网络设置、IIS 和 SQL Server。

获取证书

在将 Azure DevOps Server 配置为将 HTTPS 与 SSL 配合使用之前,必须获取并安装部署中服务器的服务器证书。 若要获取服务器证书,必须安装和配置自己的证书颁发机构,或者必须使用你信任的外部组织的证书颁发机构(第三方证书)。

有关如何安装证书颁发机构的详细信息,请参阅Microsoft网站上的以下主题:

使用证书请求、安装和配置网站

在证书颁发机构中登记后,必须使用 IIS 管理器请求证书,或者必须在部署中的每个服务器上手动安装证书:

  • 每个应用程序层服务器。
  • 运行 Azure DevOps 代理服务器的每个服务器(如果有)都已针对部署进行配置。
  • 将 Team Foundation 生成服务作为生成控制器或生成代理运行的每个服务器(如果有)都已针对部署进行配置。
  • 如果为部署配置了 Reporting Services,则运行 Reporting Services 的服务器。

此外,部署中的客户端计算机需要在证书链中注册并请求所需的证书。 如果使用发布管理,这包括运行发布管理客户端的任何计算机,以及任何在发布环境中运行部署代理的客户端} 。 如果一个或多个项目使用 Git 进行版本控制,则这些项目中的用户还必须在其计算机上配置 Git 来识别和使用客户端证书。 有关如何从特定 CA 请求客户端证书的信息,请参阅该证书颁发机构的文档。

此处单独调用客户端和服务器,但这只是本文档的约定。 运行部署代理的任何计算机都需要安装证书。

  1. 打开“Internet 信息服务 (IIS) 管理器”

  2. 展开服务器,导航到 服务器证书,并创建并完成证书请求。

    打开 IIS 管理器并请求证书

    创建请求,然后完成该请求

    有关详细信息,请参阅 在 IIS 中配置服务器证书。

  3. 导入证书。

  4. 现在,你需要配置需要此证书的每个网站,其中包含相应的设置(发布管理网站除外,稍后将对其进行配置)。 具体而言,需要针对以下每个网站执行此操作:

    • 默认网站
    • Azure DevOps Server
    • Azure DevOps Server 代理(如果部署使用它)

    在承载要配置的网站的每个服务器上,打开 Internet Information Services (IIS) 管理器

  5. 展开 ComputerName,展开“站点”,打开要配置的网站(例如 Azure DevOps Server)的子菜单,然后从“操作”窗格中选择“绑定”。

    必须为所有站点配置绑定

  6. “网站绑定”中,选择“ 添加”。

    此时会显示“添加站点绑定”对话框。

  7. 类型 列表中,选择 https

    “端口”中,键入其他端口号。

    重要

    SSL 连接的默认端口号为 443,但必须为以下每个站点分配唯一的端口号:默认网站、Azure DevOps Server 和 Azure DevOps Server 代理(如果部署使用它)。 应记录所配置的每个网站的 SSL 端口号。 需要在 Azure DevOps 的管理控制台中指定这些数字。

    SSL 证书中,选择导入的证书,然后选择“ 确定 ”并关闭“绑定”页。

    确保选择唯一的端口号

  8. 要配置的网站主页上,打开“功能”视图。

  9. 在 IIS,选择“身份验证”。

  10. 选择要配置的身份验证方法,打开其子菜单,然后在方法上启用、禁用或执行其他配置,尽可能满足安全需求。 例如,如果要禁用匿名身份验证,可以选择匿名身份验证方法,并从“操作”菜单中选择“禁用”。

    选择方法,然后选择要执行的操作

  11. 完成配置后,重启 Web 服务。

配置防火墙

必须将防火墙配置为允许通过刚刚在 IIS 中指定的 SSL 端口的流量。 有关详细信息,请参阅防火墙的文档。

重要

请确保测试从另一台计算机指定的端口上的流量。 如果无法访问默认网站或 Web 门户,请仔细检查在 IIS 中为这些网站指定的端口设置,并确保防火墙已正确配置为允许这些端口上的流量。

配置 SQL Server Reporting Services

如果部署使用报告,则必须将 SQL Server Reporting Services 配置为支持使用 SSL 的 HTTPS,并使用在 IIS 中为 Azure DevOps Server 指定的端口。 否则,报表服务器将无法为部署正确运行。 有关详细信息,请参阅 为安全套接字层 (SSL) 连接配置报表服务器。

提示

如果部署不使用报告,则可以跳过此过程。

为 Azure DevOps Server 配置 HTTPS

按照以下步骤使用在 IIS 中为默认网站和 Azure DevOps Server 网站配置的 HTTPS 端口和值配置 Azure DevOps Server 部署。

将 Azure DevOps Server 重新配置为使用或需要 HTTPS

  1. 打开 Azure DevOps 的管理控制台并浏览到应用程序层节点。

  2. 应用程序层摘要中,选择“ 更改 URL”。

    此时会 打开“更改 URL ”窗口。

  3. 通知 URL 中,键入为 IIS 中的 Azure DevOps Server 网站配置的 HTTPS URL。

    例如,你可能已将网站配置为使用端口 444。 在本例中,键入 https:// ServerName:444/tfs。 请确保使用服务器的完全限定域名,而不是 localhost。

    在地址中指定 HTTPS、服务器和端口

  4. 选择“ 测试”。 如果测试未通过,请不要选择 “确定 ”。 返回并确保输入了正确的 URL 和端口信息,所有防火墙都配置为允许这些端口上的流量,并且站点在 IIS 管理器中可用并运行。

  5. 若要要求 HTTPS,请选择“在服务器 URL 中使用”,然后键入为 Azure DevOps Server 网站配置的 HTTPS URL。

    请确保使用服务器的完全限定域名,而不是 localhost。

  6. 选择“测试,然后选择“确定”(如果测试通过)。

  7. 如果部署使用 Reporting Services,请在管理控制台中选择“ 报告”。 否则,请跳过此过程的其余部分。

  8. “报告”中,选择“ 编辑”。

    如果打开“脱机”对话框,请选择“确定”。

    此时会打开“ 报告 ”窗口。

  9. 选择“报表”选项卡。在报表服务器的 URL 中,键入 Web 服务和报表管理器HTTPS URL,然后选择“确定”。

测试对部署的访问

应测试更改是否按预期运行。 此步骤是可选的,但强烈建议执行此步骤。

测试对部署的访问

  1. 在未托管应用程序层的计算机上,打开 Web 浏览器并导航到团队主页。

  2. 验证是否可以从 Web 门户访问团队和项目,包括管理页。

  3. 如果无法通过 Web 门户访问部署,请查看刚刚完成的步骤,并确保正确进行了所有配置更改。

将部署配置为要求使用 SSL 的 HTTPS (可选)

可以要求与 Azure DevOps Server 应用程序层建立的所有连接才能将 HTTPS 与 SSL 配合使用。 此附加安全性是可选的,但建议这样做。

要求 SSL 连接

  1. 在承载要配置的网站的服务器上,选择“开始”,选择“管理工具”,然后选择“Internet Information Services”(IIS)管理器

  2. 按照 IIS 版本的相应步骤操作:

    对于使用 IIS 7.0 的部署:

    1. 展开 ComputerName,展开 网站,然后选择要配置的网站。

    2. 在该网站的主页上,选择 “SSL 设置”。

    3. “SSL 设置” 窗格中,选中“ 需要 SSL ”复选框。

      (可选) 选中“需要 128 位 SSL ”复选框。

    4. 在客户端证书,根据部署的安全要求,选择“忽略”、“接受”或“要求”。

    5. “操作”中,选择“ 应用”。

    6. 对需要 SSL 的每个网站重复这些步骤。

在生成服务器上安装证书

如果在一个或多个服务器上安装了 Team Foundation 生成服务,则必须在每个服务器的受信任的根证书颁发机构存储中安装证书。 有关详细信息,请参阅本主题前面部分使用证书获取证书和请求、安装和配置网站。 控制器和代理都需要一个具有私钥的证书,用于在 HTTPS 连接中标识自身。

注意

若要通过 SSL 执行生成,证书必须安装在生成控制器和生成代理上的受信任根存储中。

更新生成配置

若要为 SSL 连接配置 Team Foundation Build,必须将生成服务配置为使用为应用程序层配置的 HTTPS URL 以及生成配置支持的集合。 必须为部署中的每个生成配置配置配置此 URL。

更改生成配置以使用 HTTPS

  1. 在托管要配置的生成配置的服务器上,打开 Team Foundation 的管理控制台。

  2. 在 Team Foundation,展开服务器的名称,然后选择“生成配置”。

    此时会显示“ 生成配置 ”窗格。

  3. 在服务配置下,选择“ 停止”,然后选择“ 属性”。

    此时 将打开“生成服务属性 ”对话框。

  4. Communications 中,确保项目集合的 URL 使用正确的 HTTPS 地址和完整服务器名称。

  5. 在本地 生成服务终结点(传入)中,选择“ 更改”。

    此时 将打开“生成服务终结点 ”对话框。

  6. 在“终结点详细信息”,验证端口号是否与配置详细信息匹配。

  7. 在协议,选择 HTTPS

  8. SSL 证书 列表中,选择已安装并配置为用于此部署的证书,然后选择“ 确定”。

    确保配置详细信息匹配

  9. “生成服务属性 ”对话框中,选择“ 开始”。

配置客户端计算机

在用户访问 Azure DevOps 的每个客户端计算机上,必须在本地安装证书,并为从该计算机访问 Azure DevOps 的任何用户清除客户端缓存。 否则,用户将无法从该计算机连接到 Azure DevOps。 有关详细信息,请参阅 “管理受信任的根证书”。

重要

对于同时运行 Azure DevOps Server 和 Azure DevOps 的一个或多个客户端的计算机,请不要遵循此过程。

在客户端计算机上安装证书

  1. 使用属于该计算机上的 Administrators 组的帐户登录到计算机。

  2. 将证书安装到本地计算机的“受信任的根证书颁发机构”文件夹中。

清除客户端计算机上的缓存

  1. 使用要清除其缓存的用户的凭据登录到计算机。

  2. 关闭 Visual Studio 的任何打开实例。

  3. 在浏览器窗口中,打开以下文件夹:

    驱动器 :\Users\ UserName \AppData\Local\Microsoft\Team Foundation\4.0\Cache

  4. 删除缓存目录的内容。 请确保删除所有子文件夹。

  5. 选择“开始”,选择运行”,键入 devenv /resetuserdata,然后选择“确定”。

  6. 对从该计算机访问 Team Foundation 的每个用户的帐户重复这些步骤。

    注意

    你可能想要将清除缓存的说明分发给所有 Azure DevOps 用户,以便他们可以自行清除缓存。

将客户端计算机连接到重新配置部署

  • 在 Visual Studio 中,使用新的 HTTPS URL 连接到 Azure DevOps Server。

    有关详细信息,请参阅 连接到 Azure DevOps Server 中的项目。

配置 Git

默认情况下,使用 Git 进行版本控制的项目将无法验证为 Azure DevOps Server 配置的 SSL 证书。 这是因为与 Azure DevOps Server 和 Visual Studio 不同,Git 无法识别 Windows 证书存储。 相反,它将 OpenSSL 用于其证书存储。 若要为配置 SSL 的项目使用 Git 存储库,需要使用 TFS 2013 部署认证链根目录中的证书配置 Git。 这是仅适用于 Git 存储库项目的客户端配置任务。

有关 Git 网络操作在 Visual Studio 2013 中的工作原理的详细信息,请参阅此 博客文章

提示

对于其他 Git 凭据管理任务(例如Windows 身份验证),请考虑下载并安装适用于 GitWindows 凭据存储。

为 Git 配置证书存储

  • 使用属于该计算机上的 Administrators 组的帐户登录到计算机。

  • 确保计算机上已安装并配置了所需的证书,如上所述。

  • 在受支持的 Web 浏览器中,将 Azure DevOps Server 根证书提取为 base64 编码的 X.509 CER/PEM 文件。

  • 创建 Git 根证书存储的专用副本,并将其添加到存储的专用用户副本。