如何在IIS 7上设置SSL
如何在IIS 7上设置SSL
介绍
在IIS 7和更高版本以及IIS 6.0中,为站点配置安全套接字层(SSL)的步骤相同,包括以下步骤:
- 获取适当的证书。
- 在站点上创建HTTPS绑定。
- 通过向站点提出请求进行测试。
- (可选)配置SSL选项,即通过将SSL作为一项要求。
本文档提供有关SSL的一些基本信息,然后说明如何通过以下方式启用SSL:
- 使用IIS管理器。
- 使用AppCmd.exe命令行工具。
- 通过Microsoft.Web.Administration以编程方式进行。
- 使用WMI脚本。
本文包含以下部分:
SSL配置
无论您是在自己的服务器上还是在云中运行网站,使用SSL来保护您的网站都对您来说非常重要,因为许多网站都在使用它来保护用户的隐私。如果需要在服务器上配置SSL,则必须意识到SSL的实现已从IIS 6.0更改为IIS 7及更高版本,这一点很重要。在Windows Server 2003的IIS 6.0中,所有SSL配置都存储在IIS配置数据库中,并且加密/解密在用户模式下进行(需要大量内核/用户模式转换)。在IIS 7和更高版本中,HTTP.sys在内核模式下处理SSL加密/解密,与IIS 6.0相比,IIS 7和更高版本中的安全连接性能提高了20%。
在内核模式下使用SSL需要将SSL绑定信息存储在两个位置。首先,绑定存储在站点的%windir%\ System32 \ inetsrv \ config \ applicationHost.config中。当站点启动时,IIS将绑定发送到HTTP.sys,然后HTTP.sys开始侦听指定IP:Port上的请求(这适用于所有绑定)。其次,与绑定关联的SSL配置存储在HTTP.sys配置中。在命令提示符处使用netsh命令,以查看存储在HTTP.sys中的SSL绑定配置,如以下示例所示:
安慰复制
netsh http show sslcert
当客户端连接并启动SSL协商时,HTTP.sys在其SSL配置中查找客户端连接到的IP:Port对。在SSL协商成功之前,HTTP.sys SSL配置必须包含证书哈希和证书存储的名称。
故障排除技巧:如果您在使用SSL绑定时遇到问题,请验证在ApplicationHost.config中配置了绑定,并且HTTP.sys存储区包含有效的证书哈希和该存储区的存储名称。
选择证书
选择证书时,请考虑以下事项:您是否希望最终用户能够使用证书来验证服务器的身份?如果是,则创建一个证书请求,然后将该请求发送到已知的证书颁发机构(CA),例如VeriSign或GeoTrust,或者从您的Intranet域中的在线CA获取证书。浏览器通常在服务器证书中验证三件事:
- 当前日期和时间在证书的“有效期自”和“有效期至”日期范围内。
- 证书的“公用名”(CN)与请求中的主机头匹配。例如,如果客户端向发送请求https://www.contoso.com/,则CN必须为www.contoso.com。
- 证书的颁发者是已知且受信任的CA。
如果这些检查中的一项或多项失败,浏览器将向用户提示警告。如果您的最终用户不是您自己认识的人的Internet站点或Intranet站点,则应始终确保这三个参数有效。
自签名证书是在计算机上创建的证书。它们在最终用户不信任您的服务器的环境(例如测试环境)中很有用。
使用AppCmd
您不能使用AppCmd.exe请求或创建证书。您也不能使用AppCmd.exe创建SSL绑定。
配置SSL设置
您可以通过修改“访问”部分中的sslFlags属性,使用AppCmd.exe将站点配置为仅接受服务器HTTPS连接。例如,可以使用以下命令为ApplicationHost.config文件中的“默认网站”配置此设置(例如,commitPath:APPHOST):
安慰复制
%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl
如果成功,将显示以下消息:
安慰复制
Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"
注意
要要求使用128位SSL,请将sslFlags值更改为Ssl128。
下面的示例演示如何查看默认网站的<access />部分设置。该sslFlags属性已成功设置。
安慰复制
%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access
执行命令将在ApplicationHost.config文件中产生以下条目:
XML格式复制
<system.webServer>
<security>
<access flags="Script, Read" sslFlags="Ssl" />
</security>
</system.webServer>
使用WMI
您不能使用WebAdministration WMI名称空间来请求或创建证书。
创建一个SSL绑定
以下脚本演示了如何创建新的SSL绑定以及如何为HTTP.sys和IIS添加适当的配置:
安慰复制
Set oIIS = GetObject("winmgmts:root\WebAdministration")
VB复制
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''
oIIS.Get("SSLBinding").Create _
"*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
VB复制
'''''''''''''''''''''''''''''''''''''''''''''
' 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_
注意
证书哈希和存储必须引用服务器上的真实功能证书。如果证书哈希和/或商店名称是伪造的,则返回错误。
配置SSL设置
以下脚本演示了如何通过使用IIS WMI提供程序来设置SSL设置。您可以在IIS_Schema.xml文件中找到此值。
复制
CONST SSL = 8
Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSection = oIIS.Get(\_
"AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")
oSection.SslFlags = oSection.SslFlags OR SSL
oSection.Put\_ <a id="IISManager"></a>
IIS管理器
取得证书
在树视图中选择服务器节点,然后在列表视图中双击“ 服务器证书”功能:
单击“ 操作”窗格中的“ 创建自签名证书... ” 。
输入新证书的友好名称,然后单击“ 确定”。
现在,您拥有了一个自签名证书。该证书标记为“服务器身份验证”使用;也就是说,它用作HTTP SSL加密和身份验证服务器身份的服务器端证书。
创建一个SSL绑定
在树形视图中选择一个站点,然后在“ 操作”窗格中单击“ 绑定... ” 。这将打开绑定编辑器,使您可以创建,编辑和删除网站的绑定。单击添加...,将新的SSL绑定添加到站点。
新绑定的默认设置在端口80上设置为HTTP。在“ 类型”下拉列表中选择https。从SSL证书下拉列表中选择您在上一节中创建的自签名证书,然后单击确定。
现在,您的站点上有了一个新的SSL绑定,剩下的就是验证它是否有效。
验证SSL绑定
在“操作”窗格中的“浏览网站”下,单击与您刚创建的绑定关联的链接。
Internet Explorer(IE)7及更高版本将显示错误页面,因为自签名证书是由您的计算机而不是受信任的证书颁发机构(CA)颁发的。如果将证书添加到本地计算机上或域的组策略中的证书中,则将IE 7及更高版本信任该证书。单击继续浏览此网站(不推荐)。
配置SSL设置
如果您希望站点需要SSL或与客户端证书以特定方式进行交互,请配置SSL设置。单击树视图中的站点节点,以返回到站点的主页。双击中间窗格中的“ SSL设置”功能。
摘要
在本演练中,我们成功使用了命令行工具AppCmd.exe,脚本提供程序WMI和IIS管理器来在IIS上设置SSL。