3

クライアントが認証のために証明書を提供する必要がある、私が書いたサイトへの Web 要求を作成しようとしています。

具体的には、Web 要求を作成できる C# (または Visual C++) アプリケーションを作成しようとしていますが、HSM で証明書と秘密鍵を使用します。

ここに同様の質問が 1 つありますが、必要な回答が得られていません。

私はすでにできます:

  • P/ネイティブ pkcs#11 ライブラリ (DLL) を呼び出し、ログインし、HSM でオブジェクトを検索/作成します
  • pkcs#11 インターフェイスを使用して、HSM で X509 証明書を見つけることができます

私はできません:

  • HSM から秘密鍵をエクスポートします。エクスポートできません。

したがって、アプリケーションから Web リクエストを作成して、「ハンドシェイクには、HSM で X509 オブジェクトと秘密鍵オブジェクトを使用してください」と言う方法が必要です。

NCryptoki、Bouncy Castle などを「チェックアウト」するように提案しないでください。Windows アプリを作成するために既に使用できます。HSM と通信します。必要なのは、Windows アプリを作成する方法です。HSM の資格情報のコンテキストで Web 要求を行います。

4

1 に答える 1

1

ネイティブ コールを介して証明書を取得する場合、pkcs#11秘密鍵は添付されていません。秘密鍵は復号化を行うため、それが必要です。これを回避するには、次の 2 つのオプションがあります。

  1. ほとんどすべてのデバイスは、インストール時に暗号化サービス プロバイダーを登録します。たとえば、そのプロバイダーをラップして、証明書のプロパティにRSACryptoServiceProvider割り当てることができます。PrivateKey

  2. 一部のデバイス ドライバーは、HSM からの証明書を個人証明書ストアと同期します。Windows ストアから証明書を選択すると、自動的に暗号化サービス プロバイダーがアタッチされます。したがって、秘密鍵の欠落の問題はなくなりました。ClientCertificates証明書をコレクションに追加するだけです。

可能であれば、2 番目のオプションをお勧めします。

于 2017-08-27T11:03:36.010 に答える