本文介绍 ExtendedProtection 示例。
扩展保护是一项安全计划,用于防范中间人(MITM)攻击。 中间人攻击是一种安全威胁,其中中间人截取客户端的凭据并将其转发到服务器。
讨论
当应用程序使用 HTTPS 使用 Kerberos、Digest 或 NTLM 进行身份验证时,首先会建立传输级别安全性 (TLS) 通道,然后使用安全通道进行身份验证。 但是,SSL 生成的会话密钥与身份验证期间生成的会话密钥之间没有绑定。 任何 MITM 都可以在客户端和服务器之间建立自身,并开始转发来自客户端的请求,即使传输通道本身是安全的,因为服务器无法知道是否已从客户端或 MITM 建立安全通道。 此方案中的解决方案是将外部 TLS 通道与内部身份验证通道绑定,以便服务器可以检测是否存在 MITM。
注释
此示例仅在 IIS 上托管时才有效。
注释
以下步骤特定于 Windows 7。
设置、生成和运行示例
从 控制面板、 添加/删除程序、 Windows 功能安装 Internet Information Services。
在 Windows 功能、Internet Information Services、万维网服务、安全性和Windows 身份验证中安装 Windows 身份验证。
在“Windows 功能”、“Microsoft .NET Framework 3.5.1”和“Windows Communication Foundation HTTP 激活”中安装“Windows Communication Foundation HTTP 激活”。
此示例要求客户端与服务器建立安全通道,因此需要存在可从 Internet Information Services (IIS) 管理器安装的服务器证书。
打开 IIS 管理器。 打开 服务器证书,在选择根节点(计算机名称)时显示在 “功能视图 ”选项卡中。
为了测试此示例,请创建自签名证书。 如果不希望浏览器提示你证书不安全,请在受信任的证书颁发机构存储中安装证书。
打开默认网站的操作窗格。 单击“编辑站点”和“绑定”。 添加 HTTPS 作为类型(如果尚不存在),端口号为 443。 分配在上一步中创建的 SSL 证书。
构建服务。 这会在 IIS 中创建一个虚拟目录,并根据需要复制要托管服务的 .dll、.svc 和 .config 文件。
打开 IIS 管理器。 右键单击在上一步中创建的虚拟目录(ExtendedProtection)。 选择 “转换为应用程序”。
在此虚拟目录的 IIS 管理器中打开 身份验证 模块并启用 Windows 身份验证。
打开此虚拟目录的 Windows 身份验证下的高级设置,并将其设置为“必需”。
可以通过从浏览器窗口访问 HTTPS URL(提供完全限定的域名)来测试服务。 如果要从远程计算机访问此 URL,请确保为所有传入的 HTTP 和 HTTPS 连接打开防火墙。
打开客户端配置文件,并为客户端或终结点地址特性提供完全限定的域名,以替换
<<full_machine_name>>
。运行客户端。 客户端与服务通信,该服务建立安全通道并使用扩展保护。