设置 SSL
本主题说明如何设置 Internet 信息服务 (IIS) Web 服务器以通过安全超文本传输协议 (HTTPS) 为网页和其他资源提供 Web 服务。HTTPS 是客户端与服务器之间通过 Internet 进行安全通信的标准方法。HTTPS 能够加密通信,这样在通信内容遭到截取后,第三方不能轻易地查看和使用其中的信息。应确保通过 HTTPS 保护已传输到服务器的敏感信息。所有登录均应使用 HTTPS,且用于传输不想让最终用户以外的第三方查看的数据的页面也应使用 HTTPS。
要通过 HTTPS 为页面及其他资源服务,必须获取安全套接字层 (SSL) 证书并将其安装在 IIS 服务器上。通常是从被浏览器以及其他能够通过 Internet 通信的客户端软件普遍承认的证书颁发机构 (CA) 获取 SSL 证书。如果证书是由被浏览器承认的 CA 颁发的,则用户无需执行特殊操作即可与服务器通信。因此,强烈建议生产服务器获取由 CA 颁发的证书。有关信息,请参阅从证书颁发机构获取 SSL 证书并进行安装。
安装 SSL 证书后,即可使用 HTTPS 访问服务器上的网页和其他资源。如果资源载有敏感信息,建议您要求客户端使用 HTTPS 访问资源。有关详细信息,请参阅要求使用 HTTPS。
出于开发和测试目的时,使用自签名 SSL 证书便足够。浏览器和其他客户端将不会自动接受此类证书,并会为其显示警告消息。有关详细信息,请参阅使用自签名 SSL 证书。
本主题包括适用于 IIS 6 (Windows Server 2003) 和 IIS 7(Windows Vista、Windows 7 和 Windows Server 2008)的操作步骤。如果使用 IIS 5.1 (Windows XP),可以按照适用于 IIS 6 的步骤执行操作。
确定是否已安装 SSL 证书
如果不确定 IIS Web 服务器上是否已安装 SSL 证书,请执行以下步骤:
适用于 IIS 6 的步骤
- 打开控制面板 > 管理工具 > Internet 信息服务 (IIS) 管理器。
- 在 IIS 管理器的左侧窗格中,展开树,然后依次找到服务器、服务器中的网站、默认网站。(如果已创建更多网站,则可能需要将上述步骤应用于安装 ArcGIS Server 实例网站的服务器。)
- 右键单击默认网站,然后从快捷菜单中选择属性。
- 在网站的属性 对话框中,单击目录安全性选项卡。在此选项卡面板的安全通信部分下,如果出现查看证书按钮,则说明已安装 SSL 证书。如果出现请求证书按钮,则说明未安装 SSL 证书。
适用于 IIS 7 的步骤
- 打开控制面板 > 管理工具 > Internet 信息服务 (IIS) 管理器。
- 从连接 面板选择计算机。
- 确保选择 IIS 功能视图选项卡,并单击服务器证书。此处列出所有已安装证书。
从证书颁发机构获取 SSL 证书并进行安装
本部分概括介绍从证书颁发机构获取 SSL 证书并进行安装的过程。有关完整信息,请咨询系统管理员、外部顾问或其他安全性相关资源。有关详细信息,请参阅使用 SSL 加密机密数据。
- 使用 IIS 管理器创建证书请求。关于说明,请参阅请求服务器证书 (IIS 6.0)或请求 Internet 服务器证书 (IIS 7)。
- 将请求发送到公认的证书颁发机构。有关使用 Microsoft 软件的 CA 列表,请参阅 Microsoft 根证书程序成员。
- 获取证书后,即可将证书安装在 IIS 服务器上。有关说明,请参阅安装服务器证书 (IIS 6.0)或请求 Internet 服务器证书 (IIS 7)。
- 如果使用 IIS 7,将 HTTPS 绑定添加到站点。有关说明,请参阅向站点添加绑定 (IIS 7)。
安装证书后,客户端便可使用 HTTPS 协议访问网页和其他资源。也可以要求在访问资源时使用 HTTPS。如果以后需要移除 SSL 证书,请参阅关于工具的 IIS 文档,如 HTTPCfg (IIS 6.0) 或参阅移除服务器证书 (IIS 7)。
Web 服务器上的 SSL 端口
会将向 Web 服务器提出的 SSL 请求发送至该服务器上的特定端口。端口(或 TCP 端口)会将处理请求的程序告知目标计算机。默认情况下,Web 服务器通过端口 443 处理 SSL 请求。如果使用默认端口,则客户端不需要在请求中指定端口。如果在 Web 服务器上设置了非默认端口,则 URL 中必须包括此端口,例如 https://gis.example.com:8443/mywebapp。
可以为 IIS 网站使用非默认 SSL 端口,但必须在安装 ArcGIS Server(尤其是 ArcGIS Server Web 应用程序或 ArcGIS 实例)之前设置端口。如果先安装 ArcGIS Server 实例,然后再将 SSL 配置为非默认端口,则可能需要更新 ArcGIS Server 中的 SSL 端口值。同样,如果在配置 ArcGIS Server 的安全性之后更改 SSL 端口,则将需要以新端口号更新 ArcGIS Server。
如果已启用 GIS Web 服务的安全性或者打算启用该安全性,且安全性使用令牌,则只需要更新 ArcGIS Server 中的 SSL 端口。如果将用户存储在 SQL Server 或自定义提供程序中,则服务安全性将使用令牌。
要以新端口号或非默认 SSL 端口号更新 ArcGIS Server 实例,请执行以下步骤:
- 使用文本编辑器或 XML 编辑器,打开文件 <ArcGIS 实例>\Security\web.config. The <ArcGIS 实例> 通常是文件夹 C:\Inetpub\wwwroot\ArcGIS,但如果将 IIS 站点放在另一个位置,或者使用另一个名称安装 ArcGIS Web 应用程序,则找到该文件夹并使用该文件夹的 Security 文件夹。
- 在安全性 web.config 中,找到以下设置(SSL 端口值可能不同):<add key="SSLPort" value="443" />,并将该值更改为新 SSL 端口号。保存并关闭文件。
- 如果尚未配置安全性,则可暂时跳过其余步骤。否则,打开 ArcGIS Server 管理器,登录,然后转到安全性 > 设置 > 配置。
- 按照向导的说明配置所需用户和角色位置的安全性。即使以前配置了安全性,仍需要重复执行上述过程,才能挑选新 SSL 端口。
- 完成安全性向导后,测试对受保护服务的访问,以确认已正确应用安全性设置。
要求使用 HTTPS
要求客户端使用 HTTPS 访问含有敏感性数据的网页和资源。这可能包括登录页面,但也可能包括整个 Web 应用程序。
使用 HTTPS 会增加客户端和服务器之间的通信开销。因此,仅对不得透露给第三方的资源使用或要求使用 HTTPS。
如果希望要求 ArcGIS Server 服务或文件夹使用 HTTPS,可以使用 ArcGIS Server 以要求使用 HTTPS。有关详细信息,请参阅“与服务之间建立的 Internet 连接的安全设置”主题中的要求文件夹和服务使用 HTTPS。
也可以使用 IIS Web 服务器要求 Web 应用程序、网页或其他资源使用 HTTPS (SSL):
适用于 IIS 6 的步骤
- 通过打开控制面板 > 管理工具 > Internet 信息服务 (IIS) 管理器来启动 IIS 管理器。
- 展开网站节点,接着展开包含要限定于 HTTPS 的资源的网站。默认情况下,IIS 服务器站点位于默认网站。在网站中,于整个树中导航,以找到要限定于 HTTPS 的 Web 应用程序、文件夹、网站或其他资源。
- 右键单击资源并选择属性。
- 单击目录安全性(或文件安全性)选项卡。在此选项卡上,单击安全通信区域中的编辑按钮。如果此按钮不可用,则说明 IIS 服务器未安装 SSL 证书。要获取和安装证书,请参阅上面的“从证书颁发机构获取 SSL 证书并进行安装”部分。
- 在打开的安全通信 对话框中,选中要求安全通道 (SSL) 框。
- 单击确定关闭此对话框以及资源的属性 对话框。关闭 IIS 管理器。
- 通过尝试使用 http:// 检索资源进行测试。将显示一条要求使用 HTTPS 的消息。使用 https:// 检索资源。
适用于 IIS 7 的步骤
- 通过打开控制面板 > 管理工具 > Internet 信息服务 (IIS) 管理器来启动 IIS 管理器。
- 展开网站节点,接着展开包含要限定于 HTTPS 的资源的网站。默认情况下,IIS 服务器站点位于默认网站。在网站中,于整个树中导航,以找到要限定于 HTTPS 的 Web 应用程序、文件夹、网站或其他资源。
- 在服务器的树视图中导航,并选择希望要求使用 SSL 的项目。
- 确保已启用 IIS 的“功能视图”,然后双击 SSL 设置。
- 选中要求 SSL,然后在操作 窗格中单击应用。
- 在 IIS 管理器中单击“上一步”按钮以返回到“功能视图”。
- 通过在操作 窗格中单击浏览 *:80 (http) 进行测试。将显示一条要求 SSL 的消息。现在,在操作 窗格中单击浏览 *:443 (https),以使用 HTTPS 检索页面。
请注意,如果客户端要求使用 HTTPS 但却通过 HTTP 请求页面或资源,则客户端不会被自动重定向到资源的 HTTPS URL。可以通过编程的方式重定向此类请求(在 Internet 资源中搜索各种开发人员资源),但没有现成工具可用。确保用户知道需要使用 https:// 来访问资源。
使用自签名 SSL 证书
如果要进行开发和测试,则使用自签名 SSL 证书便会足够。不建议将自签名证书用于生产站点。从使用自签名证书的站点加载资源时,浏览器用户会看到安全性警告。除非您确定所连接的服务器和组织的身份,否则不得信任任何自签名证书。除了浏览器问题以外,一些服务器应用程序可能还会有自签名证书使用方面的问题。对于一些服务器应用程序,会在以下步骤中包括一些提示,但对于另一些类型的应用程序,则可能需要通过服务器和应用程序识别服务器证书的方式对其进行安装。
可通过许多方法生成自签名证书。请查阅有关安全性的文字资料、咨询安全专家或访问网站,以获得相关选项。
使用 IIS 7 时,IIS 管理器可用于创建自签名证书。有关说明,请参阅在 IIS 7 中创建自签名服务器证书。创建自签名服务器证书后,即会需要将 HTTPS 绑定添加到网站中。有关说明,请参阅向网站添加绑定 (IIS 7)。
使用 IIS 6 时,需要使用 IIS 6.0 资源工具包中的 SelfSSL 创建自签名证书。以下步骤将对此操作方法进行说明:
-
从 Microsoft 网站下载 IIS 6.0 资源工具包并进行安装。至少安装 SelfSSL 工具。其他工具是可选的。
注意:
Windows Server 2003 和 Windows XP 支持此工具。其他平台可能需要使用其他工具。
-
运行 SelfSSL 并将证书安装到 IIS 计算机:
- 在 IIS 计算机上,单击开始 > 程序 > IIS 资源 > SelfSSL > SelfSSL。这将打开命令提示符,并指向 SelfSSL 位置。
- 输入命令以创建和安装证书。以下示例创建一个证书,有效期为 365 天,用于 www.example.com 服务器,并将受本地浏览器信任:SelfSSL /V:365 /N:CN=www.example.com /T
- 名称 (N) 参数必须被设置为用户将为服务器输入的名称。有关选项的详细信息(例如在非默认 IIS 网站上安装),请参阅 SelfSSL 帮助。
- 输入 exit 并按 ENTER 键关闭 SelfSSL 窗口。
- 通过使用 https:// 在服务器上打开浏览器和加载页面,来测试证书。将显示一条消息,指出证书不是来自已知的证书颁发机构。单击可继续进行操作,且页面会正常加载。
- 如果将在运行于不同服务器的 Web ADF 应用程序中使用受保护的 ArcGIS 服务,请将证书导入到本地计算机的证书存储。请参阅下面的说明。
只有在使用通过上述 N 参数所指定的名称(如果未指定 N,则使用计算机名称)来请求证书时,证书才会被识别。例如,如果使用默认计算机名称 myserver,且客户端使用完全限定的域名 myserver.example.com 请求页面,则客户端会发出关于证书上的名称与请求不匹配的警告。
在客户端计算机上安装自签名证书
使用自签名证书时,客户端将在启动每个与服务器的会话时显示警告。如果所创建的 Web ADF 应用程序使用带有自签名证书的服务器上的受保护的服务,则服务在应用程序中可能不会工作。为避免出现这些安全性警告和问题,可以从服务器导出证书,然后在客户端计算机上导入证书。此方法只能用于内部测试和开发用途,不能在生产站点上使用。
在 IIS 6 中导出证书
- 打开 IIS 管理器并导航至默认网站。
- 右键单击默认网站,然后选择属性。
- 在目录安全性选项卡上,单击安全通信下的查看证书。
- 在证书 窗口中,单击详细信息选项卡,然后单击复制到文件。
- 在证书导出向导 中,接受所有默认设置(不导出私钥;使用 DER 格式),指定文件名(例如 mymachine-ssl-cert-export.cer),然后单击完成。默认情况下,证书文件放在 \Windows\System32\inetsrv\ 中,但是也可以将其保存到任何位置。
- 通过电子邮件、文件共享或在 Web 服务器上与客户端计算机共享证书。
在 IIS 7 中导出证书
- 打开 IIS 管理器并选择计算机。
- 在 IIS的“功能视图”中,双击服务器证书。
- 单击想要导出的证书。
- 在操作 窗口中,单击查看。
- 在证书 窗口中,单击详细信息选项卡,然后单击复制到文件。
- 在证书导出向导 中,接受所有默认设置(不导出私钥;使用 DER 格式),指定文件名(例如 mymachine-ssl-cert-export.cer),然后单击完成。默认情况下,证书文件放在 \Windows\System32\inetsrv\ 中,但是也可以将其保存到任何位置。
- 通过电子邮件、文件共享或在 Web 服务器上与客户端计算机共享证书。
证书可用后,即可继续执行以下相应步骤,以在客户端计算机上导入证书。
在 IIS 6 中导入证书
- 获取之前生成的证书文件的复本,并在本地进行保存。
- 双击 .cer 文件以显示证书信息。
- 单击安装证书。
- 在证书导入向导 打开时,单击下一步。
- 在向导的证书存储 面板上,选择证书的安装位置。
- 如果计算机只运行客户端应用程序(ArcGIS Desktop 或 浏览器),则将选项保留为根据证书类型自动选择证书存储。
- 如果计算机是 Web 服务器(其中装有 .NET Web ADF 应用程序),则单击将所有证书放入下列存储选项。然后,单击浏览按钮,在打开的选择证书存储对话框中,选中显示物理存储选项。展开受信任的根证书颁发机构并选择本地计算机文件夹。单击确定返回证书导入向导。注意:
如果计算机将运行上述客户端应用程序,则在完成步骤 6 后重新运行导入向导,并选择使用自动选择证书存储选项安装证书。
- 单击下一步并单击完成。将显示一条指示证书导入成功的消息。关闭证书 对话框。
在 IIS 7 中导入证书
- 单击开始,然后在搜索框中输入 mmc.exe 并单击确定。
- 在 Microsoft 管理控制台 (MMC) 中,单击文件,然后单击添加/移除管理单元。
- 单击证书,然后单击添加按钮。
- 单击我的用户帐户,然后单击完成。
- 在添加/移除管理单元 对话框中,单击确定。即会将证书管理单元添加到 MMC 窗口。
- 展开证书 > 当前用户节点,然后展开受信任的根证书颁发机构,以显示其证书子节点。
- 右键单击证书节点,单击所有任务,然后单击导入。
- 在证书导入向导 打开时,单击下一步,然后在要导入的文件面板中,单击浏览并导航到在本地保存的证书文件。在打开 对话框中选择此文件并单击打开。此文件的路径和文件名将显示在要导入的文件面板中。
- 单击下一步。在证书存储 面板中,验证是否已选择将所有证书放入下列存储选项,以及所显示的证书存储是否为受信任根证书颁发机构。单击下一步。
- 查看证书导入的摘要信息,然后单击完成。
- 对于安全性警告单击是,然后单击确定。
- 如果计算机是 Web 服务器(其中装有 .NET Web ADF 应用程序),则重复步骤 2 到 11,但在步骤 4 中选择计算机帐户而非我的用户帐户。
执行上述步骤后,Internet Explorer 及其他基于 IE 的客户端即可使用 HTTPS 访问服务器而不会显示警告。Internet Explorer 之外的浏览器可能需要单独接受证书。
如果要从 ArcGIS Server Java Web ADF 应用程序访问 GIS Web 服务,则必须使用 keytool 在 Java Manager 的 Java Runtime Environment (JRE) 中安装证书。将应用程序重新部署到其他 Web 服务器均需要将证书添加到 Web 服务器的 JRE 中。
服务目录的登录页面和管理页面要求使用 SSL
默认情况下,服务目录的所有页面都使用 HTTP。但是,由于登录服务目录时需要将凭据传递到服务器,所以应在已于服务器上配置 SSL 后,要求服务目录的登录页面和管理页面使用 HTTPS。若要求在这些页面上使用 SSL,可执行以下步骤:
- 在文本编辑器中打开 <ArcGIS Server 实例>\rest\rest.config 文件。例如,如果实例名称为 ArcGIS,并且 IIS 安装在 c:盘上,则路径为 c:\Inetpub\wwwroot\ArcGIS\rest\rest.config。
- 在文件底部找到元素 UseSslForLoginAndAdmin。
- 将该元素的内容更改为 true。
- 保存并关闭文件。
现在,当用户单击登录链接或管理员导航到 REST 管理页面时,他们会被重定向到 HTTPS URL,从而保护其凭据。