方法: 開発中に使用する一時的な証明書を作成するHow to: Create Temporary Certificates for Use During Development

セキュリティで保護されたサービスまたは Windows Communication Foundation (WCF) を使用してクライアントを開発する場合は、資格情報として使用する X.509 証明書を指定する必要があります。When developing a secure service or client using Windows Communication Foundation (WCF), it is often necessary to supply an X.509 certificate to be used as a credential. 証明書は通常、単独ではなく、いくつもの証明書が信頼チェーンとしてつながった形で存在しており、その最上位に位置するルート証明機関の証明書は、各コンピューターの [信頼されたルート証明機関] の証明書ストアに格納されています。The certificate typically is part of a chain of certificates with a root authority found in the Trusted Root Certification Authorities store of the computer. 証明書を調べて順に信頼チェーンをたどっていくと、たとえば所属する会社や事業部門が運営する、ルート証明機関に到達します。Having a certificate chain enables you to scope a set of certificates where typically the root authority is from your organization or business unit. 開発時にこの過程をエミュレートするためには、セキュリティ要件を満たす 2 種類の証明書を作る必要があります。To emulate this at development time, you can create two certificates to satisfy the security requirements. 1 つは自己署名証明書で、[信頼されたルート証明機関] の証明書ストアに配置します。もう 1 つは、先の自己署名証明書を使って署名を施した証明書で、[ローカル コンピューター] の [個人] ストア、または [現在のユーザー] の [個人] ストアに配置します。The first is a self-signed certificate that is placed in the Trusted Root Certification Authorities store, and the second certificate is created from the first and is placed in either the Personal store of the Local Machine location, or the Personal store of the Current User location. このトピックでは、Powershell を使用してこれら 2 つの証明書を作成する手順について説明しますNew-selfsignedcertificate)コマンドレット。This topic walks through the steps to create these two certificates using the Powershell New-SelfSignedCertificate) cmdlet.

重要

New-selfsignedcertificate コマンドレットによって生成される証明書は、テスト目的でのみ提供されます。The certificates that the New-SelfSignedCertificate cmdlet generates are provided for testing purposes only. 実際にサービスやクライアントを業務に使用する際には、証明機関から取得した、適切な証明書が必要です。When deploying a service or client, be sure to use an appropriate certificate provided by a certification authority. 組織内の Windows Server 証明書サーバーからか、またはサード パーティ製これでした。This could either be from a Windows Server certificate server in your organization or a third party.

既定で、 New-selfsignedcertificateコマンドレットは自己署名証明書を作成し、これらの証明書は安全ではありません。By default, the New-SelfSignedCertificate cmdlet creates certificates that are self-signed and these certificates are insecure. ストアは信頼されたルート証明機関に自己署名証明書を配置するデプロイ環境をより忠実にシミュレートする開発環境を作成できます。Placing the self-signed certificates in the Trusted Root Certification Authorities store enables you to create a development environment that more closely simulates your deployment environment.

作成して、証明書の使用の詳細については、次を参照してください。 Working with Certificatesします。For more information about creating and using certificates, see Working with Certificates. 資格情報として証明書を使用する方法の詳細については、次を参照してください。 Securing Services and Clientsします。For more information about using a certificate as a credential, see Securing Services and Clients. Microsoft Authenticode テクノロジの使用方法については、「 Authenticode Overviews and Tutorials (Authenticode の概要とチュートリアル)」を参照してください。For a tutorial about using Microsoft Authenticode technology, see Authenticode Overviews and Tutorials.

自己署名ルート証明書を作成して秘密キーをエクスポートするにはTo create a self-signed root authority certificate and export the private key

次のコマンドは、"ルート Ca"、現在のユーザー個人用ストアでのサブジェクト名を持つ、自己署名証明書を作成します。The following command creates a self-signed certificate with a subject name of "RootCA" in the Current User Personal store.

$rootCert = New-SelfSignedCertificate -CertStoreLocation cert:\CurrentUser\My -DnsName "RootCA" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2") -KeyUsage CertSign,DigitalSignature

後の手順で必要な場所にインポートできるように、証明書を PFX ファイルにエクスポートする必要があります。We need to export the certificate to a PFX file so that it can be imported to where it's needed in a later step. 秘密キーで証明書をエクスポートするときに、保護するためにパスワードが必要です。When exporting a certificate with the private key, a password is needed to protect it. パスワードを保存、SecureStringを使用して、 Export-pfxcertificateコマンドレットを証明書を PFX ファイルに関連付けられている秘密キーと共にエクスポートします。We save the password in a SecureString and use the Export-PfxCertificate cmdlet to export the certificate with the associated private key to a PFX file. パブリック証明書だけを使用して CRT ファイルに保存、証明書のエクスポートコマンドレット。We also save just the public certificate into a CRT file using the Export-Certificate cmdlet.

[System.Security.SecureString]$rootcertPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText
[String]$rootCertPath = Join-Path -Path 'cert:\CurrentUser\My\' -ChildPath "$($rootcert.Thumbprint)"
Export-PfxCertificate -Cert $rootCertPath -FilePath 'RootCA.pfx' -Password $rootcertPassword
Export-Certificate -Cert $rootCertPath -FilePath 'RootCA.crt'

