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

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2013

备注

Azure DevOps Server 以前名为 Visual Studio Team Foundation Server。

你可以通过将 Azure DevOps Server 的部署配置为使用超文本传输协议安全 (HTTPS) 与安全套接字层 (SSL) 来增强其安全性。 可以选择要求使用此协议(可最大程度地提高部署的安全性),也可以选择为除支持默认的协议 (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 以及你可能已集成的任何其他组件,如 SharePoint 产品、Team Foundation build、Release Management 和 SQL Server Reporting Services。

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

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

  • 你需要具有管理员身份,才能对部署内的所有组件进行 HTTPS 和 SSL 配置。 如果你在分布式部署环境中工作,其中,各个组件的管理权限由不同的人所有(例如,SharePoint),则需要与他们进行协调,以便完成配置。

  • 具体而言,你必须属于 " team foundation 管理员" 组,并且必须属于 "应用层"、"数据层" 和 "Azure DevOps" 代理服务器上的 "管理员" 组,或者 "team foundation server"。

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

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

  • 如果你的部署使用 SharePoint 产品,则你必须属于承载 SharePoint 管理中心的服务器上的 "管理员" 组。 您还必须属于 " 场管理员 " 组。

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

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

假设

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

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

  • 为 Visual Studio 2013 安装了 Release Management。

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

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

获得证书

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

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

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

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

  • 每台应用层服务器。

  • 运行 Azure DevOps 代理服务器的每台服务器(如果在部署中配置了任何服务器)。

  • 作为生成控制器或生成代理运行 Team Foundation 生成服务的每台服务器(如果为部署配置了任何服务器)。

  • 运行 Release Management 服务器的每台服务器或发布环境中运行部署代理的任何服务器¹(如果 Release Management 是你的部署的一部分)。

  • 如果为部署配置了 SharePoint 产品,则运行 SharePoint 产品的每台服务器。

    备注

    将 SharePoint 站点配置为使用 HTTPS 和证书通常需要额外的步骤,如配置备用访问映射配置身份验证基础结构。 有关详细信息,请参考你的产品版本的最新 SharePoint 文档。

  • 运行 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 代理)

    • SharePoint 管理中心(如果你的部署使用 SharePoint)

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

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

    你必须为所有站点配置绑定

  6. 在 " 站点绑定" 中,选择 " 添加"。

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

  7. 在 " 类型 " 列表中,选择 " https"。

    在 " 端口" 中,键入其他端口号。

    重要

    SSL 连接的默认端口号为443,但你必须为以下每个站点分配一个唯一的端口号:默认网站、Azure DevOps Server、Azure DevOps Server Proxy (如果你的部署使用它) ,并 SharePoint 管理中心 (如果你的部署使用 SharePoint) 。

    应记录你配置的每个网站的 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. 如果你的部署使用 SharePoint 产品,请在管理控制台中选择 " SharePoint Web 应用程序"。 否则,请跳过接下来的六个步骤。

  8. SharePoint web 应用程序"的"名称"列表中,选择一个 Web 应用程序,然后选择"更改"。

    此时将打开 " SharePoint Web 应用程序设置" 页。

  9. 在 " Web 应用程序 url" 中,将 URL 更改为应用程序的 HTTPS 值。

  10. 在 " 管理中心 url" 中,更改管理中心网站 HTTPS 值的 URL。

  11. (可选) 在 友好名称 中,更改此值以反映此应用程序的 HTTPS 地址。

  12. 选择 “确定”

  13. 对部署中的每个 SharePoint Web 应用程序重复执行前面的 5 个步骤。

  14. 如果你的部署使用 Reporting Services,请在管理控制台中选择 " 报告"。 否则,请跳过此过程中的剩余步骤。

  15. 在 " 报表" 中,选择 " 编辑"。

    如果 " 脱机 " 对话框打开,请选择 "确定"

    此时将打开 " 报表 " 窗口。

  16. 选择 " 报表 " 选项卡。在 " 报表服务器的 url" 中,键入 Web 服务报表管理器 的 HTTPS Url,然后选择 "确定"

测试部署访问

你应该测试所做的更改是否能够按照你的预期正常工作。 此步骤是可选的,但我们强烈建议执行。

测试部署访问

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

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

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

配置部署,以要求使用具有 SSL 的 HTTPS(可选)

你可以要求到 Azure DevOps Server 应用层的所有连接都使用具有 SSL 的 HTTPS。 此附加的安全性是可选的,但建议执行该操作。

要求使用 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 Build Service,则必须在每个服务器的 受信任的根证书颁发机构安装证书。 有关详细信息,请参阅本主题前面部分获取证书和请求、安装和配置具有证书的网站。 控制器和代理均需要具有私钥的证书,以用于在 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. 在"生成服务属性" 对话框中,选择"启动 "。

Release Management 和 Azure DevOps Server

无论用于 Release Management Azure DevOps Server 的协议或是否Azure DevOps Server HTTPS,都可以使用 HTTPS 与 Azure DevOps Server 完全分离来部署 Azure DevOps Server。 但是,你决定Release Management,为 Release Management 创建安全部署的说明非常类似于此处为Azure DevOps Server。 最大的差异在于将 HTTPS 协议绑定到 Release Management 网站的过程,下面介绍了此过程。

