访问安全性 <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 的 AlwaysNegoClientCert 和 AccessSSLFlags 元数据库属性。 |
安装
<access>
元素包含在 IIS 7 的默认安装中。
操作方式
如何要求安全套接字层
打开 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)管理器”。
在“连接”窗格中,转到要为其配置 SSL 要求的站点、应用程序或目录。 不能在服务器级别配置 SSL。
在“SSL 设置”窗格中,单击“需要 SSL”。
在“操作”窗格中,单击“应用”。
配置
使用 ApplicationHost.config 文件,可以在服务器级别配置 <access>
元素,使用相应的 Web.config 文件,则可以在站点级别、应用程序级别或目录级别配置。
特性
属性 | 说明 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
sslFlags |
sslFlags 属性可为以下值之一。 默认为 None 。
|
子元素
无。
配置示例
如果 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()