上一篇演示的是绑定类型为NetTcpBinding情况下基于TLS/SSL的Transport安全模式的实现,接下来我们改用另外一种绑定:WS2007HttpBinding。对于基于HTTP的绑定,Transport安全模式的实现方式又根据寄宿方式的不同而具有一定的差异,我们首先来介绍自我寄宿的方式。
无论对于HTTPS还是SSL Via TCP,服务端都需要绑定一个证书。对于采用后者的NetTcpBinding,我们是通过ServiceCredentials这个服务行为来进行证书设置的。但是对于HTTPS,我们需要通过相应的命令行工具将一个X.509证书绑定到相应的端口。而这个工具的选择依赖于机器的操作系统,对于Windows XP和Windows 2003,该命令行工具为httpcfg.exe,而对应之后的版本,则是netsh.exe。关于如何通过httpcfg.exe和netsh.exe为端口设置SSL证书,你可以参考:http://msdn.microsoft.com/zh-cn/library/ms733791.aspx。
httpcfg.exe和netsh.exe均是通过证书的指纹(thumbprint)来关联具体的证书的,在这里具有全局唯一特性的指纹可以看成是证书的唯一标识。我们之前已经通过MakeCert命令行创建了一个主题为Jinnan-PC的证书,我们现在重用该证书。你可以通过MMC的证书管理单元来查看证书的指纹,并将其拷贝到写字板上(比如指纹为:f332bf17db3abb8f9a9a2694ba2c75da701bef0f),然后根据操作系统的不同分别执行httpcfg.exe和netsh.exe命令行,为端口3721进行SSL证书的设置,你可以将任意有效的GUID作为appid的参数。
OR
netsh http add sslcert ipport=0.0.0.0:3721 certhash= f332bf17db3abb8f9a9a2694ba2c75da701bef0f
appid={CFA5621F-CD55-4009-AD7E-51EDDAEC5786}