zoukankan      html  css  js  c++  java
  • IIS7下配置SSL

    IIS7下配置SSL

    IIS6Windows2003)下,SSL的所有配置信息都保存在IIS元数据中,在用户模式中加密解密(这会耗费很多的内核/用户模式转换)。在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.sysSSL绑定配置:

    netsh http show sslcert

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

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

    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值和名称必须引用了你服务其上真实且有用的证书。如果其中有一项虚假,就会出现错误。

    配置SSL设置

    以下脚本展示了如何通过IIS7WMI提供程序来设置SSL

    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_

    Ø 使用IIS管理器来绑定SSL证书

    获取一个证书

    在树目录中选择服务器节点,在右面双击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绑定。

    http://learn.iis.net/Content_Cache/144/How%20to%20setup%20SSL%20on%20iis%207%20-%20Figure%203.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

    标签: WMI, IIS7, SSL
  • 相关阅读:
    USDT与omniCore钱包
    C# 事件(第四章)
    委托进阶(第三章)
    委托入门(第二章)
    委托入门(第一章)
    asp.net页面生命周期
    在WEB程序中小心使用"ThreadStatic"
    如何在一个请求中共享数据或对象实例
    .net垃圾回收机制原理
    MVC模式简介
  • 原文地址:https://www.cnblogs.com/dajiang02/p/2040793.html
Copyright © 2011-2022 走看看