访问安全性 <access>

概述

<access> 元素可用于配置网站或应用程序是否使用客户端证书进行身份验证,还可用于定义这些证书加密所需要的加密强度。

<access> 元素包含一个 sslFlags 属性,可以将此属性设置为以下值之一:

  • 。 此默认设置将禁用站点或应用程序的 SSL。
  • Ssl。 站点或应用程序需要 SSL。
  • SslNegotiateCert。 站点或应用程序接受用于身份验证的客户端证书。
  • SslRequireCert。 站点或应用程序需要客户端证书进行身份验证。
  • Ssl128。 站点或应用程序需要 128 位 SSL 证书加密。

可以使用 access 元素将配置站点、应用程序或虚拟目录配置为要求客户端证书。 为此,请为站点或应用程序设置 HTTPS 绑定,然后从证书颁发机构 (CA) 请求和接收证书。 证书可以是 Internet Server 证书、域服务器证书或自签名服务器证书。 Internet 服务器证书要求在请求服务器后颁发服务器或服务器证书。 域服务器证书由运行在公司域上的 CA 计算机颁发,有助于控制对内部资源的访问权:仅限安装了该证书的员工。 可以使用自签名证书来排查第三方证书问题、远程管理 Internet Information Services (IIS) 7、在服务器与所选用户组之间创建安全专用通道,或测试依赖于 SSL 的应用程序功能。

兼容性

版本 说明
IIS 10.0 <access> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <access> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <access> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <access> 元素未在 IIS 7.5 中进行修改。
IIS 7.0 <access> 元素是在 IIS 7.0 中引入的。
IIS 6.0 <access> 元素取代了 IIS 6.0 的 AlwaysNegoClientCertAccessSSLFlags 元数据库属性。

安装

<access> 元素包含在 IIS 7 的默认安装中。

操作方式

如何要求安全套接字层

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”。
      • 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”。
      • 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
  2. 在“连接”窗格中,转到要为其配置 SSL 要求的站点、应用程序或目录。 不能在服务器级别配置 SSL。

  3. 在“开始”窗格中,双击“SSL 设置”。
    Screenshot of the Home pane with the S S L Settings icon being highlighted.

  4. 在“SSL 设置”窗格中,单击“需要 SSL”。

  5. 在“操作”窗格中,单击“应用”

配置

使用 ApplicationHost.config 文件,可以在服务器级别配置 <access> 元素,使用相应的 Web.config 文件,则可以在站点级别、应用程序级别或目录级别配置。

特性

属性 说明
sslFlags sslFlags 属性可为以下值之一。 默认为 None
说明
None 禁用 SSL。
Ssl 要求 SSL。
SslNegotiateCert 接受用于身份验证的客户端证书。
SslRequireCert 要求客户端证书进行身份验证。
SslMapCert 启用证书映射身份验证。
Ssl128 需要 128 位 SSL。

子元素

无。

配置示例

如果 ApplicationHost.config 中包含以下配置示例,则会要求在名为 Contoso 的网站和所有客户端浏览器之间建立 SSL 连接。

<location path="Contoso">
   <system.webServer>
      <security>
         <access sslFlags="ssl">
      </security>
   </system.webServer>
</location>

代码示例

以下示例使 SSL 访问名为 Contoso 的网站需要 SSL。

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/security/access /sslFlags:"Ssl" /commit:apphost

注意

使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 apphost。 这会将配置设置提交到 ApplicationHost.config 文件中的相应位置部分。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {
   private static void Main() {
      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", "Contoso");
         accessSection["sslFlags"] = @"Ssl";
         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim accessSection As ConfigurationSection = config.GetSection("system.webServer/security/access", "Contoso")
      accessSection("sslFlags") = "Ssl"
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Contoso");
accessSection.Properties.Item("sslFlags").Value = "Ssl";

adminManager.CommitChanges();

VBScript

Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Contoso")
accessSection.Properties.Item("sslFlags").Value = "Ssl"

adminManager.CommitChanges()