Webデザイナーなら知っておくべき サーバ知識相談室

第3回 SSL証明書ビギナー歓迎! httpsから始まるURLの役割と仕組みを0から学ぼう

この記事を読むのに必要な時間:およそ 8.5 分

すべてがhttpsで通信していないと鍵マークは壊れてしまう

冒頭でWebデザイナーが悩んでいた「httpsから始まるURLを開いたときに鍵マークが壊れる」現象の原因も、この暗号化が関係しています。

ブラウザでhttpsから始まるURLを開くと,Webページはサーバから自分のパソコンまで,httpsで暗号化されて届きます。しかし取得したページのHTMLに,<img src="http://www.example.com/images/top.png">のような,絶対パスで画像を指定する<img>タグが含まれていると,その画像ファイルは暗号化されていないhttpで送られてきます。

つまり,せっかくWebページをhttpsで開いても,そのWebページのHTMLソースの中で,CSSや画像ファイルの指定をhttp://から始まる形式にしていたり,YouTubeなどのコンテンツをhttp://から始まる形式で埋め込んでいると,Webブラウザは壊れた鍵マークを表示して「ページの一部が暗号化されていないので,安全ではありませんよ」と警告を出すのです。

ページの一部(画像)がhttpで通信しており,すべてが暗号化されていないので鍵マークが壊れる

画像

これを直すには,<img>タグを <img src="/images/top.png">のようにパスの部分だけにします。これならページをhttpで開いたときは画像もhttpで表示でき,httpsで開いたときは画像もhttpsで表示できるため,鍵マークが壊れることはありません。

あるいは,⁠画像はWebページとは別のサーバにあるので,ドメインから書かなければいけない」という場合は,<img>タグを<img src="//image.example.com/images/top.png"> のように書くことで,先ほどと同じように,ページをhttpで開いたときは画像もhttpで表示でき,httpsで開いたときは画像もhttpsで表示できます。その結果,鍵マークは壊れません。

テンプレートファイルなどをhttp/https両方のページで利用しているケースでは,後者の「//から始まる書き方」にしておくと,鍵マークが壊れる現象は避けることができてお勧めです。

ネットバンクの例で理解する「SSL証明書は何を証明してくれるのか?」

役割の話に戻って,2つ目の役割Webサイト運営者の身元を証明することについて詳しく説明します。

この役割を一言で説明するなら,SSL証明書はWebサイト運営者の身元証明書であるということです。このことを分かりやすく説明するために,架空の銀行を舞台にした,たとえ話をしてみます。

あなたは,立ち上げたばかりの株式会社IMJ銀行の広報担当者です。IMJ銀行の「imjbank.co.jp」というドメインを取得し,無事Webサイトを開設しました。IMJ銀行は店舗を持たないネットバンクで,ブラウザでimjbank.co.jpを開き,IDとパスワードを入れてログインすると,残高の確認や振込,キャッシングなどをすることができます。

そこへ目をつけた詐欺師がいました。詐欺師は imjbank.jpというドメインを取得して,imjbank.co.jpにそっくりな偽サイトを作りました。Webサイトは基本的に「公開」されているものなので,丸ごとコピーしてパクリサイトを立ち上げることは意外と簡単です。そのため,サイトの見た目だけなら,imjbank.co.jp(本物サイト)とimjbank.jp(偽サイト)はそっくりで区別がつきません。

見た目だけなら本物サイト(左)と偽物サイト(右)は区別がつかない

画像

そして詐欺師はIMJ銀行の利用者向けに,IMJ銀行をよそおって次のメールを出しました。

「IMJ銀行より緊急のご連絡です。お客様の口座で不審な取引が確認されました。今すぐに下記のリンクからログインして,お客様の口座残高をご確認ください。24時間以内に確認を行わなかった場合,お客様の口座は凍結されます」

メールを見た利用者が慌ててリンクを踏んで,imjbank.jp(偽サイト)を開いてしまい,そこでIDとパスワードを入力すると,詐欺師はIDとパスワードを盗むことができます。そしてその盗んだIDとパスワードで,詐欺師がimjbank.co.jp(本物サイト)にログインしたら,あとは簡単ですよね。限度額までキャッシングをして,すべて詐欺師の口座に振り込めば,大金が一瞬で詐欺師のものになるのです。

このように偽サイトへ誘導してIDやパスワードを盗む詐欺の手法を「フィッシング詐欺」と言います。自社のお客様がこんな目にあったら大変ですよね。誰もIMJ銀行を使ってくれなくなってしまいます。急いで対策を立てて,フィッシング詐欺からお客様を守らなければなりません!

