証明書の使用Working with Certificates

Windows Communication Foundation (WCF) のセキュリティをプログラミングする場合、一般に X.509 デジタル証明書を使用して、クライアントとサーバーの認証、暗号化、およびメッセージのデジタル署名を行います。To program Windows Communication Foundation (WCF) security, X.509 digital certificates are commonly used to authenticate clients and servers, encrypt, and digitally sign messages. ここでは、X.509 デジタル証明書の機能および WCF でのそれらの機能の使用方法について簡単に説明します。また、これらの概念の詳細を説明するトピックや、WCF と証明書を使用した一般的なタスクの実行方法が記載されたトピックへのリンクも示します。This topic briefly explains X.509 digital certificate features and how to use them in WCF, and includes links to topics that explain these concepts further or that show how to accomplish common tasks using WCF and certificates.

簡単に言うと、デジタル証明書は、"公開キー基盤 (PKI: Public Key Infrastructure) " の一部です。PKI は、デジタル証明書、証明機関、およびその他の登録機関から成るシステムです。登録機関では、公開キー暗号化を使用して、電子取引に関与する各当事者の有効性の検証と認証を行います。In brief, a digital certificate is a part of a public key infrastructure (PKI), which is a system of digital certificates, certificate authorities, and other registration authorities that verify and authenticate the validity of each party involved in an electronic transaction through the use of public key cryptography. 証明機関は証明書を発行します。各証明書には、"サブジェクト" (証明書の発行先のエンティティ)、有効期間 (証明書が有効な場合)、発行者 (証明書を発行したエンティティ)、公開キーなどのデータが含まれた一連のフィールドがあります。A certification authority issues certificates and each certificate has a set of fields that contain data, such as subject (the entity to which the certificate is issued), validity dates (when the certificate is valid), issuer (the entity that issued the certificate), and a public key. WCF では、これらの各プロパティは Claim (クレーム) として処理されます。各クレームは、さらに ID と権限の 2 種類に分けられます。In WCF, each of these properties is processed as a Claim, and each claim is further divided into two types: identity and right. X.509 証明書の詳細については、「X.509 Public Key Certificates」(X.509 公開キー証明書) を参照してください。For more information about X.509 certificates see X.509 Public Key Certificates. WCF におけるクレームと承認の詳細については、「ID モデルを使用したクレームと承認の管理」を参照してください。For more information about Claims and Authorization in WCF see Managing Claims and Authorization with the Identity Model. PKI の実装の詳細については、「 Windows Server 2012 R2 でのエンタープライズ pki Active Directory 証明書サービス」を参照してください。For more information about implementing a PKI, see Enterprise PKI with Windows Server 2012 R2 Active Directory Certificate Services.

証明書の第一の機能は、他者に対して証明書の所有者の ID を認証することです。The primary function of a certificate is to authenticate the identity of the owner of the certificate to others. 証明書は所有者の "公開キー" を含んでおり、所有者が秘密キーを保持しています。A certificate contains the public key of the owner, while the owner retains the private key. 公開キーを使用して、証明書の所有者に送信されるメッセージを暗号化できます。The public key can be used to encrypt messages sent to the owner of the certificate. 秘密キーにアクセスできるのは所有者だけであるため、所有者だけが暗号化されたメッセージを復号化できます。Only the owner has access to the private key, so only the owner can decrypt those messages.

証明書は、証明機関によって発行される必要があります。多くの場合、証明機関はサードパーティの証明書発行者です。Certificates must be issued by a certification authority, which is often a third-party issuer of certificates. Windows ドメインでは、そのドメインのコンピューターに対して証明書を発行する際に使用できる証明機関が含まれています。On a Windows domain, a certification authority is included that can be used to issue certificates to computers on the domain.

証明書の表示Viewing Certificates

証明書を使用するには、多くの場合、証明書を表示し、プロパティを確認する必要があります。To work with certificates, it is often necessary to view them and examine their properties. Microsoft 管理コンソール (MMC: Microsoft Management Console) スナップイン ツールを使用すると、これを簡単に行うことができます。This is easily done with the Microsoft Management Console (MMC) snap-in tool. 詳細については、「方法 :MMC スナップインを使用して証明書を表示します。For more information, see How to: View Certificates with the MMC Snap-in.

