web戦略等の情報や、WEB構築に役立つ情報を発信

通信を暗号化するSSL/TLSの仕組みと導入方法

当サイトのURLは「https://doubleloop.tokyo/」と、「https」で始まるものとなっています。

この「https」が、WebサーバがSSLで通信を行っているという証になります。
今回はその技術の仕組みと導入方法を説明していきます。

SSL/TLSとは

SSLとは、「Secure Socket Layer」の略で、
「SSL証明書」を使いインターネット上で通信を暗号化する技術の総称を言います。

どんな通信を暗号化するかでそれぞれの呼び名も変わります。例えば、

SSLを使ったHTTP通信=HTTPS通信
SSLを使ったFTP通信=FTPS
SSLを使ったメールのやりとり=POP3S、SMTPS

のようになります。

暗号化通信は現在はSSLの進化版であるところの
「TLS(Transport Layer Security)」という名称の技術が使われているのですが、
「SSL/TLS」とまとめたり、あるいは単に「SSL」と呼ばれることが多いです。
本稿では以下「SSL」と呼称して説明します。

なぜSSLが必要なのか

通常のHTTP通信は、以下の手順でクライアント(パソコン・スマホ)とサーバがやりとりします。

①URLを打ち込む →  ②サーバーに接続しに行く → ③サーバが応答する
→ ④サーバにリクエストを出す → ⑤サーバがデータを送る

ところが、HTTPは平文でやりとりするので、フリーのパケット解析ソフトを
使うと、一般的なネットワーク技術者程度の技術力があれば
その中身を結構簡単に見ることができてしまいます。
通信の途中に悪意がある第三者がデータを盗み見することも技術上できてしまいますので
これを防ぐ対策がSSL通信というわけです。

最近は、httpsではない通信を一部ブラウザが「保護されていません」等と表示しはじめるなど
ページ閲覧時のユーザの反応などにも影響を及ぼすものとなりつつあります。
また、Googleに安全なサイトと判定されるため、
SSLを導入したサイトは検索順位にも良い影響があると言われています。

SSLがある場合の通信手順

「①URLを打ち込む~③サーバが応答する」まではhttp通信と一緒ですが、
次にデータを送る前に、サーバはクライアントに「SSL証明書」を送ります。

この証明書には、データを暗号化するための「公開鍵」がついているので、
この公開鍵を使ってデータを暗号化して④リクエストを出すという流れになります。

サーバ側は、自分だけが知っている「秘密鍵」を使ってリクエストを解読し、
⑤データを送るという仕組みです。

暗号化されたデータは、第三者が解読することはできません。

「公開鍵」は全世界に公開されているから、解読できそう?

上の文章を読んで、そう思う方もいらっしゃるかもしれません。
ですが、簡単にはそういかないのがこの技術の大事なところです。

要するに、暗号化することは簡単なのに、復号化はものすごく難しいのです。

SSLが採用化する暗号化手段としてメジャーなものに「RSA」という仕組みがあります。
これはごく簡単に言ってしまうと…

・ある数Aに大きな数Bをかけた時の掛け算(積C)は、根気よく計算すればいいので簡単
・ところが、数Cを与えられて、それが「A×B」であると見抜くのは超難しい

という数学的な仕組みを応用した技術です。
このおかげで、我々は安全な通信を享受できるというわけです。

SSL証明書の取得方法

SSLは、普通「○○.com」などのドメイン単位で取ります。
大まかな流れは、以下のようになります。

①サーバで証明書取得のためのCSR(申請書のようなもの)を発行

CSRには、公開鍵の情報(公開鍵はサーバが自力で作れます)と、
取得者の情報(ドメイン名や組織名、地域)の情報が含まれています。

②CSRをもとに、証明書を認証局に発行してもらう

作ったCSRを証明書の発行所(認証局)に持ち込みます。
主な認証局としては「GMOグローバルサイン」「シマンテック」などがあります。
最近は「Let’s encrypt」などの認証局を使い、サーバ側が自らメニューとして
安価で用意している場合もあります。

本人確認をどこまでするかによって、「認証レベル」がいくつかあります。

(1)ドメイン認証(クイック認証)SSL
メールなどの手段でドメインの実在性を確認します。
書類提出は不要なところが多く安価。普通のサイトではこれで十分です。

(2)企業認証SSL
電話での認証や簡単な書類審査など、企業の実在性が審査されます。
ECサイトなどで使われます。

(3)EV SSL(Extended Validation)
登記事項証明書などを用いた、より厳格な企業の審査が行われます。
高価ですが一番信頼できる認証レベルであり、銀行やSNSなどで使用されます。

③サーバに証明書をインストール

証明書の正体は「文字の羅列」です。
この情報をサーバーの所定の場所に設定することでインストールが完了します。

④サイトをSSLに対応させる

通信がhttpsになっても、Webサイトの中身にhttpで始まるURLの画像などがあると
ブラウザ上でセキュリティ警告が表示される場合がありますので、
これを一件ずつ無くしていきます。
また、httpでアクセスしてきたらhttpsに転送(リダイレクト)させる仕組みも必要なことがあります。

最後に

個人情報を取り扱うサイトを運営している皆様は、ぜひSSL導入をご検討ください。
弊社でも導入のご相談を承っておりますので、お気軽にご相談ください。

by
スポーツ観戦、ゲームや音楽、クイズなど多趣味に活動しています。 昨今の将棋ブームに乗って20年ぶりに将棋を遊び始めました。