質問

公開鍵証明書と、社内アプリケーション用の単一の秘密鍵証明書を保存する必要があることに気付きました。

私たちのチームのメンバーは、これまでやってきたように、X509証明書をWindows証明書ストアに保存するのではなく、データベースに保存することを提案しました。車輪を再発明するのは好きではありませんが、少なくともその考えを考えなければなりません。データをより集中化することを意味します。これは良いことだと思います。

最初に確認できる障壁は次のとおりです。

  • 秘密鍵はまだどこかに保存する必要があり、それを「公開鍵」テーブルにシューホーンすることが良いアイデアかどうかわかりません。単一の要素にテーブルを設定するという考えも好きではありません。おそらく、秘密鍵をローカルファイルとして保持するだけですか? (たとえば、.pfxファイル)。
  • 失効リスト。おそらく、失効した公開鍵を処理するプロセスを設定する必要があります。

X509証明書の経験があまりないので、私の質問は次のとおりです。Windowsの証明書ストアではなく、データベースに公開鍵証明書を保存する際に遭遇する可能性のある他の問題はありますか?

このアプリケーションは複数のビジネスクライアントサーバーに展開されるため、すべてのデータを1か所に保存することでバックアップが容易になることに留意してください。ああ、問題の社内アプリはC#で開発されています。

ありがとう!

役に立ちましたか?

解決

アプリケーションの目的は何ですか?

アプリケーション内のすべての暗号を処理しており、PKCS#12証明書+秘密キーファイルを参照できる場合は、おそらくデータベースルートに問題はありません。

Windows Crypto APIを使用して証明書にアクセスする必要がある場合は、おそらく組み込みの証明書ストアを引き続き使用する必要があります。スマートカードやハードウェアセキュリティモジュール(HSM)などの外部デバイスの秘密キーを保護できるため、ここでいくつかの利点が得られます。

すべてをローカルディスクに保存する場合は、秘密鍵を保護するために多大な努力を払うようにしてください。必ず強力なパスフレーズを使用し、アプリでこのパスフレーズを保護するためのベストプラクティスを使用してください。

他のヒント

本当に必要な場合を除き、秘密鍵を他の場所に移動するのは嫌です。キーが署名に使用されている場合は不要であり、キーが復号化に使用されており、将来のためにアーカイブする場合にのみ必要になります。この場合でも、証明書を発行した認証局は通常、アーカイブと回復を処理できます。これは確かに、Microsoftやentrustなどのより一般的なCAの場合です。

保存する必要がある場合は、AESと、HSM(ハードウェアセキュリティモジュール)またはスマートカードのいずれかで保護できるキーを使用して暗号化します。このキーをプレーンテキスト(ファイルまたはレジストリ内)のままにしないでください。

また、生成場所と中央データベースの間で転送中にこのキーを保護することもできます。 SSLまたはVPNなど

失効リストは、ほとんどの環境の認証局によって、通常はLDAPまたはディレクトリ、あるいはその両方に公開されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top