ルート証明書によって署名された新しい証明書を作成するにはTo create a new certificate signed by a root authority certificate

次のコマンドは、署名された証明書を作成、 RootCA "SignedByRootCA"発行元の秘密キーを使用してのサブジェクト名を使用します。The following command creates a certificate signed by the RootCA with a subject name of "SignedByRootCA" using the private key of the issuer.

$testCert = New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "SignedByRootCA" -KeyExportPolicy Exportable -KeyLength 2048 -KeyUsage DigitalSignature,KeyEncipherment -Signer $rootCert

同様に、署名証明書は、秘密キーを使用して、PFX ファイルと CRT ファイルに公開キーのみに保存します。Similarly, we save the signed certificate with private key into a PFX file and just the public key into a CRT file.

[String]$testCertPath = Join-Path -Path 'cert:\LocalMachine\My\' -ChildPath "$($testCert.Thumbprint)"
Export-PfxCertificate -Cert $testCertPath -FilePath testcert.pfx -Password $rootcertPassword
Export-Certificate -Cert $testCertPath -FilePath testcert.crt

信頼されたルート証明機関の証明書ストアに証明書をインストールするInstalling a Certificate in the Trusted Root Certification Authorities Store

作成された自己署名証明書は、[信頼されたルート証明機関] の証明書ストアにインストールできます。Once a self-signed certificate is created, you can install it in the Trusted Root Certification Authorities store. この証明書で署名された証明書は、この時点で信頼できるものと見なされるようになります。Any certificates that are signed with the certificate at this point are trusted by the computer. したがって、この証明書が不要になった場合は、直ちに証明書ストアから削除してください。For this reason, delete the certificate from the store as soon as you no longer need it. この証明書を削除すると、それを使って署名した証明書は認証されなくなります。When you delete this root authority certificate, all other certificates that signed with it become unauthorized. ルート証明機関の証明書は、必要に応じて一連の証明書を有効化する手段の 1 つにすぎません。Root authority certificates are simply a mechanism whereby a group of certificates can be scoped as necessary. たとえばピアツーピア アプリケーションの場合、証明書が提示されれば相手の識別情報を信頼できるので、ルート証明機関は必要ないのが普通です。For example, in peer-to-peer applications, there is typically no need for a root authority because you simply trust the identity of an individual by its supplied certificate.

自己署名証明書を信頼されたルート証明機関としてインストールするにはTo install a self-signed certificate in the Trusted Root Certification Authorities

  1. 証明書スナップインを開きます。Open the certificate snap-in. 詳細については、「方法 :MMC スナップインで証明書を表示します。For more information, see How to: View Certificates with the MMC Snap-in.

  2. 証明書の格納先となる、 [ローカル コンピューター] または [現在のユーザー] のフォルダーを開きます。Open the folder to store the certificate, either the Local Computer or the Current User.

  3. [信頼されたルート証明機関] フォルダーを開きます。Open the Trusted Root Certification Authorities folder.

  4. [証明書] フォルダーを右クリックして、 [すべてのタスク] メニューの [インポート] を実行します。Right-click the Certificates folder and click All Tasks, then click Import.

  5. 画面の指示に従って、RootCA.pfx をストアにインポートする方法について。Follow the on-screen wizard instructions to import the RootCA.pfx into the store.

WCF で証明書の使用Using certificates With WCF

一時的な証明書を設定したら、それを使用して、クライアント資格情報の種類として証明書を指定する WCF ソリューションを開発できます。Once you have set up the temporary certificates, you can use them to develop WCF solutions that specify certificates as a client credential type. たとえば、次の XML 構成では、メッセージ セキュリティを設定して、クライアント資格情報の種類として証明書を指定しています。For example, the following XML configuration specifies message security and a certificate as the client credential type.

クライアント資格情報の種類として証明書を指定するにはTo specify a certificate as the client credential type

  1. サービスの構成ファイルで、次の XML を使用して、セキュリティ モードをメッセージに、クライアント資格情報の種類を証明書に設定します。In the configuration file for a service, use the following XML to set the security mode to message, and the client credential type to certificate.

    <bindings>
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    
  2. クライアントの構成ファイルでは、次の XML を使用して、証明書がユーザーのストアではあり、"CohoWinery にします"値の SubjectName フィールドを検索して見つかんだことができます。In the configuration file for a client, use the following XML to specify that the certificate is found in the user’s store, and can be found by searching the SubjectName field for the value "CohoWinery."

    <behaviors>
      <endpointBehaviors>
        <behavior name="CertForClient">
          <clientCredentials>
            <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    

WCF での証明書の使用に関する詳細については、「 Working with Certificates」を参照してください。For more information about using certificates in WCF, see Working with Certificates.

.NET Framework のセキュリティ.NET Framework security

一時的なルート証明書は、不要になったら [信頼されたルート証明機関] フォルダーや [個人] フォルダーから確実に削除してください。削除するには、証明書を右クリックし、 [削除] をクリックします。Be sure to delete any temporary root authority certificates from the Trusted Root Certification Authorities and Personal folders by right-clicking the certificate, then clicking Delete.

関連項目See also