0

を使用して、サードパーティのCA発行のPFX証明書をインポートしましたPFXImportCertStore。インポートが成功すると、同じ呼び出しによってデフォルトPCERT_KEY_PROV_INFO_PROP_IDで次の値に設定されます。PFXImportCertStore

ここに画像の説明を入力してください

  1. なぜではなくキータイプdwKeySpecとして認識されるのですか?AT_KEYEXCHANGEAT_SIGNATURE

  2. pwszProvNameMicrosoft Base Cryptographic Provider v1.0に設定されているのはなぜですか?

  3. そもそも証明書はデジタル署名のためにのみ発行されました。ただし、キー使用法フィールドは、証明書がデジタル署名、否認防止、キー暗号化、データ暗号化(f0)に使用できることを示しています。強化されたキーの使用法は、クライアント認証と安全な電子メールを示していますか?CAは証明書を正しく発行しましたか?証明書の前面には次のメッセージ(下のスクリーンショット)が表示されます。これは、この証明書がデジタル歌唱用に発行されたものではないことを疑わせるものですか?私は正しく考えていますか?

ここに画像の説明を入力してください

4.これらの問題のため、を使用してデータに署名することができませんCryptSignMessage。内部呼び出しは、署名用の秘密鍵へのコンテキストの取得に失敗します。この問題を回避する方法についての提案はありますか?生成した自己署名PFX証明書で署名できます。SHA256が必要なため、秘密鍵を新しいコンテナにエクスポートして、プロパティをに設定しAT_SIGNATURE、cspプロバイダーのタイプをに設定できると思いますか。PROV_RSA_AES

XPsp3を使用しています。

ありがとう

4

1 に答える 1

3

回答1:キーは、セッションキーなどの暗号化にも使用されるため、自動的に分類されAT_KEYEXCHANGEます。つまり、私のアプリケーションの主な目的はデータにデジタル署名することですが、CAは、暗号化を含めるようにキー使用ポリシーを定義しました。これにより、CryptoAPIがマップされます。キータイプAT_KEYEXCHANGE

回答2:このマシンのデフォルトのcspであると思いますので、...?もっと良い説明をお願いします

回答3:Crypto Googleグループのメンバーからの多くの返信からAT_KEYEXCHANGE、証明書のキーの使用法でデジタル署名が可能であれば、キーを使用してデータに署名することもできます。サードパーティのCAが、複数の目的に使用できる証明書を発行することは一般的な方法のようです。したがって、サードパーティのCAは証明書を正しく発行しています。

回答4:CryptSignMessage同じサードパーティ発行の証明書を使用してデータに署名することができました。をに変更し、dwProvTypePCERT_KEY_PROV_INFO_PROP_IDNULLPROV_RSA_AESを渡しましたpwsProvName。この変更は、CertGetCertificateContextProperty最初にを使用してプロパティを取得し、次にを使用CertSetCertificateContextProperty して選択したプロパティを設定することによって実行されます。これにより、署名の問題が修正されました。これで、 SHA256 /RSA1024キーで署名できるようになりましたAT_EXCHANGE

于 2011-06-12T18:11:21.103 に答える