証明書ストアCertificate Stores

証明書はストアに格納されています。Certificates are found in stores. 2 つの主要なストアがあり、さらにサブストアに分かれています。Two major store locations exist that are further divided into sub-stores. コンピューターの管理者は、MMC スナップイン ツールを使用して、両方の主要なストアを表示できます。If you are the administrator on a computer, you can view both major stores by using the MMC snap-in tool. 管理者以外のユーザーは、現在のユーザー ストアだけを表示できます。Non-administrators can view only the current user store.

  • ローカル コンピューター ストア:The local machine store. これには、ASP.NET などのコンピュータープロセスによってアクセスされる証明書が含まれます。This contains the certificates accessed by machine processes, such as ASP.NET. クライアントに対してサーバーを認証するための証明書は、ここに格納します。Use this location to store certificates that authenticate the server to clients.

  • 現在のユーザー ストア:The current user store. コンピューターの現在のユーザーの証明書は、通常、対話型アプリケーションによってここに配置されます。Interactive applications typically place certificates here for the computer's current user. クライアント アプリケーションを作成する場合、サービスに対してユーザーを認証するための証明書は、通常、ここに配置します。If you are creating a client application, this is where you typically place certificates that authenticate a user to a service.

上記の 2 つのストアは、さらにサブストアに分かれています。These two stores are further divided into sub-stores. サブストアの中で、WCF でプログラミングするときに最も重要なものは次のとおりです。The most important of these when programming with WCF include:

  • 信頼されたルート証明機関:Trusted Root Certification Authorities. このストア内の証明書を使用して、証明書チェーンを作成できます。証明書チェーンをさかのぼることで、このストア内の任意の証明機関証明書に到達できます。You can use the certificates in this store to create a chain of certificates, which can be traced back to a certification authority certificate in this store.

    重要

    証明書が信頼されたサードパーティ証明機関から発行されたものではない場合でも、ローカル コンピューターは、このストアに配置された証明書を暗黙で信頼します。The local computer implicitly trusts any certificate placed in this store, even if the certificate does not come from a trusted third-party certification authority. したがって、発行者を完全に信頼し、かつ信頼することの結果を理解していない限り、このストアに証明書を配置しないでください。For this reason, do not place any certificate into this store unless you fully trust the issuer and understand the consequences.

  • 個人:Personal. このストアは、コンピューターのユーザーに関連付けられた証明書に使用されます。This store is used for certificates associated with a user of a computer. 通常、このストアは、信頼されたルート証明機関ストアにある証明機関証明書のいずれかによって発行された証明書に使用されます。Typically this store is used for certificates issued by one of the certification authority certificates found in the Trusted Root Certification Authorities store. また、自己発行され、アプリケーションから信頼された証明書が格納されている場合もあります。Alternatively, a certificate found here may be self-issued and trusted by an application.

証明書ストアの詳細については、「Certificate Stores」(証明書ストア) を参照してください。For more information about certificate stores, see Certificate Stores.

ストアの選択Selecting a Store

証明書を格納する場所の選択は、サービスまたはクライアントの実行方法や実行する状況によって異なります。Selecting where to store a certificate depends how and when the service or client runs. 次の一般規則が適用されます。The following general rules apply:

  • WCF サービスが Windows サービスでホストされる場合は、ローカル コンピューター ストアを使用します。If the WCF service is hosted in a Windows service use the local machine store. ローカル コンピューター ストアに証明書をインストールするには、管理特権が必要です。Note that administrator privileges are required to install certificates into the local machine store.

  • サービスまたはクライアントがユーザー アカウントで実行されるアプリケーションである場合は、現在のユーザー ストアを使用します。If the service or client is an application that runs under a user account, then use the current user store.

ストアへのアクセスAccessing Stores

