扩展保护是一种针对中间人 (MITM) 攻击提供保护的安全计划。MITM 攻击是一种安全威胁,MITM 在该攻击中获取客户端凭据并将其转发给服务器。
演示
扩展保护
讨论
当应用程序通过 HTTPS 使用 Kerberos、Digest 或 NTLM 进行身份验证时,首先会建立一个传输层安全 (TLS) 通道,然后使用此安全通道进行身份验证。但是,SSL 生成的会话密钥和身份验证期间生成的会话密钥之间没有任何绑定。即使传输通道本身是安全的,任何 MITM 也可以在客户端和服务器之间建立自身,然后开始转发来自客户端的请求,因为服务器无法知道安全通道是从客户端还是 MITM 建立的。此方案中的解决方案是将外部 TLS 通道与内部身份验证通道绑定,从而使服务器可以检测是否存在 MITM。
![]() |
---|
本示例仅当在 IIS 上承载时才可正常运行,而不适用于 Cassini(Visual Studio 开发服务器),因为 Cassini 不支持 HTTPS。 |
![]() |
---|
此功能当前只在 Windows 7 上可用。以下步骤特定于 Windows 7。 |
设置、生成和运行示例
从**“控制面板”、“添加/删除程序”、“Windows 功能”**安装 Internet 信息服务。
在**“Windows 功能”、“Internet 信息服务”、 “万维网服务”、“安全”和“Windows 身份验证”中安装“Windows 身份验证”**。
在**“Windows 功能”、“Microsoft .NET Framework 3.5.1”和“Windows Communication Foundation HTTP 激活”中安装“Windows Communication Foundation HTTP 激活”**。
本示例要求客户端与服务器建立一个安全通道,因此它要求存在服务器证书,此证书可从 Internet 信息服务 (IIS) 管理器进行安装。
打开 IIS 管理器。打开**“服务器证书”,该证书会在选择根节点(计算机名称)时出现在“功能视图”**选项卡中。
为了测试此示例,可以创建一个自签名证书。如果不希望 Internet Explorer 提示证书不安全,可将证书安装到受信任的证书根颁发机构存储区中。
打开默认网站的**“操作”窗格。单击“编辑站点”、“绑定”**。如果 HTTPS 尚不存在,请将其作为类型添加,使用端口号 443。分配在上一步中创建的 SSL 证书。
生成服务。这会在 IIS 中创建一个虚拟目录,并根据需要为要进行 Web 承载的服务复制 .dll、.svc 和 .config 文件。
打开 IIS 管理器。右击在上一步中创建的虚拟目录(“ExtendedProtection”)。选择**“转换为应用程序”**。
在 IIS 管理器中为此虚拟目录打开**“身份验证”模块,并启用“Windows 身份验证”**。
为此虚拟目录打开**“Windows 身份验证”下的“高级设置”,并将其设置为“必需”**。
通过从浏览器窗口(提供完全限定的域名)访问 HTTPS URL 可测试服务。如果想要从远程计算机访问此 URL,请确保为所有传入 HTTP 和 HTTPS 连接打开了防火墙。
打开客户端配置文件,并为客户端或终结点地址特性提供完全限定的域名,以替换
<<full_machine_name>>
。运行客户端。客户端与服务进行通信,这会建立安全通道并使用扩展保护。
![]() |
---|
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录。
<安装驱动器>:\WF_WCF_Samples
如果此目录不存在,请访问针对 .NET Framework 4 的 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 示例(可能为英文网页),下载所有 Windows Communication Foundation (WCF) 和 WF 示例。此示例位于以下目录。
<安装驱动器>:\WF_WCF_Samples\WCF\Basic\Services\Security\ExtendedProtection
|