首页 > 网站 > 建站经验 > 正文

IIS7下配置SSL的方法分析

2019-11-02 16:11:00
字体:
来源:转载
供稿:网友
在IIS7中,HTTP.sys在内核模式下操作SSL加密解密,相对于IIS6,这种方式能提高近20%的性能。

当SSL运行于内核模式时,会将SSL绑定信息保存在两个地方。第一个地方,绑定配置保存在%windir%/System32/inetsrv/config/applicationHost.config中,当站点启动时,IIS7发送绑定信息给HTTP.sys,同时HTTP.sys会在特定的IP和端口监听请求。第二个地方,与绑定相关联的SSL配置保存在HTTP.sys配置中。使用netsh命令可以查看保存在HTTP.sys的SSL绑定配置:

netsh http show sslcert

当一个客户开始连接并初始化SSL协商时,HTTP.sys在它的配置中查找这个IP:Port对应的SSL配置。这个SSL配置必须包括证书hash值和名称:

l 在ApplicationHost.config中确认这个绑定是否存在

l HTTP.sys中是否包含有效证书的hash值以及命名是否存在

选择证书时,需要考虑以下问题:

是否想让最终用户能够通过你提供的证书确认你服务器的唯一性?

如果是的,则

要么建立一个证书请求,并且发送证书请求到证书权威机构(CA),比如VeriSign或者GeoTrust;

要么从Intranet的在线CA那里获取一个证书

浏览器一般用三样东西来确认服务器证书的有效性:

1. 当前日期在证书的有效期范围内

2. 证书的“Common Name”(CN)与请求中的主机名相匹配。比如,如果客户发起了一个到http://www.contoso.com的请求,则CN必须是这样的:http://www.contoso.com/

3. 证书的发行者是已知的和受到信任的CA

如果其中有1项失败,浏览器就会警告用户。如果你有个Internet站点或者你不怎么熟的Intranet用户,那你就需要确保这3项是都通过的。

自签名的证书可以用你自己的计算机创建。如果最终用户不重要,或者他们信任你的服务器,又或者用于测试环境,则这种自签名证书将会非常有用。

Ø 使用WMI来绑定SSL证书

使用WMI命名空间,是不能够请求或者创建证书。

建立SSL绑定

以下脚本展示了如何建立SSL绑定,以及添加相应信息到HTTP.sys中:

复制代码 代码如下:

Set oIIS = GetObject("winmgmts:root/WebAdministration")

'''''''''''''''''''''''''''''''''''''''''''''

' CREATE SSL BINDING

'''''''''''''''''''''''''''''''''''''''''''''

oIIS.Get("SSLBinding").Create _

"*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"'''''''''''''''''''''''''''''''''''''''''''''

' ADD SSL BINDING TO SITE

'''''''''''''''''''''''''''''''''''''''''''''

Set oBinding = oIIS.Get("BindingElement").SpawnInstance_

oBinding.BindingInformation = "*:443:"

oBinding.Protocol = "https"

Set oSite = oIIS.Get("Site.Name='Default Web Site'")

arrBindings = oSite.Bindings

ReDim Preserve arrBindings(UBound(arrBindings) + 1)

Set arrBindings(UBound(arrBindings)) = oBinding

oSite.Bindings = arrBindings

Set oPath = oSite.Put_

注意:证书的hash值和名称必须引用了你服务其上真实且有用的证书。如果其中有一项虚假,就会出现错误。

注意:证书的hash值和名称必须引用了你服务其上真实且有用的证书。如果其中有一项虚假,就会出现错误。

配置SSL设置

以下脚本展示了如何通过IIS7的WMI提供程序来设置SSL。

复制代码 代码如下:

CONST SSL = 8

Set oIIS = GetObject("winmgmts:root/WebAdministration")

Set oSection = oIIS.Get( _

"AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表