ストアは、コンピューター上の一種のフォルダーであり、アクセス制御リスト (ACL: Access Control List) によって保護されています。Stores are protected by access control lists (ACLs), just like folders on a computer. インターネットインフォメーションサービス (IIS) でホストされるサービスを作成する場合、ASP.NET プロセスは ASP.NET アカウントで実行されます。When creating a service hosted by Internet Information Services (IIS), the ASP.NET process runs under the ASP.NET account. このアカウントは、サービスが使用する証明書を格納するストアにアクセス可能である必要があります。That account must have access to the store that contains the certificates a service uses. 各主要ストアは既定のアクセス リストで保護されていますが、これらのリストは変更できます。Each of the major stores is protected with a default access list, but the lists can be modified. ストアにアクセスする別のロールを作成した場合、そのロールにアクセス許可を付与する必要があります。If you create a separate role to access a store, you must grant that role access permission. Winhttpcertconfig.exe ツールを使用してアクセスリストを変更する方法については、「」を参照してください。開発時に使用する一時的な証明書を作成します。To learn how to modify the access list using the WinHttpCertConfig.exe tool, see How to: Create Temporary Certificates for Use During Development. IIS でクライアント証明書を使用する方法の詳細については、「ASP.NET Web アプリケーションで認証用のクライアント証明書を使用して Web サービスを呼び出す方法 」を参照してください。For more information about using client certificates with IIS, see How to call a Web service by using a client certificate for authentication in an ASP.NET Web application.

信頼チェーンと証明機関Chain Trust and Certificate Authorities

証明書は、各証明書がその発行元の CA にリンクされる階層構造で作成されます。Certificates are created in a hierarchy where each individual certificate is linked to the CA that issued the certificate. このリンクは CA の証明書へのリンクになります。This link is to the CA’s certificate. CA の証明書は、元の CA の証明書を発行した CA にリンクされます。The CA’s certificate then links to the CA that issued the original CA’s certificate. ルート CA の証明書に到達するまでこのプロセスが繰り返されます。This process is repeated up until the Root CA’s certificate is reached. ルート CA の証明書は本質的に信頼されています。The Root CA’s certificate is inherently trusted.

デジタル証明書を使用する場合、この階層 ("信頼チェーン" とも呼ばれます) に依存してエンティティを認証します。Digital certificates are used to authenticate an entity by relying on this hierarchy, also called a chain of trust. 証明書のチェーンを表示するには、MMC スナップインを使用して、証明書をダブルクリックし、 [証明書パス] タブをクリックします。証明機関の証明書チェーンをインポートする方法の詳細については、「」を参照してください。署名の検証に使用する証明機関の証明書チェーンを指定します。You can view any certificate's chain using the MMC snap-in by double-clicking any certificate, then clicking the Certificate Path tab. For more information about importing certificate chains for a Certification authority, see How to: Specify the Certificate Authority Certificate Chain Used to Verify Signatures.

注意

証明書を "信頼されたルート証明機関" 証明書ストアに配置することにより、その証明書の発行者を信頼されたルート証明機関として指定できます。Any issuer can be designated a trusted root authority by placing the issuer's certificate in the trusted root authority certificate store.

信頼チェーンの無効化Disabling Chain Trust

新しいサービスの作成時には、信頼されたルート証明書によって発行されていない証明書を使用できます。また、発行する証明書が、信頼されたルート証明機関ストアになくてもかまいません。When creating a new service, you may be using a certificate that is not issued by a trusted root certificate, or the issuing certificate itself may not be in the Trusted Root Certification Authorities store. 開発だけを目的としている場合は、証明書の信頼チェーンをチェックする機構を一時的に無効にできます。For development purposes only, you can temporarily disable the mechanism that checks the chain of trust for a certificate. これを行うには、CertificateValidationMode プロパティを PeerTrust または PeerOrChainTrust に設定します。To do this, set the CertificateValidationMode property to either PeerTrust or PeerOrChainTrust. これらのモードにより、証明書を自己発行するか (ピア信頼)、信頼チェーンに含めるかを指定できます。Either mode specifies that the certificate can either be self-issued (peer trust) or part of a chain of trust. このプロパティは、次のどのクラスでも設定できます。You can set the property on any of the following classes.

