iis 7 ssl https配置方法

作者:简简单单 2011-05-07

iis 7 ssl https教程配置方法
iis6(windows2003)下,ssl的所有配置信息都保存在iis元数据中,在用户模式中加密解密(这会耗费很多的内核/用户模式转换)。在iis7中,http.sys在内核模式下操作ssl加密解密,相对于iis6,这种方式能提高近20%的性能。
 

当ssl运行于内核模式时,会将ssl绑定信息保存在两个地方。第一个地方,绑定配置保存在%windir%system32inetsrvconfigapplicationhost.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:rootwebadministration")
 ''''''''''''''''''''''''''''''''''''''''''''' ' 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值和名称必须引用了你服务其上真实且有用的证书。如果其中有一项虚假,就会出现错误。
 

配置ssl设置

以下脚本展示了如何通过iis7的wmi提供程序来设置ssl。

const ssl = 8
set oiis = getobject("winmgmts:rootwebadministration")
set osection = oiis.get( _
   "accesssection.path='machine/webroot/apphost',location='default web site'")
osection.sslflags = osection.sslflags or ssl
osection.put_
 

ø 使用iis管理器来绑定ssl证书

获取一个证书

在树目录中选择服务器节点,在右面双击server certificates图标:

iis 7 ssl https配置方法
iis6(windows2003)下,ssl的所有配置信息都保存在iis元数据中,在用户模式中加密解密(这会耗费很多的内核/用户模式转换)。在iis7中,http.sys在内核模式下操作ssl加密解密,相对于iis6,这种方式能提高近20%的性能。
 

当ssl运行于内核模式时,会将ssl绑定信息保存在两个地方。第一个地方,绑定配置保存在%windir%system32inetsrvconfigapplicationhost.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:rootwebadministration")
 ''''''''''''''''''''''''''''''''''''''''''''' ' 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值和名称必须引用了你服务其上真实且有用的证书。如果其中有一项虚假,就会出现错误。
 

配置ssl设置

以下脚本展示了如何通过iis7的wmi提供程序来设置ssl。

const ssl = 8
set oiis = getobject("winmgmts:rootwebadministration")
set osection = oiis.get( _
   "accesssection.path='machine/webroot/apphost',location='default web site'")
osection.sslflags = osection.sslflags or ssl
osection.put_
 

ø 使用iis管理器来绑定ssl证书

获取一个证书

在树目录中选择服务器节点,在右面双击server certificates图标:

 

在树目录中选择服务器节点,在右面双击server certificates图标:
http://learn.iis.net/file.axd?i=69
 
单击create self-signed certificate…按钮:
http://learn.iis.net/file.axd?i=70
 
输入新证书的名字后单击ok。
现在你有了一个自签名证书。这个证书被标记为”服务器端验证”
 
建立ssl绑定
选择一个站点,在actions面板中单击bindings…。会显示出添加、修改、删除绑定对话框。单击add…按钮添加新的ssl绑定。
https://img.111com.net/get_pic/2010/03/20110507004808289.jpg
默认设置是80端口,在类型下拉框中选择https,在ssl certificate下拉框中选择你刚才建立的自签名证书名字,单击ok。
http://learn.iis.net/file.axd?i=643
 
现在你已经完成ssl绑定的建立工作了,剩下的就是要确认是否工作正常了。
http://learn.iis.net/file.axd?i=644
 
 
ø ssl绑定的确认
在actions面板中,在browse web site下,单击刚才增加的绑定
http://learn.iis.net/file.axd?i=74
 
 
由于这个证书是个自签名的证书,ie7会显示一个错误页面。
单击continue to this website(not recommended).继续
http://learn.iis.net/file.axd?i=75
 
 
ø 配置ssl设置
当你要求用户必须使用证书,又或者必须ssl方式连接时,你需要配置ssl设置。双击ssl settings如下图:
http://learn.iis.net/file.axd?i=645

相关文章

精彩推荐