質問

アプリケーションを構築しており、OpenSSLを使用してデータ転送を保護することを計画しています。

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

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

役に立ちましたか?

解決

「SSL証明書」という用語をそのまま使用していることを確認してください。一般的には、実際には2つのコンポーネントで構成されています。

  • 公開証明書
  • 秘密鍵

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

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

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

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

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

他のヒント

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

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

>
  

サーバーの証明書を保護する方法について混乱しています。

サーバーの証明書を保護する必要はありません。公開文書です

  

秘密鍵を含むサーバーの証明書を暗号化したい

サーバーの証明書に秘密キーが含まれていません。

  

しかし、この暗号化にハードコードされたキーを使用したくない。

暗号化を行う必要はありません。保護する必要がある唯一のサーバー資産は、証明書とはまったく異なる秘密キーです。 OpenSSLの場合、別のファイルにすることもできます。

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