クラスClass プロパティProperty
X509ClientCertificateAuthentication X509ClientCertificateAuthentication.CertificateValidationMode
X509PeerCertificateAuthentication X509PeerCertificateAuthentication.CertificateValidationMode
X509ServiceCertificateAuthentication X509ServiceCertificateAuthentication.CertificateValidationMode
IssuedTokenServiceCredential IssuedTokenServiceCredential.CertificateValidationMode

構成を使用して、このプロパティを設定することもできます。You can also set the property using configuration. 検証モードを指定するには、次の要素を使用します。The following elements are used to specify the validation mode:

カスタム認証Custom Authentication

CertificateValidationMode プロパティを使用すると、証明書の認証方法をカスタマイズすることもできます。The CertificateValidationMode property also enables you to customize how certificates are authenticated. 既定では、レベルは ChainTrust に設定されています。By default, the level is set to ChainTrust. Custom 値を使用するには、CustomCertificateValidatorType 属性を証明書の検証に使用するアセンブリと型に設定することも必要です。To use the Custom value, you must also set the CustomCertificateValidatorType attribute to an assembly and type used to validate the certificate. カスタム検証を作成するには、抽象 X509CertificateValidator クラスから継承する必要があります。To create a custom validator, you must inherit from the abstract X509CertificateValidator class.

カスタム認証システムを作成する場合、オーバーライドする最も重要なメソッドは Validate メソッドです。When creating a custom authenticator, the most important method to override is the Validate method. カスタム認証の例については、「X.509 証明書検証」のサンプルを参照してください。For an example of custom authentication, see the X.509 Certificate Validator sample. 詳細については、「カスタム資格情報と資格情報の検証」を参照してください。For more information, see Custom Credential and Credential Validation.

PowerShell の新しい SelfSignedCertificate コマンドレットを使用して証明書チェーンを構築するUsing the PowerShell New-SelfSignedCertificate Cmdlet to Build a Certificate Chain

PowerShell の新しい SelfSignedCertificate コマンドレットは、x.509 証明書と秘密キー/公開キーのペアを作成します。The PowerShell New-SelfSignedCertificate cmdlet creates X.509 certificates and private key/public key pairs. 秘密キーをディスクに保存し、新しい証明書の発行と署名に使用できるため、チェーンになった証明書の階層をシミュレートできます。You can save the private key to disk and then use it to issue and sign new certificates, thus simulating a hierarchy of chained certificates. コマンドレットは、サービスを開発する際の補助としてのみ使用することを目的としており、実際の展開用の証明書の作成には使用しないでください。The cmdlet is intended for use only as an aid when developing services and should never be used to create certificates for actual deployment. WCF サービスの開発時には、次の手順に従って、新しい-SelfSignedCertificate コマンドレットを使用して信頼チェーンを構築します。When developing a WCF service, use the following steps to build a chain of trust with the New-SelfSignedCertificate cmdlet.

新しい-SelfSignedCertificate コマンドレットを使用して信頼チェーンを構築するにはTo build a chain of trust with the New-SelfSignedCertificate cmdlet

  1. 新しい SelfSignedCertificate コマンドレットを使用して、一時的なルート証明機関 (自己署名) 証明書を作成します。Create a temporary root authority (self-signed) certificate using the New-SelfSignedCertificate cmdlet. 秘密キーをディスクに保存します。Save the private key to the disk.

  2. この新しい証明書を使用して、公開キーを含む別の証明書を発行します。Use the new certificate to issue another certificate that contains the public key.

  3. 信頼されたルート証明機関ストアに、ルート証明機関証明書をインポートします。Import the root authority certificate into the Trusted Root Certification Authorities store.

  4. 詳細な手順については、「 方法:開発時に使用する一時的な証明書を作成します。For step-by-step instructions, see How to: Create Temporary Certificates for Use During Development.

使用する証明書の選択Which Certificate to Use?

証明書に関する一般的な質問は、どの証明書を使用するかということとその理由に関するものです。Common questions about certificates are which certificate to use, and why. その答えは、クライアントとサービスのどちらをプログラミングするかによって異なります。The answer depends on whether you are programming a client or service. 以下に一般的なガイドラインを示します (これらの質問に対する包括的な答えではありません)。The following information provides a general guideline and is not an exhaustive answer to these questions.

