アクセス セキュリティ <access>

概要

<access> 要素を使用すると、Web サイトまたはアプリケーションで認証にクライアント証明書を使用するかどうかを構成でき、これらの証明書の暗号化に必要な暗号化強度を定義できます。

<access> 要素には、次のいずれかの値に設定できる sslFlags 属性が含まれています。

  • なし。 この既定の設定では、サイトまたはアプリケーションの SSL が無効になります。
  • Ssl。 サイトまたはアプリケーションには SSL が必要です。
  • SslNegotiateCert。 サイトまたはアプリケーションは、認証のためにクライアント証明書を受け入れます。
  • SslRequireCert。 サイトまたはアプリケーションでは、認証にクライアント証明書が必要です。
  • Ssl128。 サイトまたはアプリケーションには、128 ビット SSL 証明書暗号化が必要です。

アクセス要素を使用して、クライアント証明書を要求するようにサイト、アプリケーション、または仮想ディレクトリを構成できます。 これを行うには、サイトまたはアプリケーションの HTTPS バインドを設定し、証明機関 (CA) から証明書を要求して受信します。 証明書には、インターネット サーバー証明書、ドメイン サーバー証明書、または自己署名サーバー証明書を指定できます。 インターネット サーバー証明書を要求した後、CA がサーバーに証明書を発行する必要があります。 ドメイン サーバー証明書は、会社のドメインで実行されている CA コンピューターによって発行され、証明書をインストールした従業員のみに対する内部リソースへのアクセスを制御するのに役立ちます。 自己署名証明書を使用すると、サードパーティの証明書の問題のトラブルシューティング、インターネット インフォメーション サービス (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 SSLAlwaysNegoClientCert および AccessSSLFlags メタベース プロパティを置き換えます。

段取り

<access> 要素が IIS 7 の既定のインストールに含められます。

操作方法

Secure Sockets Layer を要求する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、SSL 要件を構成するサイト、アプリケーション、またはディレクトリに移動します。 サーバー レベルで SSL を構成することはできません。

  3. [ホーム] ウィンドウで、[SSL 設定] をダブルクリックします。
    Screenshot of the Home pane with the S S L Settings icon being highlighted.

  4. [SSL 設定] ウィンドウで、[SSL を必須にする] をクリックします。

  5. [操作] ウィンドウで、[適用] をクリックします。

構成

<access> 要素は、ApplicationHost.config ファイルのサーバー レベルで構成することも、適切な Web.config ファイルのサイト、アプリケーション、またはディレクトリ レベルで構成することもできます。

属性

属性 説明
sslFlags sslFlags 属性には、次のいずれかの値を指定できます。 既定値は、None です。
Value 説明
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

Note

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()