次の方法で共有


AD FS と証明書の KeySpec プロパティ情報

キー仕様 ("KeySpec") は、証明書とキーに関連付けられているプロパティです。 証明書に関連付けられている秘密キーを署名、暗号化、またはその両方に使用できるかどうかを指定します。

KeySpec の値が正しくないと、AD FS と Web アプリケーション プロキシで次のようなエラーが発生する可能性があります。

  • AD FS イベントがログに記録されていない AD FS または Web アプリケーション プロキシへの SSL/TLS 接続を確立できませんでした (ただし、SChannel 36888 および 36874 イベントはログに記録できます)。
  • AD FS または WAP フォーム ベースの認証ページでサインインに失敗し、ページにエラー メッセージが表示されません。

イベント ログに次のイベントが表示される場合があります。

Log Name:   AD FS Tracing/Debug
Source: AD FS Tracing
Date:   2/12/2015 9:03:08 AM
Event ID:   67
Task Category: None
Level:  Error
Keywords:   ADFSProtocol
User:   S-1-5-21-3723329422-3858836549-556620232-1580884
Computer:   ADFS1.contoso.com
Description:
Ignore corrupted SSO cookie.

問題の原因

KeySpec プロパティは、Microsoft レガシ暗号化ストレージ プロバイダー (CSP) から Microsoft CryptoAPI (CAPI) を使用して生成または取得されるキーを使用する方法を識別します。

KeySpec 値 1 ( AT_KEYEXCHANGE) は、署名と暗号化に使用できます。 値 2 ( AT_SIGNATURE) は、署名にのみ使用されます。

最も一般的な KeySpec の誤構成は、トークン署名証明書以外の証明書に値 2 を使用することです。

暗号化次世代 (CNG) プロバイダーを使用してキーが生成された証明書の場合、キー指定の概念はなく、KeySpec 値は常に 0 です。

この記事の次のセクションで、有効な KeySpec 値を確認する方法について説明します。

従来の CSP の例として、Microsoft Enhanced Cryptographic Provider があります。

Microsoft RSA CSP キー BLOB 形式には、AT_KEYEXCHANGE **または **AT_SIGNATURE キーのサービス要求に対するアルゴリズム識別子 (それぞれCALG_RSA_KEYXまたはCALG_RSA_SIGN) が含まれています。

RSA キー アルゴリズム識別子は、次のように KeySpec 値にマップされます。

プロバイダーでサポートされているアルゴリズム CAPI 呼び出しのキー仕様値
CALG_RSA_KEYX : 署名と暗号化解除に使用できる RSA キー AT_KEYEXCHANGE (または KeySpec=1)
CALG_RSA_SIGN : RSA 署名のみのキー AT_SIGNATURE (または KeySpec=2)

KeySpec 値と関連する意味

さまざまな KeySpec 値の意味を次に示します。

Keyspec 値 手段 推奨される AD FS の使用
0 証明書が CNG 証明書である SSL 証明書のみ
1 従来の CAPI (非 CNG) 証明書の場合、署名と暗号化解除にキーを使用できます SSL, トークン署名, トークン暗号化解除, サービス通信証明書
2 従来の CAPI (非 CNG) 証明書の場合、キーは署名にのみ使用できます お勧めしません

証明書/キーの KeySpec 値を確認する方法

証明書の値を表示するには、 certutil コマンド ライン ツールを使用します。

次に例を示します。certutil –v –store my. このコマンドは、証明書情報を画面にダンプします。

Keyspec 証明書

CERT_KEY_PROV_INFO_PROP_IDで、次の 2 つを探します。

  • ProviderType: これは、新しい証明書次世代 (CNG) API に基づいて、証明書で従来の暗号化ストレージ プロバイダー (CSP) またはキー ストレージ プロバイダーのどちらを使用するかを示します。 0 以外の値は、レガシ プロバイダーを示します。

  • KeySpec: 次の表に、AD FS 証明書の有効な KeySpec 値を示します。

    レガシ CSP プロバイダー (ProviderType が 0 以外):

    AD FS 証明書の目的 有効な KeySpec 値
    サービス通信 1
    トークンの暗号化解除 1
    トークン署名 1 と 2
    SSL 1

    CNG プロバイダー (ProviderType = 0):

    AD FS 証明書の目的 有効な KeySpec 値
    SSL 0

証明書の keyspec をサポートされている値に変更する方法

KeySpec 値を変更する場合、証明書を再生成または再発行する必要はありません。 KeySpec は、次の手順を使用して、完全な証明書と秘密キーを PFX ファイルから証明書ストアに再インポートすることで変更できます。

  1. 再インポート後に必要に応じて再構成できるように、既存の証明書の秘密キーのアクセス許可を確認して記録します。
  2. 秘密キーを含む証明書を PFX ファイルにエクスポートします。
  3. AD FS および WAP サーバーごとに次の手順を実行します。
    1. (AD FS/WAP サーバーから) 証明書を削除します。
    2. 管理者特権の PowerShell コマンド プロンプトを開きます。
    3. 次の構文を使用して、各 AD FS および WAP サーバーに PFX ファイルをインポートし、 AT_KEYEXCHANGE 値を指定します (これはすべての AD FS 証明書の目的で機能します)。
      1. certutil –importpfx certfile.pfx AT_KEYEXCHANGE
      2. PFX パスワードを入力します。
    4. 上記のプロセスが完了したら、次の操作を行います。
      1. 秘密キーのアクセス許可を確認します。
      2. AD FS または WAP サービスを再起動します。