サービス証明書Service Certificates

サービス証明書の第一の目的は、クライアントに対してサーバーを認証することです。Service certificates have the primary task of authenticating the server to clients. クライアントがサーバーを認証するときの最初のチェックの 1 つとして、"サブジェクト" フィールドの値とサービスへのアクセスに使用する URI (Uniform Resource Identifier) が比較されます。この場合、双方の DNS が一致する必要があります。One of the initial checks when a client authenticates a server is to compare the value of the Subject field to the Uniform Resource Identifier (URI) used to contact the service: the DNS of both must match. たとえば、サービスの URI がhttp://www.contoso.com/endpoint/の場合、サブジェクトフィールドにも値www.contoso.comが含まれている必要があります。For example, if the URI of the service is http://www.contoso.com/endpoint/ then the Subject field must also contain the value www.contoso.com.

このフィールドには複数の値を含めることができますが、各値の先頭にはその値を示す初期化コードが付加されます。Note that the field can contain several values, each prefixed with an initialization to indicate the value. 一般的に、初期化は一般的な名前CN = www.contoso.comの "CN" です。たとえば、のようになります。Most commonly, the initialization is "CN" for common name, for example, CN = www.contoso.com. "サブジェクト" フィールドを空白にすることもできます。この場合、"サブジェクト代替名" フィールドに値として DNS 名を含めることができます。It is also possible for the Subject field to be blank, in which case the Subject Alternative Name field can contain the DNS Name value.

また、証明書の "目的" フィールドの値に、適切な値 ("サーバー認証" や "クライアント認証" など) を含める必要があります。Also note the value of the Intended Purposes field of the certificate should include an appropriate value, such as "Server Authentication" or "Client Authentication".

クライアント証明書Client Certificates

通常、クライアント証明書はサードパーティ証明機関によって発行されません。Client certificates are not typically issued by a third-party certification authority. 通常は、"クライアント認証" という目的で、ルート証明機関によって、この証明書が現在のユーザー ストアの個人ストアに配置されます。Instead, the Personal store of the current user location typically contains certificates placed there by a root authority, with an intended purpose of "Client Authentication". クライアントは、相互認証が必要なときにこのような証明書を使用できます。The client can use such a certificate when mutual authentication is required.

オンラインの失効とオフラインの失効Online Revocation and Offline Revocation

証明書の有効期間Certificate Validity

すべての証明書は、"有効期間" と呼ばれる一定の期間にのみ有効です。Every certificate is valid only for a given period of time, called the validity period. 有効期間は、X.509 証明書の "有効期間の開始" フィールドと "有効期間の終了" フィールドによって定義されています。The validity period is defined by the Valid from and Valid to fields of an X.509 certificate. 認証時に、証明書がまだ有効期間内かどうかを確認するためのチェックが行われます。During authentication, the certificate is checked to determine whether the certificate is still within the validity period.

証明書失効リストCertificate Revocation List

有効期間中であっても、証明機関が証明書を失効させる場合があります。At any time during the validity period, the certification authority can revoke a certificate. これは、証明書の秘密キーの侵害など、さまざまな理由によって行われます。This can occur for many reasons, such as a compromise of the private key of the certificate.

証明書が失効した場合、失効した証明書から発生した下位のチェーンも無効になり、認証手順において信頼されなくなります。When this occurs, any chains that descend from the revoked certificate are also invalid, and are not trusted during authentication procedures. 失効した証明書を検出するために、各発行者は日時が記された"証明書失効リスト" (CRL) を発行します。To find out which certificates are revoked, each issuer publishes a time- and date-stamped certificate revocation list (CRL). このリストは、オンラインの失効またはオフラインの失効を使用してチェックできます。これを使用するには、RevocationModeDefaultRevocationModeX509RevocationMode、および X509ClientCertificateAuthentication の各クラスの X509PeerCertificateAuthentication プロパティまたは X509ServiceCertificateAuthentication プロパティを IssuedTokenServiceCredential 列挙値のいずれかに設定します。The list can be checked using either online revocation or offline revocation by setting the RevocationMode or DefaultRevocationMode property of the following classes to one of the X509RevocationMode enumeration values: X509ClientCertificateAuthentication, X509PeerCertificateAuthentication, X509ServiceCertificateAuthentication, and the IssuedTokenServiceCredential classes. すべてのプロパティの既定値は、Online です。The default value for all properties is Online.

