web-dev-qa-db-ja.com

Apache SSL証明書と秘密鍵を別のファイルに保存するのはなぜですか?

SSLCertificateFile および SSLCertificateKeyFile ディレクティブのApache mod_sslドキュメントには、秘密鍵とSSL証明書を同じファイルに保存することは「強くお勧めしません」と記載されています。

秘密鍵ファイルを安全に保つ必要があることは明らかですが、そうであると仮定すると、同じファイルに証明書を保存する際に特定のリスクはありますか?この動作がサポートされている理由を知りたいのですが、説明なしに強く非推奨になっています。

11
Vortura

SSL証明書ファイルはロックです。
SSL証明書キーファイルがそのキーです。

2つを一緒に保管することは、正面玄関の鍵に鍵をかけるのと同じです。
攻撃者が単一のファイルを侵害した場合、攻撃者はWebサイトを偽装するために必要なすべてのもの(証明書と秘密鍵)を持っています。

これは、SSLキーにパスフレーズがない場合に特に当てはまります(多くのWebサーバーにはないので、クラッシュ時に自動的に起動できます)。


ファイルを分離することによって防御しているのは、SSLCertificateFile(公開されるべきもの)の内容をWebクライアントにダンプさせるApacheのバグです。
(私の知る限り、そのようなバグは存在しないか、存在したことはありませんが、Apacheは大きくて複雑なソフトウェアです。それは完全に可能です。)

Apacheがこのファイルをダンプし、そこに含まれているすべてがSSL証明書(ロック)である場合、問題はありません。サーバーにSSL要求を行うと、誰でもその証明書のコピーを取得します。
ファイルにキーも含まれている場合は、セキュリティの問題が発生しています-暗号化モデル全体が危険にさらされており、キーを変更する必要があります。

15
voretaq7

OpenSSLの古いバージョンでは、2つの別々のファイル(パブリックとプライベート)が必要でした。他の暗号化エンジンの古いバージョンでは、1つのファイル(両方とも同じファイル内)が必要でした。互換性の「精神」(別名「不一致についての管理者の愚痴と2組の証明書を維持する必要がある」)では、ほとんどが両方をサポートしています。

証明書ごとにスコープが異なるため、両方の証明書(およびキーチェーン)を1つのファイルに保存することはお勧めしません。これは技術的な問題よりも一貫性の問題の方が多く、パブリック証明書にはパブリックに読み取り可能なファイル権限が必要であり、プライベートではその逆です。パブリック証明書をシステムのロックおよびキーの下に置いても危険はありません。それは、その目的と矛盾しているだけです。

7
Chris S