WCF BasicHttpBinding 安全解析(8)Message安全模式(iis宿主)

简介:

Message安全模式基于消息保护,强制客户端和服务端提供证书,服务端对返回的消息体进行加密。本节笔者更换服务端的证书,名为XuanhunServer1。

首先我们在服务端配置Message安全模式,如代码清单11-106所示。

代码清单11-106 配置Message安全模式

 
<bindings>
<basicHttpBinding>
<binding name="basicBindingConf">
<security mode="Message">
<message 
clientCredentialType="Certificate"/>
</security>
</binding>
</basicHttpBinding>
</bindings>

在代码清单11-106中,我们启用Message安全模式并设置客户端凭据类型为Certificate。证书的设置和上节相同我就不重复了。客户端配置主要注意两个地方,一是不论是否验证服务端证书都要提供服务端证书的配置,如代码清单11-107所示。二是要设置<identity>节中DNS值和服务端证书名称一致,如代码清单11-108所示。

代码清单11-107 客户端证书设置

 
<clientCredentials>
<clientCertificate
findValue="XuanhunClient"
storeLocation="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindBySubjectName"/>
<serviceCertificate>
<authentication 
certificateValidationMode="None"/>
<defaultCertificate 
findValue="XuanhunServer1" storeName="TrustedPeople" 
x509FindType="FindBySubjectName" storeLocation="LocalMachine"/>
</serviceCertificate>
</clientCredentials>

代码清单11-108 设置DNS

 
<identity>
<dns 
value="XuanhunServer1"/>
</identity>

一切配置妥当,启动测试站点却遇到如图11-54所示的错误。

clip_image002

图11-54 “密钥集不存在”错误

出现该错误不是由于提示信息说的密钥问题而是权限问题引起的,只需给

C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA这个目录下的MachineKeys文件夹添加Everyone用户并赋予浏览权限即可,如图11-55。

clip_image004

图11-55 设置文件夹权限

解决了权限问题,程序运行成功。这些问题在不了解原理的时候,往往都是经验性的解决,希望读者能多多留意这一类问题。

下面我们来看一下Message安全模式下的消息传输。

图11-56所示为服务端返回的数据。

clip_image006

图11-56 截获的响应数据

从图11-56中的结果来看,服务端对整个消息体进行了加密,内容无从得知,保护了消息的机密性。那s么客户端的请求数据呢?客户端没有对消息体进行加密但是对消息中的关键内容先加密再赋值传输的。代码清单11-109是截取的一段。

代码清单11-109 客户端请求数据

<u:Timestamp 
u:Id="uuid-2705e435-cc04-4e1f-9afa-807d73067921-5"><u:Created>2011-06-26T13:18:21.002Z</u:Created><u:Expires>2011-06-26T13:23:21.002Z</u:Expires></
u:Timestamp><o:BinarySecurityToken 
u:Id="uuid-33dfb585-d0e8-4167-a5f7-eed40f2d1539-5" 
ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" 
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MIIB+jCCAWegAwIBAgIQZGmT6q0h0ZpAYyS6
XbdjZzAJBgUrDgMCHQUAMBgxFjAUBgNVBAMTDVh1YW5odW5DbGllbnQwHhcNMTEwNjI2MTEyNTAwWhcNMzkxMjMxMjM1OTU5WjAYMRYwFAYDVQQDEw1YdWFuaHVuQ2xp
ZW50MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDElBfTXWrAfHPRjVSLWos4d/Z2Ec9xZ0c8lU4t4Pt/EkwkqFb1gHcfe54eP/CzglT275ftovoYUH0gQGJ0NU89dPEfX1TEyk
YYF5DB0rIxIUZhPBnOrz5BWNYV68bsbARYwxOmj0M2g7nIMWD2vb8gSV6GN2XxG0VoFW1FxOrlRwIDAQABo00wSzBJBgNVHQEEQjBAgBD5HCEdkNXX+nYrhpTvHDwioRowGDE
WMBQGA1UEAxMNWHVhbmh1bkNsaWVudIIQZGmT6q0h0ZpAYyS6XbdjZzAJBgUrDgMCHQUAA4GBAFeHhyrrHKmOrpUsa9uwVdoA6n8cQzizsWlIJh7wZm68v8rNR1WCPZmMmx
KICPA3GNozFr8zp8iuxO1bIfKF9GDhUJRoAe2nopjRp4RHbBkajJpX2DExXNZHNLC1ghULbVdVAqoewDUnsVZZPVzSxjgx38e+jMghtqUoTyfGK7lE</o:BinarySecurityToken>

部分数据客户在请求的时候将数据的二进制数据直接转换成Base64编码,如果我们不知道二进制数据的组织方式仍然没有办法得知传输的内容。

对于安全级别较高的应用场景中,我们还是推荐使用TransportWithMessageCredential安全模式,完全基于Https来确保消息

本文转自悬魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2011/07/03/2096850.html,如需转载请自行联系原作者


相关文章
|
3月前
|
开发框架 安全 中间件
38、中间件漏洞解析-IIS6.0
38、中间件漏洞解析-IIS6.0
15 0
|
12月前
|
开发框架 安全 .NET
从零到IIS建站再到IIS解析漏洞复现
从零到IIS建站再到IIS解析漏洞复现
145 0
|
开发框架 安全 .NET
38、中间件漏洞解析-IIS6.0
38、中间件漏洞解析-IIS6.0
73 1
38、中间件漏洞解析-IIS6.0
|
XML 开发框架 .NET
泛解析泛域名301重定向带参数跳转在iis的web.config中的设置方式 二级域名301重定向
泛解析泛域名301重定向带参数跳转在iis的web.config中的设置方式 二级域名301重定向
570 0
泛解析泛域名301重定向带参数跳转在iis的web.config中的设置方式 二级域名301重定向
|
XML 网络协议 IDE
WCF基础教程(三)——WCF通信过程及配置文件解析
WCF基础教程(三)——WCF通信过程及配置文件解析
295 0
WCF基础教程(三)——WCF通信过程及配置文件解析
|
C++
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
102 0
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
|
安全 网络安全 数据安全/隐私保护
IIS安全:配置web服务器权限更好地实现访问控制
IIS安全:配置web服务器权限更好地实现访问控制
328 1
|
网络安全 Windows
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
269 0
|
网络安全 Windows
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
Windows Server IIS配置 怎么禁用不安全的SSL2.0和SSL3.0协议?
454 0

推荐镜像

更多