見出し画像

No256 「このサイトは安全ではありません」とは何が安全じゃないのか?

ホームページ(Webページ)を見ていると、時々「このサイトは安全ではありません」だとか「接続がプライベートではありません」といった警告が表示されます。

一体何が安全じゃないのでしょう?
また、それでもアクセスすると何が起きるのでしょう?
これを安全にする方法はないのでしょうか?

今回はこの原因と対処方法について解説をします。


1. えがおIT研究所のサイトを開設しました

メルマガ「がんばりすぎないセキュリティ」をご愛読いただいている皆様に報告がございます。
この度、「えがおIT研究所」のwebサイトを公開いたしました。

https://www.egao-it.com

是非、皆様にもアクセスしていただきたいと思います。

と、言いたいところなのですが、実は現時点(2022年4月24日時点)では上記サイトにアクセスすると、ChromeやSafari、FirefoxなどのWebブラウザでは妙な警告が出ます。

曰く、「このサイトは安全ではありません」
曰く、「接続がプライベートではありません」
といった警告です。

これが起きる原因はどこにあるのでしょうか?

なお、現在はこれを解消するための手続きを進めておりますので、数日中にこの(当所にとって恥ずかしい)事象は解消される見込みです。
(追記:4/26現在、この警告は解消しています)


2. 運営側の準備不足(脇の甘さ)が原因

この警告が出る原因は十中八九、運営側の準備不足(脇の甘さ)です。
いばって言う話ではありませんが、「えがおIT研究所」も例外ではありません。

今回の場合は、適切なサーバ証明書を準備できていないことが原因です。

さて、Webページを表示する時、コンピュータは以下の二つの手順(プロトコル)のいずれかを使います。
・HTTP(Hyper Text Transfer Protocol)
・HTTPS(HTTP over Secure)

名前を見てわかる通り、httpsというのはHTTPという方式に安全性(Secure)を追加したものです。

安全性の確保のため、httpsでは以下の二つの技法を活用します。
・データの暗号化
・サーバの正しさ保証

つまり、1)途中経路でのデータが盗聴防止、2)接続先サーバの真正性保証、を行ってくれるのがhttpsというわけです。

httpsと言うと暗号化すること知っていても、サーバの真正性確認を行っている点についてはご存知ない方も多いのではないでしょうか。

実は「このサイトは安全ではありません」となる原因は、この真正性保証でのNGが原因なのです。

余談:
 実は http を使う場合は、上記のような警告は発生しません。
 以下のURLからアクセスすると警告は発生しません。
  http://www.egao-it.com
この場合はサーバの真正性検証を行っていないことがわかります。


3. どうやってサーバが安全だと保証するのか?

「サーバが適正で安全」であるという表現には二つの意味があります。

一つはそのサーバの運営組織が不正行為をする組織でないこと、もう一つはそのサーバが確かに目的のサーバである(ニセのサーバでない)ことです。

このうち前者は、httpsごときで何とかなるものではありません。
そんなコトが実現できるくらいなら、ネット詐欺なんて存在しませんからね。

サーバの真正性保証というのは、そのサーバがニセのサーバではないことを保証することを示します。

では、どうやってサーバがニセモノでないことを保証するのでしょうか?

そのために使われるのが「サーバ証明書」です。
httpsでの通信を行うにはこのサーバ証明書が必要となります。

「証明書」なんて言うと行政や権威ある団体が発行する紙面を思い浮かべる方が多いでしょうが、サーバ証明書は紙ではなく、デジタルデータです。
サーバ証明書というのは、ごく小さな(数千バイト程度の)デジタルデータで、必ず以下の情報が含まれています。(下記以外にも細々と決められています)

 A. データ部
  A1. サーバの名前(ドメイン名)
  A2. 有効期限(通常は1年間)
  A3. サーバの公開鍵
  A4. 証明書発行機間名
 B. 署名部
  B1 A1~A4に対する署名

証明書はデータ部+署名部で構成されます。署名部はいわゆるサインのことではなく、証明書発行機関がデータ部(上記のA1~A4)を元に算出した計算結果のことを言います。
あるデータから計算した署名と、別のデータから計算した署名は必ず異なるものとなります。

データ部と署名部は常に対になっていますので、署名部を他のデータに流用することはできないのです。

余談
 上記の署名部の計算は実際には公開鍵暗号が活用されています。
 署名の作成には秘密鍵を利用し、署名の検証には公開鍵を利用します。
 秘密鍵は発行機関の内部で厳重に管理され、偽造することは事実上不可能です。
 一方で公開鍵は誰でも入手できますので、検証は簡単にできます。
 公開鍵暗号については、以下をご参照ください。
  「No84 https その5(公開鍵暗号1)」
   https://note.com/egao_it/n/n85193789c7af
  「No85 https その6(公開鍵暗号2)」
   https://note.com/egao_it/n/n63aed1a30c9e

Webブラウザは、サーバ証明書を受け取るとこの署名部を逆算してデータ部が正しいことを確認します。
次に、そのデータ部と、実際に通信しているサーバの情報を突き合わせます。

証明書上のサーバ名と実際に通信しているサーバ名、証明書上の有効期限と実際の日時、証明書上の発行機関名とWebブラウザに登録済の発行機関名、などが一致していることを確認します。

この全てが一致していれば、通信相手として問題なしとなり、めでたく通信を開始するわけです。


4. 証明書と不一致があれば?

うすうすお気付きの方もおられるでしょうが、証明書の内容と実際の通信相手に不一致があった場合に「このサイトは安全ではありません」となります。

逆に言えば、サーバ証明書とアクセス先に関する情報の不一致が検出されただけですので、サイトのコンテンツに問題があるというわけではありません。(不一致な時点で十分には怪しいといえばそうですが)

例えば、証明書上のサーバ名と実際のサーバ名が不一致であれば「こいつはヨソのサーバ証明書を勝手に持ってきているのではないか?」という疑いが出てくるわけです。

実は当サイト(egao-it.com)の場合もこのケースに当たります。

egao-it.comはレンタルサーバという賃貸サービスを利用しているのですが、その貸主が提供してくれているサーバ証明書では サーバ名が*.sakura.ne.jp となっており、egao-it.com とは全く違うものです。

なので、上述の通り「ヨソのサーバ証明書を勝手に使っている」ように見えるわけです。

今回は違いますが、有効期限切れの警告となるケースもよく見かけます。
これなども、サイトの運営側がサーバ証明書の更新を忘れている場合に発生します。


5. この解消方法は?

最初に書きました通り、これはサイト運営側の準備不足が原因であり、通常は利用者側には問題はありません。

もっとも、有効期限切れについては、運営側の「うっかりミス」の可能性が高いため、大きな問題とならないケースが大半でしょう。

とはいえ、問題が解消されるまでそのサイトにアクセスしないのが一番安全です。このような警告が出ているサイトでは、IDやパスワードを含む情報は入力しないようにしましょう。


6. まとめ

一部のホームページ(Webページ)では、サーバ証明書に不備があると「このサイトは安全ではありません」などといった警告が表示されます。

多くの場合、「それでもアクセスする」などを選択すればページ表示はできますが、この原因はほとんどがサーバ証明書の更新忘れや登録忘れです。

こういった事象が起きているようなサイトは一般的に運営の脇が甘いことは確かです。
情報セキュリティに関するメルマガを発行している当所としてはお恥ずかしい限りですが、難しい話となりがちなサーバ証明書の具体例として、今回は解説を行いました。

次回もお楽しみに。

(本稿は 2022年4月に作成しました)


この記事が気に入ったらサポートをしてみませんか?