Webサーバーとしてnginxを使用してSSL証明書のプライベートキーを保護する方法を調査してきましたが、満足のいく答えを見つけることができませんでした。
具体的には、自分のサブドメインでWebサイトを展開したいクライアントの場合、誰かが自分のサブドメインの証明書の秘密キーにアクセスして、正当に見える安全でないWebサイトをセットアップするのを恐れています。彼らは私に彼らの秘密鍵を保護するためにある種のソフトウェア保管庫ソリューションを使用するように頼みました。
この記事 nginxのブログおよび this one はいくつかの解決策を説明していますが、最終的にはどちらも同じ原則に依存しています。秘密鍵はパスフレーズによって保護されています。ローカルまたはリモートの場所から取得します。この「取得」手順では、ローカルに保存されているパスワード/トークンが必要です。
したがって、私は秘密鍵が本当に安全になる方法を理解できません。それは、マットの下に置くのではなく、キーボックスのフロントドアの鍵をロックするようなものに見えます...そして、キーボックスの鍵をマットの下に置くのです。
何か不足していますか? nginxで秘密鍵を保護するより良い方法はありますか?
あなたの最後のコメントに基づいて、私はいくつかのオプションを見ます:
/etc/ssl
のどこかにあるように、秘密鍵ファイルはrootユーザーのみが読み取り可能で、ドキュメントルートの外部に保存されていることを示しています。ホストされたwebsiteをハッキングすることは、サーバー全体よりもはるかに一般的であり、そのようにして、そのように読み取られることに対する保護があります。また、SSL証明書の提供についても説明します。 Letsencryptをセットアップするだけです。追加のボーナスは、これらの証明書は有効期間が短いことです。
1つの解決策がありますが、実際には、サーバーを信頼する必要はありません。あなたのクライアントが彼の記録をあなたのサーバーに置くことをいとわないなら、彼はどういうわけかあなたを信頼しなければなりません。クライアントを保護するソリューションが1つあります。
Cloudflare のように、サブドメインがWeb Application Firewallをポイントします。それらは、Origin証明書(サーバー上にあるもの)を作成し、GPGなどの信頼できる通信プロトコルを介して証明書とキーを送信します。
彼らはこのサブドメインがあなたのサーバーのIPアドレスを指すようにします。
彼らはCloudflareアカウントへのアクセス権を付与しない。
そのすべてを維持します。エッジ証明書を制御します。それらはOrigin証明書を制御します。彼らはいつでもそれを取り消すことができます。彼らはドメインを管理しています。唯一のことは、クライアントが制御しないのはもちろんサーバーです。 ;)
もちろん、@ Halfgaarによって提示されたセキュリティ設定全体はまだ最新です。
————————————————————-
信頼関係を構築したい場合は、サーバーからの監査を表示できます。監査ログを提示します。サーバーのセキュリティが [〜#〜] nism [〜#〜] または [〜#〜] stigs [〜#〜] のような標準に準拠していることを証明します。
すべてはコメントと回答で隠されています。
合算したい場合、証明書を盗むだけでは十分ではありません。攻撃者はまた、証明書が検証された有効なドメインを考え出す必要があります。
フィッシング攻撃の場合、ウェブサイトは同じように見えるかもしれませんが、
ドメインは同じではない可能性があり、証明書は別のドメインでは機能しません。
DNSが正しいIPを指していて、DNSが偽装されたり乱れたりしていない限り、SSL証明書を盗むことは役に立ちません。
クライアントが多少疑わしいこの状況では、期間が短い証明書を暗号化しましょう
有効期間(90日)。そして定期的に更新する必要があります。
証明書を取得して更新する証明書を暗号化するには、毎回ドメインの確認が必要です。したがって、証明書を盗むことは、長い間役に立ちません。