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

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018

可以通过将其配置为将超文本传输协议安全 (HTTPS) 与安全套接字层 (SSL) 配合使用,从而增强Azure DevOps Server部署的安全性。 可以选择要求使用此协议(可最大程度地提高部署的安全性),也可以选择为除支持默认的协议 (HTTP) 外还支持具有 SSL 的 HTTPS。 如果使用 Visual Studio 2013 Release Management,即使无法将其配置为同时支持 HTTP 和具有 SSL 的 HTTPS,你也可以通过配置使用具有 SSL 的 HTTPS。

在选择一种配置之前,请查看此处描述的优势和劣势。 在确定最符合组织的安全需求的配置之后,请按照此主题中的步骤来配置你的部署。

本主题内容

除 HTTP 外还支持具有 SSL 的 HTTPS 的优势

如果将Azure DevOps Server部署配置为支持这两种协议,则已为具有 SSL 的 HTTPS 配置了计算机的用户将使用该协议进行连接,从而使部署更安全。 此外,针对 HTTP 部署计算机的用户仍能连接到部署。 虽然不应通过公共网络部署此配置,但在受控制的网络环境中继续支持 HTTP 连接能够提供下列优势:

  • 如果时间允许,可通过针对具有 SSL 的 HTTPS 配置客户端计算机来逐渐提高部署的安全性。 如果采取分阶段的方法,无需同时升级所有计算机,且未升级计算机的用户仍能连接到部署。

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

  • 采用 HTTP 进行 Web 服务之间的调用必须比采用具有 SSL 的 HTTPS 更快。 因此,对于性能要求的重要性超过安全风险的客户端计算机,可以继续支持 HTTP 连接。

要求所有连接使用具有 SSL 的 HTTPS 的优势

如果要求所有连接使用具有 SSL 的 HTTPS,即可获得下列优势:

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

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

支持或要求使用具有 SSL 的 HTTPS 的劣势

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

  • 可能会使目前的管理任务变得复杂化。 例如,在应用 Service Pack 或其他更新之前,可能需要重新配置部署来停止支持具有 SSL 的 HTTPS。

  • 必须不仅配置还需要管理证书颁发机构 (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 2013 配置 Release Management

  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 组。

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

  • 如果你的部署使用报告功能,则你必须是管理安全组的成员,或者具有分别为配置报告服务而设置的等效权限。

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

假设

此主题中的过程假定下列条件为 true:

  • 在安全的环境中安装和部署了数据层和应用层服务器,并根据安全性最佳实践进行配置。

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

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

获得证书

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

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

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

在证书颁发机构中登记之后,必须通过使用 IIS Manager 请求获得证书,或者在你部署中的下列每台服务器上安装证书:

  • 每台应用层服务器。
  • 运行 Azure DevOps 代理服务器的每个服务器(如果为部署配置了任何服务器)。
  • 作为生成控制器或生成代理运行 Team Foundation 生成服务的每个服务器(如果已为部署配置任何服务器)。
  • 运行 Reporting Services 的服务器(如果在部署中配置了一台这样的服务器)。

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

¹ 此处分别注明了客户端和服务器,但这只是本文档的一个惯例。 运行部署代理的任何计算机都需要安装该证书。

  1. 打开“Internet Information Services (IIS)管理器” 。

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

    打开 IIS 管理器,然后请求证书

    创建请求,然后完成请求

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

  3. 导入证书。

  4. 现在,你需要使用相应的设置配置将需要此证书的每个网站(Release Management 网站除外,你将在稍后进行配置)。 具体来说,你需要对下列网站执行此操作:

    • 默认网站
    • 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 (可选)

可以要求所有连接到 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. 通信中,请确保项目集合的 URL 使用正确的 HTTPS 地址和完整的服务器名称。

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

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

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

  7. “协议”中,选择 “HTTPS”。

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

    确保配置详细信息匹配

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

配置客户端计算机

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

重要

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

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

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

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

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

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

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

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

    Drive:\Users\UserName\AppData\Local\Microsoft\Team Foundation\4.0\Cache

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

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

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

    备注

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

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

配置 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 身份验证),请考虑下载并安装适用于 Git 的 Windows 凭据存储

配置 Git 的证书存储

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

  • 如上文所述,确保在计算机上安装和配置所需的证书。

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

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