若要使用 HTTPS 部署 Release Management,请使用下面的任务列表。 如果要使用 Release Management 配置Azure DevOps Server,请跳过可能已完成的任何任务,Azure DevOps Server配置。

  1. 获得证书 有关详细信息,请参阅 获取证书

  2. 配置 Release Management 服务器以使用 HTTPS。 请参阅下一部分,将Release Management 服务器配置为使用 HTTPS。

  3. 在运行 Release Management 客户端或 Microsoft 部署代理的任何计算机的受信任根存储中安装该证书。 有关详细信息,请参阅 下面的配置客户端计算机

  4. 打开任何防火墙。 安装证书后,请确保打开用于 SSL 通信的任何端口。 有关详细信息,请参阅 配置防火墙

  5. 测试。 不会配置 Release Management 服务器网站以供浏览,因此若要测试该网站是否可用,你应用将其连接到 Release Management 客户端、连接环境中的代理,然后进行发布。 有关详细信息,请参阅使用HTTPS 建立Release Management连接和管理发布

配置 Release Management 服务器以使用 HTTPS

Release Management 支持 HTTPS 或 HTTP 协议,但不同时支持这两种协议。 使用此过程将 HTTPS 协议绑定到 Release Management 网站。

  1. 在 Release Management 服务器中,选择 "HTTPS", 在 Web 服务端口中输入要用于 HTTPS 流量 端口号,然后选择"应用设置"。

    为 HTTPS 配置发布管理服务器

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

  3. 展开 *"ComputerName",*展开" 站点",打开"Release Management"的子Release Management,然后从"操作"窗格中选择"绑定"。

  4. "站点绑定"中,选择"添加"。

  5. 在"类型" 列表中,选择 "https"。

  6. "端口"中,键入其他端口号。 这只是完成该配置所需的临时端口号。

    添加临时端口

  7. "SSL 证书"中,选择将使用的证书,然后选择" 确定 "并关闭"绑定"页。

    你将看到原始 HTTP 绑定,以及你刚刚创建的 HTTPS 绑定。

  8. 选择原始 HTTP 绑定,然后选择"删除 "。

  9. 选择 HTTPS 绑定,然后选择"编辑 "。

  10. "端口"从步骤 6 中添加的临时值更改为在步骤 1 Release Management Server 中使用的端口号,然后选择 "确定" 和"关闭"。

    编辑临时端口

    在 IIS 的 Release Management 网站上绑定的 HTTPS 端口与你最初在 Release Management 服务器配置工具中输入的端口相匹配。

    IIS 中的端口与服务器中的端口匹配

将所有 Release Management 连接到 HTTPS

在运行 Release Management 客户端和 Microsoft 部署代理的所有计算机上安装证书后,你可以通过 SSL 将计算机连接到 Release Management 服务器。 如果Azure DevOps Server SSL 运行 HTTPS,则必须将 Azure DevOps Server 连接配置为使用 HTTPS。

首次Azure DevOps Server连接? 存在一些附加步骤和一些帐户权限要求。 有关详细信息,请参阅连接 Release Management Azure DevOps Server

使用 HTTPS 将 Release Management 客户端连接到 Release Management 服务器

  1. 启动 Release Management 客户端。

    提示

    如果你收到一条指示不再具有对该服务器的访问权限的错误消息,你可以重新安装 Release Management 客户端,也可以使用命令行工具来利用新端口和协议将该客户端连接到服务器。 有关详细信息,请参阅此 博客文章

  2. 选择 "管理",然后选择"设置"。

  3. "Release Management URL"中,选择"编辑"。

  4. 在"配置服务"对话框中,选择"HTTPS",输入 Release Management 服务器的完全限定域名和 SSL 端口,然后选择"确定 "。 系统将提示你重新启动该应用程序。

使用 HTTPS/SSL 连接客户端

使用 HTTPS 将 Microsoft 部署代理连接到 Release Management 服务器

  1. 启动 Microsoft 部署代理。

  2. Release Management 服务器 中,输入 Release Management 服务器的 URL,然后选择"应用设置"。 记住使用 HTTPS 协议、该服务器的完全限定域名和在 IIS 中设置的端口。

使用 HTTPS/SSL 连接代理

连接 Release Management使用 HTTPS Azure DevOps Server服务器

  1. 启动 Release Management 客户端。

  2. 选择 "管理",然后选择"管理 TFS"。

  3. 将连接协议更改为 HTTPS,必要时更新端口 (端口) "验证"。

连接 HTTPS/SSL Azure DevOps Server

配置客户端计算机

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

重要

对于同时运行 Azure DevOps Server 和一个或多个客户端的计算机,请勿Azure DevOps。

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

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

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

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

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

  2. 关闭所有打开的 Visual Studio。

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

    驱动器**\ :Users \** UserName \ AppData \ 本地 Microsoft Team Foundation \ \ \ 4.0 \ 缓存

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

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

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

    备注

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

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

配置 Git

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

有关 Git 网络操作如何Visual Studio 2013,请参阅此博客文章

提示

对于其他 Git 凭据管理任务(例如Windows身份验证),请考虑下载并Windows Credential Store Git 的凭据

配置 Git 的证书存储

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

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

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

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