まず、秘密鍵をエクスポート不可として保存した証明書ストアに証明書を保持することをお勧めします。今いくつかの議論。
プライベート シークレットまたはその他のプライベート情報をマシンに保存するには、さまざまな方法があります。最も古い方法はAPI です ( http://msdn.microsoft.com/en-us/library/ms721818%28VS.85%29.aspxLsaStorePrivateData
を参照)。シークレットの数には制限がありますが、すべてのシークレットはローカル、グローバル、およびマシンに分割できます。LsaRetrievePrivateData
次の方法は、DPAPI を使用することです ( http://msdn.microsoft.com/en-us/library/ms995355.aspxを参照) 。CryptProtectData
CryptUnprotectData
考えられるさまざまな方法を比較して、自分の方法が自分のタスクに最適であることを確認したいので、この 2 つの方法への参照を追加します。
あなたが尋ねるべき最も重要な質問は、私の秘密鍵を保護する最善の方法はどれかということだと思います。コピーされるキーを保護する方法を選択する必要があると思います。したがって、証明書ストアを使用することをお勧めします。証明書ストアでは、エクスポート不可とマークされた秘密鍵を保持できます。これが私の意見では主な利点です。さまざまな方法で、対応する秘密鍵を使用して証明書を展開できます。マシンに保存された秘密鍵がエクスポート可能としてマークされていないことを確認してください。
ディスク上の PFX ファイルを使用しても、この利点は得られません。さらに、PFX が暗号化されていないか、パスワードを PFX ファイルに保存する必要があるという問題が発生します。したがって、DPAPI (CryptProtectData
およびCryptUnprotectData
) または LSA API (LsaStorePrivateData
およびLsaRetrievePrivateData
) を使用する必要があり、パスワードをエクスポートできます。