お客様からの問い合わせで事態を知ったIMJ銀行広報担当のあなたは,慌ててimjbank.co.jp(本物)のトップページに「imjbank.jpはIMJ銀行を騙った悪質な偽サイトです。ご注意ください」とお知らせを出しました。しかし,なんとimjbank.jp(偽物)のトップページにも「imjbank.co.jpはIMJ銀行を騙った悪質な偽サイトです。ご注意ください」と書かれてしまいました。

トップページに注意書きを出したが効果なし

画像

もうIMJ銀行の利用者は,どちらを信じていいのか,どちらが本物のIMJ銀行のサイトだか分かりません。店舗があれば窓口で「IMJ銀行のサイトはimjbank.co.jpです!」と書いたチラシを配ることもできますが,IMJ銀行はネットバンクなので店舗がありません。ネットだけで「imjbank.co.jpこそがIMJ銀行が運営する本物のサイトだ」と証明するには,一体どうしたらいいのでしょう?

ここで登場するのがSSL証明書です。

SSL証明書でサイト運営者の身元を証明しよう

先ほど述べたとおり,SSL証明書はWebサイト運営者の身元証明書です。サイバートラストシマンテック(シマンテックは少し前までベリサインというブランド名でした)といった「認証局事業者」に対して,IMJ銀行広報担当のあなたが「imjbank.co.jpのSSL証明書を発行してください」と依頼すると,

  • 株式会社IMJ銀行という会社が実在するのか?
  • imjbank.co.jpというドメインの所有者は証明書の発行を承認しているのか?
  • 証明書の発行依頼をしてきたのは株式会社IMJ銀行なのか?

の3点をよくよく調査・確認した上で,⁠imjbank.co.jpは株式会社IMJ銀行が運営するサイトです」という身元証明書を発行してくれます。

この身元証明書こそが,みなさんご存知の「SSL証明書」なのです。

このSSL証明書をWebサイトに設置しておくと,エンドユーザがブラウザでサイトにアクセスしたとき,サイトのデータと一緒に,身元を証明するSSL証明書が送られてきます。本物のサイトには「認証局事業者が発行してくれた身元証明」があるため,httpsから始まるURLを開くとURLの左側に鍵のマークが表示されます。一方,詐欺師が認証局事業者に「オレ,IMJ銀行。SSL証明書発行してよ」と言っても,IMJ銀行ではないので,先ほどの3点が確認できません。よってSSL証明書は発行してもらえず,鍵マークが出ないどころか,httpsから始まるURLでサイトを開くことすらできません。

SSL証明書があればWebサイト運営者の身元証明ができる

画像

これで無事に「imjbank.co.jpこそがIMJ銀行が運営する本物のサイトだ!」と証明することができました。ということで,繰り返しになりますが,SSL証明書はWebサイト運営者の身元証明書になるのです。

ちなみにこの「証明」とは,

  • 株式会社IMJ銀行という会社が実在すること
  • imjbank.co.jp というサイトの運営者が株式会社IMJ銀行であること

を証明しているだけで,

  • 株式会社IMJ銀行が社会的に信頼に足る会社であること
  • 株式会社IMJ銀行が経営状態のよい優良企業であること

などは一切証明していません。身元証明といっても,いわゆる保証人のような身元保証ではないので,その点は間違えないよう注意してください。

さて,話を進めます。フィッシング詐欺に失敗した詐欺師は,⁠失敗したか。でもWebサイトを丸ごとパクったみたいに,SSL証明書も盗んでくればいいや!」と思いました。

しかしWebサイトと違って,SSL証明書はそう簡単には盗めないようになっています。しかもなんとか頑張って盗んできたとしても,そのSSL証明書は「imjbank.co.jpに対する証明書」なので,⁠imjbank.jp」のサイトに設置すると,ブラウザで次のようなエラーメッセージが表示されます。

imjbank.co.jp のSSL証明書を imjbank.jpで使うと出るエラーメッセージ

画像

つまり,SSL証明書は盗んでも意味がないのです。このようにSSL証明書という身元証明を使って,httpsでページを表示すれば,詐欺師が身元を騙ることは途端に難しくなります。

これがSSL証明書の2つ目の役割,Webサイト運営者の身元を証明することになります。

著者プロフィール

堀越良子(ほりこしよしこ)

株式会社アイ・エム・ジェイのインフラエンジニア。ウェブインテグレーションの下支えとなるサーバホスティングサービスの構築と運用を担当している。

モバイルサイトのエンジニア,SIerとソーシャルゲームの広報を経て,2013年より現職。「分からない気持ち」に寄り添える技術者になれるように日々奮闘中。