アクセス セキュリティ <access>
- 概要
- 互換性
- セットアップ
- 方法
- 構成
- サンプル コード
※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。
概要
<access>
要素を使用することによって、Web サイトまたはアプリケーションで認証用にクライアント証明書を使用するかどうかを構成できると共に、これらの証明書を暗号化する際に必要となる暗号化の強さを定義できます。
<access>
要素に組み込む sslFlags 属性は、次のいずれかの値に設定できます。
- None。この既定値では、サイトまたはアプリケーションで SSL が無効になります。
- Ssl。サイトまたはアプリケーションは SSL を必要とします。
- SslNegotiateCert。サイトまたはアプリケーションは認証用にクライアント証明書を受け入れます。
- SslRequireCert。サイトまたはアプリケーションは認証用にクライアント証明書を必要とします。
- Ssl128。サイトまたはアプリケーションは 128 ビット SSL 証明書の暗号化を必要とします。
access 要素を使用して、クライアント証明書を必要とするようにサイト、アプリケーション、または仮想ディレクトリを構成できます。この構成を行うには、サイトまたはアプリケーションに対して HTTPS バインドを設定し、証明機関 (CA) に証明書を要求して取得します。この証明書には、インターネット サーバーの証明書、ドメイン サーバーの証明書、または自己署名サーバー証明書を使用できます。インターネット サーバーの証明書の場合、この証明書を CA に要求し、CA からサーバーに対して証明書を発行してもらう必要があります。ドメイン サーバーの証明書は、自社のドメインで実行されている CA コンピューターによって発行されるもので、内部リソースへのアクセスを、証明書をインストールした従業員のみに制限するのに役立ちます。自己署名証明書は、サードパーティの証明書の問題のトラブルシューティング、インターネット インフォメーション サービス (IIS) 7.0 のリモート管理、サーバーと特定のユーザー グループ間のセキュリティで保護されたプライベート チャネルの作成、または SSL に依存するアプリケーション機能のテスト時に使用できます。
互換性
IIS 7.0 | IIS 6.0 | |
---|---|---|
注意 | <access> は IIS 7.0 で新たに導入された要素です。 |
<access> 要素は、IIS 6.0 のメタベース プロパティ SSLAlwaysNegoClientCert および AccessSSLFlags に代わるものです。 |
セットアップ
<access>
要素は、IIS 7.0 の既定のインストールに含まれています。
方法
Secure Sockets Layer を要求する方法
タスク バーで [スタート] ボタンをクリックし、[管理ツール] から [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。
[接続] ウィンドウで、SSL 要求の構成対象のサイト、アプリケーション、またはディレクトリを選択します。サーバー レベルで SSL を構成することはできません。
[ホーム] ウィンドウで [SSL 設定] をダブルクリックします。
[SSL 設定] ウィンドウで [SSL が必要] をクリックします。
[操作] ウィンドウで [適用] をクリックします。
構成
サーバー レベルでの <access>
要素の構成は applicationHost.config ファイルで、サイト、アプリケーション、またはディレクトリ レベルでのこの要素の構成は該当する Web.config ファイルで、それぞれ設定できます。
属性
属性 | 説明 |
---|---|
sslFlags |
sslFlags 属性には、次のいずれかの値を指定できます。既定値は None です。値 説明 -------------- -------------------------------------------------------- None SSL を無効にします。 Ssl SSL を必要とします。 SslNegotiateCert 認証用にクライアント証明書を受け入れます。 SslRequireCert 認証用にクライアント証明書を必要とします。 SslMapCert 証明書マッピング認証を有効にします。 Ssl128 128 ビットの SSL を必要とします。 |
子要素
なし
構成サンプル
次の構成例を applicationHost.config ファイルに組み込むと、Contoso という名前の Web サイトとすべてのクライアント ブラウザー間で SSL 接続が必要になります。
<location path="Contoso">
<system.webServer>
<security>
<access sslFlags="ssl">
</security>
</system.webServer>
</location>
サンプル コード
次の例では、Contoso という名前の Web サイトへのアクセスに SSL を要求しています。
AppCmd.exe
appcmd.exe set config "Contoso" -section:system.webServer/security/access /sslFlags:"Ssl" /commit:apphost
注 :AppCmd.exe を使用してこれらの設定を構成する際には、commit パラメーターを APPHOST に設定する必要があります。それにより、applicationHost.config ファイル内の該当する location セクションに構成設定が適用されます。
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()