(<serviceBehaviors> の) <authentication> と (<endpointBehaviors> の) <authentication>.の両方の revocationMode 属性を使用することにより、構成でモードを設定することもできます。You can also set the mode in configuration using the revocationMode attribute of both the <authentication> (of the <serviceBehaviors>) and the <authentication> (of the <endpointBehaviors>).

SetCertificate メソッドThe SetCertificate Method

WCF では、認証、暗号化、またはメッセージのデジタル署名を行うために、多くの場合、サービスまたはクライアントが使用する証明書または証明書のセットを指定する必要があります。In WCF, you must often specify a certificate or set of certificates a service or client is to use to authenticate, encrypt, or digitally sign a message. これは、X.509 証明書を表すさまざまなクラスの SetCertificate メソッドを使用することで、プログラムによって実行できます。You can do this programmatically by using the SetCertificate method of various classes that represent X.509 certificates. SetCertificate メソッドを使用して証明書を指定するクラスは次のとおりです。The following classes use the SetCertificate method to specify a certificate.

クラスClass メソッドMethod
PeerCredential SetCertificate
X509CertificateInitiatorClientCredential SetCertificate
X509CertificateRecipientServiceCredential SetCertificate
X509CertificateInitiatorServiceCredential
SetCertificate

SetCertificate メソッドを使用するには、ストアの場所とストア、証明書のフィールドを指定する "検索" の種類 (x509FindType パラメーター)、および該当のフィールドで検索する値を指定します。The SetCertificate method works by designating a store location and store, a "find" type (x509FindType parameter) that specifies a field of the certificate, and a value to find in the field. たとえば、次のコードでは、ServiceHost インスタンスを作成し、SetCertificate メソッドを使用して、クライアントに対してサービスを認証する際に使用するサービス証明書を設定しています。For example, the following code creates a ServiceHost instance and sets the service certificate used to authenticate the service to clients with the SetCertificate method.

Uri baseAddress = new Uri("http://cohowinery.com/services");
ServiceHost sh = new ServiceHost(typeof(CalculatorService), baseAddress );
sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine, StoreName.My,
X509FindType.FindBySubjectName, "cohowinery.com");
Dim baseAddress As New Uri("http://cohowinery.com/services")
Dim sh As New ServiceHost(GetType(CalculatorService), baseAddress)
sh.Credentials.ServiceCertificate.SetCertificate( _
StoreLocation.LocalMachine, StoreName.My, _
X509FindType.FindBySubjectName, "cohowinery.com")

同じ値が含まれた複数の証明書Multiple Certificates with the Same Value

ストアには、同じサブジェクト名が含まれた複数の証明書が格納されていることがあります。A store may contain multiple certificates with the same subject name. つまり、x509FindTypeFindBySubjectName または FindBySubjectDistinguishedName を指定したときに、複数の証明書に同じ値が含まれていると、必要な証明書を区別することができないため、例外がスローされます。This means that if you specify that the x509FindType is FindBySubjectName or FindBySubjectDistinguishedName, and more than one certificate has the same value, an exception is thrown because there is no way to distinguish which certificate is required. この状況は、x509FindTypeFindByThumbprint に設定することによってある程度防ぐことができます。You can mitigate this by setting the x509FindType to FindByThumbprint. 拇印フィールドには一意の値が含まれるため、このフィールドを使用することで、ストア内の特定の証明書を検索できます。The thumbprint field contains a unique value that can be used to find a specific certificate in a store. ただし、この方法には欠点があります。証明書が失効したり、更新されたりした場合、拇印も失われてしまうため、SetCertificate メソッドは失敗します。However, this has its own disadvantage: if the certificate is revoked or renewed, the SetCertificate method fails because the thumbprint is also gone. また、証明書が有効でなくなると、認証が失敗します。Or, if the certificate is no longer valid, authentication fails. このような状況が発生する可能性を軽減する方法として、x590FindType パラメーターを FindByIssuerName に設定し、発行者の名前を指定します。The way to mitigate this is to set the x590FindType parameter to FindByIssuerName and specify the issuer's name. 特定の発行者が必要ではない場合は、その他の X509FindType 列挙値のいずれか (FindByTimeValid など) を設定することもできます。If no particular issuer is required, you can also set one of the other X509FindType enumeration values, such as FindByTimeValid.

