1

アプリケーションを構築しており、データ転送を保護するために OpenSSL を使用する予定です。

クライアントにサーバーの証明書のみを検証させることを計画しています。サーバーの証明書を保護する方法について混乱しています。秘密鍵を含むサーバーの証明書を暗号化したいのですが、この暗号化にハードコードされた鍵を使用したくありません。

SSL を使用するアプリケーションが従う一般的な方法にはどのようなものがありますか?

4

3 に答える 3

5

用語を明確にするために、一般的な用語での「SSL証明書」は、実際には2つのコンポーネントで構成されています。

  • 公開証明書
  • 秘密鍵

公開証明書コンポーネントは、選択したCA(認証局)によって署名され、その後、自由に配布できます。保護または暗号化する必要はありません。実際、SSLネゴシエーションの一部としてサーバーに接続するクライアントに送信されます。

秘密鍵コンポーネントは保護する必要があります。ほとんどの場合、これは単に暗号化されたファイルとしてサーバーに保存されます。高級ソリューションは、専用の「改ざん防止」暗号ハードウェア(HSM-ハードウェアセキュリティモジュール)を使用して秘密鍵を保存します。これらは、スマートカードベースのソリューションから、m / nコントロールなどを備えたマルチキーのネットワーク対応アプライアンスにまで及びます。HSMに関連するリスク(コストは言うまでもなく)がありますが、ここでは取り上げません。

多くのアプリケーションは、単に秘密鍵をディスクに保持します。キーファイルを保護するためのオプションがいくつかあります。

  • システムとファイルのアクセス許可のセキュリティに依存します(つまり、秘密鍵を暗号化しないでください)。たとえば、ほとんどのsshデーモンはこれを行います。
  • サーバーが提供するメカニズムを使用してファイルを暗号化します。パスワードで保護された暗号化は、ほとんどのWebサーバーの標準機能です。(OpenSSL APIを使用して独自にローリングする場合は、明らかなネイティブキー形式の1つを選択してください)。

いつものように、セキュリティのトレードオフがあります。特に、秘密鍵ファイルでパスワードで保護された暗号化を使用していて、予期しないアプリケーションの再起動(停電など)が発生した場合、アプリの再起動時に誰かがアプリにパスワードを提供できるようにする必要があります。システム初期化スクリプトによって読み取られるファイルにパスワードを保存すると(少なくとも2つのWebサーバーベンダーによって推奨されているように)、実際のセキュリティに関してはほとんど追加されません。秘密鍵ファイルを暗号化せずに残すことをお勧めするのは難しいですが、あなたが小さな店の唯一の管理者/技術者である場合は、サーバーが利用できないときにサーバーが再起動した場合に何が起こるか、そしてあなたのビジネスにどのようなコストがかかるかを確実に考慮する必要があります。

于 2009-01-03T02:03:15.730 に答える
0

何を尋ねようとしているのかよくわかりません。サーバー証明書がクライアントであるあなたに送信されます。署名を確認して証明書を検証します(MD5ではなくSHA-1を使用し、MD5はクラックされています)。CAから取得したキーはパブリック側です。CAとサーバー証明書の所有者は、自分の秘密鍵を自分自身に保持します。公開鍵は秘密鍵で暗号化されたメッセージを復号化するのに十分であるため、証明書を検証できます。したがって、証明書を暗号化しておくことについて、科学者側で心配する必要はまったくありません。

SSL/TLSに関するウィキペディアの記事をご覧ください。

于 2009-01-03T01:57:12.810 に答える