セキュリティの観点から、ネットワークサービスにサイトのSSL証明書の秘密鍵へのアクセスを許可しても大丈夫ですか?
編集:質問にコンテキストを追加するこのリンクの「RSAを使用してCookieを暗号化する」ステップ4で、コードは「serviceCertificate」を使用してCookieを暗号化して署名します。ここでは、証明書の秘密鍵にアクセスする必要があります。
セキュリティの観点から、ネットワークサービスにサイトのSSL証明書の秘密鍵へのアクセスを許可しても大丈夫ですか?
編集:質問にコンテキストを追加するこのリンクの「RSAを使用してCookieを暗号化する」ステップ4で、コードは「serviceCertificate」を使用してCookieを暗号化して署名します。ここでは、証明書の秘密鍵にアクセスする必要があります。
あなたがapacheのようなサービスを意味するなら...あなたは選択の余地がないでしょう。別の方法は、起動するたびにパスワードを入力することですが、それでもソフトウェアはキーにアクセスできます。
誰かが(SQLインジェクションなどを介して)Webスクリプトをハッキングして、秘密鍵のコピーが悪意のあるハッカーによってダウンロードされた場合、そのハッカーはあなたを無防備にする偽のSSLサーバーを確立できるようになります。ただし、実際に成功するには、ハッカーは偽のサーバーが一致するホスト名を持つように偽のDNSレコードを挿入する必要もあります。
そうは言っても、Webサーバー自体への秘密鍵へのアクセスを開かないことは困難です。そうしないと、Webサーバーを再起動するたびに秘密鍵のパスワードを入力する必要があります。
厳密に必要な範囲を超えてアクセスしないことが最も安全です。秘密鍵と秘密鍵へのアクセスは、鍵管理において非常に重要です。脆弱性を導入しないようにするために、ユースケースの外で秘密鍵を使用しないことも非常に重要です(たとえば、SSLでの認証はデータの署名とは異なります)。
セキュリティはレイヤーに関するものです。導入できるレイヤーの数が増えるほど、安全性が高まります。アクセスを制限することは非常に良いことです。したがって、回避できる場合は、トランスポート層とアプリケーション層を混在させないでください。
当社では、用途に応じて常に個別の証明書を作成しています。SSL処理とアプリケーション処理を異なるサーバーで維持するように努めています。アプリケーションサーバーには、認証の詳細のみが提供されます。
とはいえ、私はセキュリティを重視する会社に勤めています。明らかにそれほど厳しくないセキュリティを使用することもできますが、それを取り巻くセキュリティポリシーをよく考えておくとよいでしょう。よくわからない場合は、コンサルタントを雇ってください。