構成における証明書Certificates in Configuration

証明書は、構成を使用して設定することもできます。You can also set certificates by using configuration. サービスを作成する場合、<serviceBehaviors> で証明書をはじめとする資格情報を指定します。If you are creating a service, credentials, including certificates, are specified under the <serviceBehaviors>. クライアントをプログラミングする場合は、<endpointBehaviors> で証明書を指定します。When you are programming a client, certificates are specified under the <endpointBehaviors>.

ユーザー アカウントへの証明書のマッピングMapping a Certificate to a User Account

IIS と Active Directory には、証明書を Windows ユーザー アカウントにマップできる機能があります。A feature of IIS and Active Directory is the ability to map a certificate to a Windows user account. この機能の詳細については、「Map certificates to user accounts」(ユーザー アカウントへの証明書のマッピング) を参照してください。For more information about the feature, see Map certificates to user accounts.

Active Directory のマッピングを使用する方法の詳細については、「Mapping Client Certificates with Directory Service Mapping」(ディレクトリ サービスのマッピングによるクライアント証明書のマッピング) を参照してください。For more information about using Active Directory mapping, see Mapping Client Certificates with Directory Service Mapping.

この機能が有効になっている場合、MapClientCertificateToWindowsAccount クラスの X509ClientCertificateAuthentication プロパティを true に設定できます。With this capability enabled, you can set the MapClientCertificateToWindowsAccount property of the X509ClientCertificateAuthentication class to true. 構成では、次のコードに示すように、<authentication> 要素の mapClientCertificateToWindowsAccount 属性を true に設定できます。In configuration, you can set the mapClientCertificateToWindowsAccount attribute of the <authentication> element to true, as shown in the following code.

<serviceBehaviors>
 <behavior name="MappingBehavior">
  <serviceCredentials>
   <clientCertificate>
    <authentication certificateValidationMode="None" mapClientCertificateToWindowsAccount="true" />
   </clientCertificate>
  </serviceCredentials>
 </behavior>
</serviceBehaviors>

Windows ユーザー アカウントを表すトークンに X.509 証明書をマップすると、Windows トークンを使用して保護されたリソースにアクセスできるため、このマッピングが特権の昇格と見なされます。Mapping an X.509 certificate to the token that represents a Windows user account is considered an elevation of privilege because, once mapped, the Windows token can be used to gain access to protected resources. したがって、マッピングを行う前に、ドメイン ポリシーにそのポリシーに準拠する X.509 証明書が必要となります。Therefore, domain policy requires the X.509 certificate to comply with its policy prior to mapping. この要件は、SChannel セキュリティ パッケージによって適用されます。The SChannel security package enforces this requirement.

.NET Framework version 3.5.NET Framework version 3.5 以降を使用している場合は、Windows アカウントにマッピングされる前に、証明書がドメイン ポリシーに準拠していることが WCF によって確認されます。When using .NET Framework version 3.5.NET Framework version 3.5 or later, WCF ensures the certificate conforms to domain policy before it is mapped to a Windows account.

WCF の最初のリリースでは、ドメイン ポリシーを参照せずにマッピングが実行されます。In the first release of WCF, mapping is done without consulting the domain policy. そのため、マッピングが有効になっており、X.509 証明書がドメイン ポリシーを満たしていない場合は、最初のリリースの下で実行しているときには動作していた古いアプリケーションが動作しなくなる可能性があります。Therefore it is possible that older applications that used to work when running under the first release, fails if the mapping is enabled and the X.509 certificate does not satisfy the domain policy.

関連項目See also