为 Team Foundation Server 设置 HTTPS 和安全套接字层 (SSL)
通过将 Visual Studio Team Foundation Server (TFS) 使用的服务配置为使用具有安全套接字层 (SSL) 的安全超文本传输协议 (HTTPS),从而增强其部署的安全性。 可以将部署配置为要求使用此协议(可最大程度地提高部署的安全性),或者配置为除支持默认的协议 (HTTP) 外还支持具有 SSL 的 HTTPS。 选择配置之前,应仔细了解此主题中描述的相关优势和劣势。 确定最符合您所在组织的安全性需求的配置之后,可按照此主题中的步骤来配置部署。
主题内容
概念性信息
除 HTTP 外还支持具有 SSL 的 HTTPS 的优势
要求所有连接使用具有 SSL 的 HTTPS 的优势
支持或要求使用具有 SSL 的 HTTPS 的劣势
先决条件
假设
服务器配置
获得证书
请求证书
安装并分配证书
配置防火墙
配置 SQL Server Reporting Services
配置部署,以实现除支持 HTTP 外还支持具有 SSL 的 HTTPS
可选配置任务
测试部署访问(可选)
配置部署,以要求使用具有 SSL 的 HTTPS(可选)
生成配置
在生成服务器上安装证书
更新生成配置
客户端配置
- 配置客户端计算机
除 HTTP 外还支持具有 SSL 的 HTTPS 的优势
如果将 TFS 部署配置为支持两种协议,针对具有 SSL 的 HTTPS 配置计算机的用户会使用此协议进行连接,这会让部署更加安全。 此外,针对 HTTP 部署计算机的用户仍能连接到部署。 虽然不应通过公共网络部署此配置,但在受控制的网络环境中继续支持 HTTP 连接能够提供下列优势:
如果时间允许,可通过针对具有 SSL 的 HTTPS 配置客户端计算机来逐渐提高部署的安全性。 如果采取分阶段的方法,无需同时升级所有计算机,且未升级计算机的用户仍能连接到部署。
配置和维护 Team Foundation Server 会更加轻松。
采用 HTTP 进行 Web 服务之间的调用必须比采用具有 SSL 的 HTTPS 更快。 因此,对于性能要求的重要性超过安全风险的客户端计算机,可以继续支持 HTTP 连接。
要求所有连接使用具有 SSL 的 HTTPS 的优势
如果要求所有连接使用具有 SSL 的 HTTPS,即可获得下列优势:
Team Foundation 的应用层、数据层和客户端层之间的所有 Web 连接都更加安全,因为它们要求使用证书。
可以通过将证书配置为预期在项目阶段结束时过期来更轻松地控制访问。
支持或要求使用具有 SSL 的 HTTPS 的劣势
在将 TFS 配置为支持或要求使用具有 SSL 的 HTTPS 之前,应考虑下列劣势:
可能会使目前的管理任务变得复杂化。 例如,在应用 Service Pack 或其他更新之前,可能需要重新配置部署来停止支持具有 SSL 的 HTTPS。
必须不仅配置还需要管理证书颁发机构 (CA) 和证书信任。 可以使用 Windows Server 2003 和 Windows Server 2008 中的证书服务,但是需要花费时间和资源来部署安全的公钥基础结构 (PKI)。
必须花费大量时间来设置和测试这些配置,且您的部署的故障排除会变得更加困难。
如果继续支持两个协议,则当未适当保护 Team Foundation 的应用层安全时,可能不会加密外部连接。
如果要求使用具有 SSL 的 HTTPS,部署的性能会变慢。
配置部署以支持或要求使用具有 SSL 的 HTTPS
此主题中的过程描述了 Team Foundation Server 中的 SSL 连接所需的请求、发行和指派证书的一个过程。 如果使用与此主题中描述的软件不同的软件,则可能需要执行不同的步骤。 若要支持与 TFS 部署进行外部连接,还必须在 Internet Information Services (IIS) 中启用基本身份验证和/或摘要式身份验证。
按照本主题中的过程,您将完成以下主要任务:
获得 Team Foundation Server 部署及其使用的网站的证书。
安装并分配证书。
配置 Team Foundation Server。
配置 Team Foundation Build。
配置客户端计算机。
先决条件
若要执行本主题中的过程,必须首先满足下列要求:
必须安装 Team Foundation 的数据层和应用层逻辑组件并保证其能够正常工作。 这些层包括 IIS、SQL Server、SharePoint 产品、Team Foundation Build 和 SQL Server Reporting Services(如果您的部署包含这些组件)。 此主题中的过程引用运行 Team Foundation 的应用层中的逻辑组件的服务器(作为 Team Foundation 的应用层服务器)。 此主题中的过程引用运行 Team Foundation 的数据层中的逻辑组件的服务器(作为 Team Foundation 的数据层服务器)。 该应用程序和数据层可能在同一台或多台服务器上运行。 有关更多信息,请参见安装 Team Foundation Server 和 Visual Studio ALM。
必须有可颁发证书的证书颁发机构 (CA)。 此主题假定您使用证书服务作为您的 CA,但是您可以使用您为您的部署配置的任意 CA。 如果没有证书颁发机构,则可以安装证书服务并配置一个证书颁发机构。 有关更多信息,请参见 Microsoft 网站上的以下文档集之一:
对于 Windows Server 2003:证书服务
对于 Windows Server 2008:Active Directory 证书服务和公钥管理
需要的权限
要完成这些过程,您必须属于**“Team Foundation 管理员”组以及 Team Foundation 的应用层和数据层服务器的“管理员”** 组。 要配置生成服务器,您必须属于该服务器上的**“管理员”组。 如果您的部署使用 SharePoint 产品,您必须属于承载 SharePoint 管理中心的服务器上的“管理员”组。 您还必须属于“场管理员”**组。 有关权限的更多信息,请参见 Team Foundation Server 权限。
假设
此主题中的过程假定下列条件为 true:
在安全的环境中安装和部署了数据层和应用层服务器,并根据安全性最佳实践进行配置。
您熟悉如何配置和管理 PKI,以及请求、颁发和分配证书。 有关更多信息,请参见 Microsoft 网站上的以下页面:公钥基础结构。
您拥有开发环境网络拓扑的操作知识,并熟悉网络设置、IIS 与 SQL Server 的配置。
获得证书
在将 TFS 配置为使用具有 SSL 的 HTTPS 之前,必须为您部署中的服务器获得并安装服务器证书。 要获得服务器证书,必须安装并配置您自己的证书颁发机构,或者使用您信任的外部组织提供的证书颁发机构。
有关如何安装证书颁发机构的更多信息,请参见 Microsoft 网站上的下列主题:
对于 Windows Server 2003:证书服务
对于 Windows Server 2008:Active Directory 证书服务和公钥管理
请求证书
在证书颁发机构中登记之后,必须通过使用 IIS Manager 请求获得证书,或者在您部署中的下列每台服务器上安装证书。
每台应用层服务器。
运行 Team Foundation Server Proxy 的每台服务器(如果在部署中配置了服务器)。
作为生成控制器或生成代理运行 Team Foundation Build Service的每台服务器(如果在部署中配置了服务器)。
运行 SharePoint 产品 的每台服务器(如果在部署中配置了 SharePoint 产品)。
运行 Reporting Services 的服务器(如果在部署中配置了一台这样的服务器)。
请求 IIS 中的证书
依次选择**“开始”、“管理工具”和“Internet Information Services (IIS)管理器”**。
展开**“网站”或“站点”**,然后导航至您希望请求证书的网站。
例如,要请求应用层服务器证书,可导航至**“Team Foundation Server”。 例如,要请求代理服务器证书,可导航至“Microsoft Team Foundation Server Proxy”**。
按照 IIS 版本的相应说明,请求或创建能够满足您组织的安全性需求的服务器证书:
如果使用的是 IIS 7.0,则准备 IIS 7.0 的服务器证书、指定请求名称、下载证书,并将其保存至服务器上的安全位置。
有关更多信息,请参见配置 IIS 7.0 中的服务器证书。
安装并分配证书
将 SSL 用于 TFS 之前,必须在 TFS 使用的网站上安装服务器证书,例如下面列表中的网站:
默认网站
Team Foundation Server
Microsoft Team Foundation Server Proxy
SharePoint 管理中心
安装证书之后,必须将其显式绑定或分配至每个网站,启用您希望用于每个网站的身份验证方法,然后为每个网站配置 HTTPS。
根据您的部署配置,您可能需要在多台计算机上安装和配置证书。 例如,您的部署可能包括应用层服务器中不同计算机上的 Team Foundation Build 和 SharePoint 产品。 在这种情况下,您必须在承载 SharePoint 产品的服务器上和承载生成控制器和生成代理的计算机上都安装和配置服务器证书。
安装服务器证书
按照下列步骤,安装您希望用于 TFS 部署的服务器证书。
在网站上安装服务器证书
在承载您希望配置的网站的服务器上,选择**“开始”,选择“管理工具”,然后选择“Internet Information Services (IIS)管理器”**。
对应您的 IIS 版本执行步骤:
如果使用的是 IIS 7.0,从**“服务器证书”**窗格中导入服务器证书。
有关更多信息,请参见导入服务器证书 (IIS 7)。
对于您的部署使用的网站,启用身份验证方法、启用 HTTPS 和指定证书
按照这些步骤,可以设置您希望使用的身份验证方法,并对您的部署使用的网站在 IIS 中启用 HTTPS。 这些网站可能承载在单独的服务器上。 对于前面过程中配置的每个网站,必须执行这些步骤。
配置 HTTPS 之后,必须从您配置的每个网站的绑定列表中移除 HTTP,从而提高部署的安全性。
根据您的证书层次结构和公钥基础结构,还应为客户端证书身份验证配置 IIS。 有关更多信息,请参见 Certificate Services(证书服务)和 Certificates(证书).
SharePoint 产品部署可能需要其他配置,例如用于确保 HTTPS、SSL 和证书正常工作的备用访问映射和表单身份验证。 有关更多信息,请参见每位 SharePoint 管理员都需要了解的备用访问映射知识、SharePoint 产品和技术中的表单身份验证以及您的 SharePoint 产品版本的配置主题:
设置 HTTPS 和指定证书
在承载您希望配置的网站的服务器上,选择**“开始”,选择“管理工具”,然后选择“Internet Information Services (IIS)管理器”**。
执行 IIS 版本的步骤集:
对于使用 IIS 7.0 的部署:
展开“计算机名称”,“网站”,为您希望配置的网站打开子菜单,然后选择**“编辑绑定”**。
在**“站点绑定”中,选择“添加”**。
此时将出现**“添加站点绑定”**对话框。
在**“类型”列表中,选择“https”**。
(可选)。在**“端口”**中,键入另一个端口号。
重要
SSL 连接的默认端口号为 443,但是必须为下列每个站点分配一个唯一的端口号:默认网站、Team Foundation Server、Microsoft Team Foundation Server Proxy(如果部署使用代理)以及 SharePoint 管理中心。
应记录为每个网站配置的 SSL 端口号,因为您需要在管理控制台中为 Team Foundation 指定这些端口号。
在**“SSL 证书”中,选择您导入的证书,然后选择“确定”**。
在**“站点绑定”中,选择“关闭”**。
在您配置的网站的**“主页”中,打开“功能”**视图。
在**“IIS”中,选择“身份验证”**。
选择您希望配置的身份验证方法,打开其子菜单,然后选择**“启用”、“禁用”或“编辑”**来启用、禁用或执行对该方法的其他配置。
配置防火墙
必须将防火墙配置为允许流量通过您刚在 IIS 中指定的 SSL 端口。 有关详细信息,请参阅防火墙文档。
配置 SQL Server Reporting Services
如果部署使用报告,必须将 SQL Server Reporting Services 配置为支持具有 SSL 的 HTTPS 以及对 Team Foundation Server 使用您在 IIS 中指定的端口。 否则,报表服务器无法在您的部署中正常运行。 有关更多信息,请参见配置报表服务器用于安全套接字层 (SSL) 连接。
提示
如果您的部署不使用报告,则可跳过此过程。
配置部署
对于默认网站和 Team Foundation Server 网站,按照这些步骤来使用您在 IIS 中配置的 HTTPS 端口和值配置您的部署。
重新配置 Team Foundation Server
打开 Team Foundation 的管理控制台。
有关更多信息,请参见打开 Team Foundation 管理控制台。
在**“Team Foundation”下,展开服务器的名称,然后选择“应用层”**。
在**“应用层摘要”中,选择“更改 URL”**。
**“更改 URL”**窗口随即打开。
在**“通知 URL”**中,键入在 IIS 中为 Team Foundation Server 网站配置的 HTTPS URL。
例如,您可能已将此网站配置为使用端口 443。 因此,键入 https://服务器名称:443/tfs。 确保使用服务器的完全限定域名而不是 localhost。
选择**“测试”,如果测试通过则选择“确定”**。
如果要求使用 HTTPS,在**“服务器 URL”中选择“使用”**,然后键入为 Team Foundation Server 网站配置的 HTTPS URL。
确保使用服务器的完全限定域名而不是 localhost。
选择**“测试”,如果测试通过则选择“确定”**。
打开 Team Foundation Server 的 web.config 文件中所有纯文本编辑器,如“记事本”。 默认情况下,此文件位于以下目录:%PROGRAMFILES%\Microsoft Team Foundation Server 11.0\Application Tier\Message Queue\web.config。
从该文件中删除以下终结点:
<!-- An empty relative address means the endpoint will pick up the base address of the svc file -->
<endpoint address=""
binding="customBinding"
bindingConfiguration="TfsSoapBinding"
contract="Microsoft.TeamFoundation.Framework.Server.WebServices.MessageQueueWebService" />
<!-- An empty relative address means the endpoint will pick up the base address of the svc file -->
<endpoint address=""
binding="customBinding"
bindingConfiguration="TfsSoapBinding"
contract="Microsoft.TeamFoundation.Framework.Server.WebServices.MessageQueueWebService2" />
导航到 <system.serviceModel> 部分,并将以下协议映射:
<protocolMapping>
<remove scheme="http" />
<add scheme="http" binding="customBinding" bindingConfiguration="TfsSoapBinding"/>
<add scheme="https" binding="customBinding" bindingConfiguration="TfsSoapBindingHttps"/>
</protocolMapping>
在相同 <system.serviceModel>部分中,将以下绑定添加到 <customBinding>:
<binding name="TfsSoapBindingHttps">
<textMessageEncoding messageVersion="Soap12WSAddressing10" />
<httpsTransport authenticationScheme="IntegratedWindowsAuthentication" manualAddressing="true" />
</binding>
保存并关闭文件。
如果您的部署使用 SharePoint 产品,在管理控制台中选择**“SharePoint Web 应用程序”**。
在**“SharePoint Web 应用程序”的“名称”列表中,选择一个 Web 应用程序,然后选择“更改”**。
将会打开**“SharePoint Web 应用程序设置”**页面。
在**“Web 应用程序 URL”**中,更改该应用程序 HTTPS 值的 URL。
在**“管理中心 URL”**中,更改管理中心网站 HTTPS 值的 URL。
(可选)在**“友好名称”**中,更改该值以反映该应用程序的 HTTPS 地址。
选择**“确定”**。
对部署中的每个 SharePoint Web 应用程序重复执行前面的 5 个步骤。
如果您的部署使用 Reporting Services,在管理控制台中选择**“报告”**。
在**“报告”中,选择“编辑”**。
如果**“转为脱机”对话框打开,则选择“确定”**。
此时会打开**“报告”**窗口。
选择**“报告”选项卡。 在“报表服务器的 URL”中,键入“Web 服务”和“报表管理器”** 的 HTTPS URL,然后选择**“确定”**。
测试部署访问(可选)
可以测试变更是否能够按照您的预期正常工作。 此步骤是可选的,但建议执行该操作。
测试部署访问
在承载应用层的服务器上,打开 Web 浏览器。
在地址栏中,键入用于通过 Team Web Access 连接部署的 URL。
备注
可以在 Team Foundation 管理控制台的“应用层”节点中找到此 URL。
验证是否能够通过 Team Web Access 访问您的团队项目集合以及项目。
如果无法通过 Team Web Access 访问您的部署,查看您刚完成的步骤并确保已正确完成所有配置更改。
配置部署,以要求使用具有 SSL 的 HTTPS(可选)
可以要求部署的所有连接使用具有 SSL 的 HTTPS。 此附加的安全性是可选的,但建议执行该操作。
要求使用 SSL 连接
在承载您希望配置的网站的服务器上,选择**“开始”,选择“管理工具”,然后选择“Internet Information Services (IIS)管理器”**。
针对您的 IIS 版本执行相应的步骤:
对于使用 IIS 7.0 的部署:
展开“计算机名称”、“网站”,然后选择您希望配置的网站。
在该网站的主页上,选择**“SSL 设置”**。
在**“SSL 设置”窗格中,选中“需要 SSL”**复选框。
(可选)选中**“需要 128 位 SSL”**复选框。
在**“客户端证书”中,根据部署的安全性要求,选择“忽略”、“接受”或“需要”**。
在**“操作”中,选择“应用”**。
对于您希望要求使用 SSL 的每个网站,重复这些步骤。
在生成服务器上安装证书
如果在一台或多台服务器上安装了 Team Foundation Build Service,必须在每台服务器的受信任的根证书颁发机构存储区中安装证书。 有关更多信息,请参见本主题前面介绍的获得证书和安装并分配证书。 控制器和代理均需要具有私钥的证书,以用于在 HTTPS 连接中进行标识。
备注
要通过 SSL 执行生成,必须在生成控制器和生成代理上的受信任根存储区中安装此证书。
更新生成配置
要配置 SSL 连接的 Team Foundation Build,必须将生成服务配置为使用为应用层配置的 HTTPS URL 以及生成配置支持的集合。 必须对配置中的每个生成配置来配置此 URL。
更改生成配置以使用 HTTPS
在承载要配置的生成配置的服务器上打开 Team Foundation 的管理控制台。
在**“Team Foundation”下,展开服务器的名称,然后选择“生成配置”**。
此时将出现**“生成服务配置”**窗格。
在服务配置下,选择**“停止”,然后选择“属性”**。
此时将打开**“生成服务属性”**对话框。
在**“通信”**中,确保团队项目集合的 URL 使用了正确的 HTTPS 地址和完整服务器名称。
在**“本地生成服务终结点(传入)”中,选择“更改”**。
此时将打开**“生成服务终结点”**对话框。
在**“终结点详细信息”**中,验证端口号是否与您的配置详细信息匹配。
在**“协议”中,选择“HTTPS”**。
在**“SSL 证书”列表中,选择您安装并配置用于此部署的证书,然后选择“确定”**。
在**“生成服务属性”对话框中,选择“启动”**。
配置客户端计算机
在用户用于访问 Team Foundation 的每台客户端计算机上,必须在本地安装证书,并针对从该计算机访问 Team Foundation 的任意用户来清除客户端缓存。 否则,用户将无法从该计算机连接到 Team Foundation。 有关更多信息,请参见管理受信任的根证书。
重要
对于运行 Team Foundation Server 以及 Team Foundation 的一个或多个客户端的计算机,请勿按照此过程操作。
在客户端计算机上安装证书
使用计算机上**“管理员”**组的帐户登录计算机。
对于本地计算机,将证书安装到受信任的根证书颁发机构文件夹中。
有关更多信息,请参见操作系统和证书颁发机构的文档。
清除客户端计算机上的缓存
使用要清除其缓存的用户的凭据登录到计算机。
关闭所有打开的 Visual Studio 实例。
在浏览器窗口中,打开下列文件夹:
驱动器**:\Users\用户名\AppData\Local\Microsoft\Team Foundation\4.0\Cache**
删除 Cache 目录的内容。 确保删除所有子文件夹。
单击**“开始”,单击“运行”,键入 devenv /resetuserdata,然后单击“确定”**。
对于从该计算机访问了 Team Foundation 的每位用户的帐户,重复这些步骤。
备注
可以将有关清除缓存的说明分发给所有 Team Foundation 用户,使他们能够自行清除缓存。
将客户端计算机连接到重新配置的部署
在 Visual Studio 中,使用新的 HTTPS URL 连接到 Team Foundation Server。
有关更多信息,请参见在 Team Foundation Server 中连接团队项目。
请参见
其他资源
Securing Team Foundation Server with HTTPS and Secure Sockets Layer (SSL)
Team Foundation Server, HTTPS, and Secure Sockets Layer (SSL)