セキュリティを強化するための鍵:オリジンサーバーとエッジサーバーに証明書を設置する理由
目次[非表示]
- 1.はじめに
- 1.1.証明書とは?
- 1.2.証明書が設置されない時に発生する問題の可能性について
- 2.設置されている証明書の確認方法
- 3.案件を通して、勉強になった証明書の話
- 4.オリジンサーバーとエッジサーバー、それぞれ証明書が設置されている検証法
- 4.1.①オリジンサーバーの場合
- 4.2.②エッジサーバーの場合
- 4.3.なぜオリジンサーバーの証明書を使わないのか?
- 5.おわりに
- 6.参考資料
- 7.DIVX GAIの詳細はこちら
- 8.お悩みご相談ください
はじめに
皆様、こんにちは。株式会社divxのフーと申します。
今回は証明書に関して、なぜオリジンサーバー(Origin Server)とエッジサーバー(Edge Server)に証明書を設置することがセキュリティ強化の鍵となるのかを、一緒に理解を深めていければと思います。案件を通じる前には、証明書をオリジンサーバーに設置するだけで十分だと思っていました。しかし、現在では利用者(エンドユーザー)がデータをリクエストしたり、サーバーからレスポンスを受け取ったりする際の通信をより安全に行うために、オリジンサーバーとエッジサーバー両方ともに証明書の設置が必要です。さらに、サイトに証明書が設置されているかどうかは、そのサイトの安全性の指標にもなっています。
私が案件にアサインされるまで、オリジンサーバーに証明書さえ設置すれば安全な通信ができるという大まかなイメージしか持っていませんでしたが、案件を通じて、オリジンサーバーだけでなく、エッジサーバーにも証明書が必要だということを初めて知りました。このように大まかなイメージしか持っていない方も多いのではないでしょうか?
証明書とは?
本題に入る前に、証明書とは何かについて知っておいていただきたいです。
下に添付している画像は、証明書について本社が開発したAIツールを用いて簡単に説明しています。
証明書が設置されない時に発生する問題の可能性について
1.データセキュリティの欠如:
要求と応答の間でデータが暗号化されない場合、第三者が通信の内容を傍受し、情報を盗み見る危険性があります。これはデータ漏洩の原因となりえます。
2.通信の信頼性の低下:
- SSL/TLSが設置されていない場合、ユーザがウェブサイトを訪れる際にブラウザは「この接続は安全ではありません」という警告を表示します。これにより、ユーザはウェブサイトへのアクセスを避ける可能性が高くなります。
3.SEOへの悪影響:
- Googleを含む主要な検索エンジンは、SSL/TLSで保護されたサイトを優先的にインデックスする傾向があります。証明書がないことで検索ランキングが低下し、結果としてトラフィックが減少する可能性があります。
4.法的・規制上の問題
- 一部の業界や地域では、SSL/TLSの使用が法律や規制によって義務付けられている場合があります。これに違反すると罰金や法的措置を受けるリスクがあります。
5.中間者攻撃(Man-in-the-Middle, MitM)のリスク増大
- SSL/TLSが設置されていない場合、攻撃者が通信を改竄し、不正な情報を挿入する中間者攻撃の対象になりやすくなります。オリジンサーバーとエッジサーバーの両方にSSL/TLS証明書を設置することで、これらの問題を回避し、安全かつ信頼性の高い通信を確保することができます。
正確性を確かめたければ、こちらのdigicertのサイトをご覧いただければ、より正確性を確信できると思います。これは私の習慣ですが、他のサイトを読んで情報の正確性を確認しています。確かにAIは便利なツールですが、時には誤った答えが出ることがあります。そのため、他のサイトを参照して情報の正確性を高めることをお勧めします。
設置されている証明書の確認方法
1.ご覧になっている記事のURLの左のアイコンをクリック
2.基本的に下記の画像のように南京錠が付いていたら、証明書が適応されていることがわかります。
3.上記に添付した画像の赤枠をクリックすると、下記に添付した画像で表示されている「証明書は有効です」を見つけることができます。これを確認すれば、より確信が持てるでしょう。さらに詳細を確認したい場合は、赤枠の「証明書は有効です」をクリックしてください。詳細が表示されます。ただし今回は、そちらの詳細については説明を割愛させていただきます。
ではいよいよ今回の中心とした本題に戻りましょう!
案件を通して、勉強になった証明書の話
私はアサインされている案件でよく顧客の証明書を管理しており、有効期限が切れる前に案内したり、CDNの設定変更があった際には設定を変更したりしています。お問い合わせに応じて、さまざまな対応をしなければならないので、インフラとネットワークに関してかなり勉強になりました。
案件にアサインされる前は、証明書について、安全な通信のためにオリジンサーバーに証明書を設置すれば良いとしか知りませんでした。しかし、CDNやエッジサーバーに関わるようになって、エッジサーバーにも証明書が必要であることを初めて知りました。
下に添付した画像をご覧ください!
注:証明書についての大まかな内容を知っておくと、これからの内容がスムーズに理解できると思います。
データが改ざんされたり盗まれたりしないように、オリジンサーバーに証明書を設置し、エンドユーザーとの間で安全な通信を行う必要があることがわかります。
しかし、現在ネットを利用する人たちにより早くコンテンツを届けるために、CDNを利用します(CDNを使うなら、自然にエッジサーバーも使用することになります)。(下の画像)
↑上記の画像のように、(オリジンサーバー・エッジサーバー)と(エッジサーバー・エンドユーザー)の部分があります。オリジンサーバーにのみ証明書が設置されている場合、それは「オリジンサーバーとエッジサーバー」の部分だけで安全な通信が行われます。逆にエッジサーバーにのみ証明書が設置されている場合、それは「エッジサーバーとエンドユーザー」の部分だけで安全な通信が行われます。したがって、セキュリティを強化するためには、オリジンサーバーとエッジサーバーの両方に証明書を設置する方が良いでしょう。
より自分の説明に齟齬がないように、下に添付している画像のように本社が開発したAIツールを用いて、説明していただきました。
以上の画像のように、AIからもオリジンサーバーとエッジサーバー両方に証明書を設置し、全体的なセキュリティを確保するのが理想という答えを出してくれました。
オリジンサーバーとエッジサーバー、それぞれ証明書が設置されている検証法
実は、この前に説明させていただいた「設置される証明書の確認方法」についてですが、設置されている証明書はエッジサーバーの証明書である可能性が非常に高いです。
では、オリジンサーバーとエッジサーバーの証明書の有効期限をどうやって確認するかを見ていきましょう!
①オリジンサーバーの場合
↑上記のコマンドについてご存知でしょうか?ターミナル(Mac)やコマンドプロンプト(Windows)を使ってこのコマンドを入力すると、下記に添付した画像のようにオリジンサーバーの証明書に関する情報が表示されます。皆さんはおそらく、これは何のためのものか疑問に思うでしょう。このコマンドを使うと、オリジンサーバーの証明書を確認することができます。(このコマンドは、案件で顧客のオリジンサーバーの証明書の有効期限を確認するために常に使われています。)(セキュリティを考慮し、赤線で情報漏洩の可能性がある部分を隠しています。)
もう少しコマンドについて説明いたします。
基本的に埋める必要があるのは -connect と -servername の後の部分です。
- connect <オリジンサーバーのFQDN名>
- servername <CDNの設定時に設定したFQDN>(普段ブラウザに入力するFQDN/URL)
ここまで読んでいただいて、「えっ?私たちの -connect の部分のFQDNが分からないじゃん」と思われる方もいらっしゃるかもしれません。実はこれもセキュリティを考慮したもので、知られてはいけません。さらに、顧客にはなるべく複雑な名前にすることをお勧めしています。仮に不審者がオリジンサーバーのFQDNを探ろうとしても、容易には特定できないでしょう。
念の為、AIにも質問してみました!
質問:サイトの持ち主じゃないと基本的にオリジンサーバーの証明書が見れないという認識であっているでしょうか?
答:以下の画像
質問:オリジンサーバーの証明書が見れないこととセキュリティ何か関係ありますでしょうか?
②エッジサーバーの場合
↑上記のコマンドについて、ご存知でしょうか?こちらのコマンドを入力すると、下記に添付した画像のようにエッジサーバーの証明書に関する情報も表示されます。
もう一つの方法は前に書いた”設置されている証明書の確認方法”と同じです。
ではなぜエッジサーバーの証明書が表示されるかをAIに聞いてみましょう!
ではなぜエッジサーバーの証明書が表示されるかをお話しましょう。
1.エッジサーバーがリバースプロキシとして働く場合
- まず、リバースプロキシって何? というと、これはユーザーのブラウザからのリクエストを受け取り、それを内部のサーバー(オリジンサーバー)に送るサーバーのことです。リバースプロキシは結果をユーザーに返す役目もあります。
・具体的にはこんな感じです
- ユーザーがサイトにアクセス:最初にエッジサーバーにリクエストが届きます。
- SSL/TLSのやり取り:エッジサーバーは自分のSSL/TLS証明書をユーザーに提示し、それを基にHTTPS接続を確立します。
- 内部通信:エッジサーバーがオリジンサーバーにリクエストを送り、そのレスポンスを受け取ります。
- レスポンスを返す:エッジサーバーは受け取ったレスポンスを暗号化された状態でユーザーに返します。
2.CDN(コンテンツデリバリーネットワーク)を使う場合
- たくさんのウェブサイトは、コンテンツを速く配信するためにCDNを使っています。CDNは地理的に分散したサーバーのネットワークで、ユーザーのリクエストを一番近くのエッジサーバーに送ります。
・具体的にはこんな感じです。
- ユーザーがアクセス:CDNネットワークはリクエストを一番近い(または一番空いている)エッジサーバーに送ります。
- SSL/TLSのやり取り:エッジサーバーが自分の証明書をユーザーに見せ、HTTPS接続を確立します。
- コンテンツ配信:エッジサーバーはキャッシュされたコンテンツを直接返すか、最新のコンテンツをオリジンサーバーから取って返します。
なぜオリジンサーバーの証明書を使わないのか?
エッジサーバーがリバースプロキシやCDNとして働くとき、初めのSSL/TLSのやり取りはエッジサーバー側で行われるので、ユーザーに見えるのはエッジサーバーの証明書です。オリジンサーバーとのやり取りはエッジサーバーがやっているので、ユーザーが直接オリジンサーバーの証明書を見ることはありません。
メリット
- 速度とパフォーマンス:エッジサーバーが近い場所からコンテンツを提供するので、反応が速くなります。
- 負荷分散:トラフィックがエッジサーバーに分散されるため、オリジンサーバーの負荷が減ります。
- セキュリティ:エッジサーバーでSSL/TLSを終端することで、セキュリティが向上します。
要するに、エッジサーバーはパフォーマンスを上げたりセキュリティを強化するためにユーザーと直接やり取りし、その際に自分の証明書を見せるので、ユーザーに見えるのはエッジサーバーの証明書なんです。
①オリジンサーバーの場合の証明書の有効期限と②エッジサーバーの場合の証明書の有効期限を比較すると、お分かりになると思います。一般的には、エッジサーバーの証明書とオリジンサーバーの証明書の有効期限は異なることが多いですが、CDNサービスの設定によっては一致する場合もあります。案件にアサインされる前は、「本当に証明書はオリジンサーバーだけにあれば良いよね」と思っていました。しかし、案件にアサインされた後、なるほど、普段自分が見ている証明書はエッジサーバーの証明書だったと理解しました。セキュリティの観点も考慮すると、オリジンサーバーの証明書が見られないことも理解できました。
おわりに
今回は、証明書に関する内容について書かせていただきました。
少しでも証明書についての情報がお役に立てれば幸いです。
最後までご覧いただき、誠にありがとうございます!