SSLとは? Let’s Encryptを導入しよう

Web-tips

みなさんこんにちわ、にゃーお。です。

サーバー導入にあたって注意しないといけない大事なポイント、それは「セキュリティ」です。(どーん)
一言で「セキュリティ」と言っても、とても深い深いテーマなのでいったんここでは置いておいてw、今回はそのなかでSEO対策としても重要である「暗号化」に必要な「SSL(Secure Sockets Layer)」について記事にします。


スポンサーリンク

暗号化って何??



いきなり暗号化と言われても・・・映画では良く見るけど、どんな意味なんでしょうかね。

第三者に知られたくない機密情報、個人情報などを通信する際に、盗聴や傍受によって第三者に内容を知られたり、改ざんされることを防ぐための技術。メールやインターネットでやり取りする情報に限らず、ネットワーク経由での情報流出を防ぐため、ハードディスクやフラッシュメモリーなどに含まれる重要なデータは暗号化して保護するのが望ましい。暗号化されたデータを元に戻すことを復号化という。メールやWebでの暗号化通信には、SSLという技術が一般的に採用されている。無線LANの暗号化規格には、WPAやWEPなどがある。

出典:ASCII.jpデジタル用語辞典

データを守るために勝手に閲覧されたり編集されないようにするための仕組みなんですね。

この暗号化をする手段の1つに「SSL(Secure Sockets Layer)」という、ネットワーク上でデータを暗号化して送受信する仕組み(プロトコル)があり、これを利用する事でサーバー〜PC・モバイル端末間での通信を安全に行う事ができるんです。


スポンサーリンク

SSLの仕組み



SSLを利用するためにはサーバーに「SSLサーバー証明書」を導入する必要があります。
証明書といってもこれは電子的なデータで、Webサイトの所有者の証明と、そのWebサイトを利用するブラウザとのやりとりを行うデータの暗号化を行いデータの盗聴を防ぎます。
※証明書のデータに含まれる「パブリックキー/公開鍵(暗号制御する情報)」を用いて、通信する情報を暗号化し元に戻します。

また、このSSL機能によって、仮にデータの改竄が行われても検出して書き換えた事が分かるんです。すごい心強いですね。

SSLによって通信が保護されるとURLにが「https://◯◯◯.com」と表記されるようになります。(Securityの頭文字です)

常時SSL化の推奨

すごい技術なのは理解できましたが、何故こんなSSL化をみんな急ぎ進めているのでしょうか??

実は2018年7月、「Google Chrome」の最新バージョン「Chrome68」からhttp接続のページすべてが警告表示されるようになったんです。
こりゃ大変、Web界のドンであるGoogleが本気で推進を始めたのです。
Googleが提供するブラウザである「Google Chrome」、なんと世界でダントツのシェアで50%を超えています・・!

Webページを見ようとしたとき、常に「このページは安全ではありません」と警告が出てしまうため、これを見た人が警戒して閲覧しなくなる可能性が高くなります。必然的に対応しないとまずいですね。

常時SSLとはどういう状態??

全てのWebページ、コンテンツや画像データにSSLが適用(https化)されている状態が「常時SSL」です。
新規にこれから作成を初めていく場合には最初に設定してからコンテンツを用意するのであまり手間では無いのですが、すでに記事やコンテンツを多くアップロードしている場合は全てのリンクも含め編集し直さないといけないので大変です・・・!
もし1つでもhttp://のままのコンテンツがあると、常時SSLでは無いと警告が出ます。

例えば当サイトはこんな感じで表示されます。

・Google Chrome 69(SSL警告)

「差し替えられたものである可能性がある」だって・・・こわわわわ

・Google Chrome 69(常時SSL)

「お客様」と表現されていますね。安心感がすごいです。

こちらは参考までに。
・Firefox(SSL警告)

・Firefox(常時SSL)

SSL化の実現方法

さてこれをどうやれば良いのか?

レンタルサーバー等のウェブサービスではSSLを有償/無償で提供してくれるサービスがあります。
つまりこの有償/無償サービスを利用すれば実現できてしまうのですが、注意が必要!
「共有SSL」では独自ドメインが利用できないんです。

共用SSLとはサーバー会社が保有する1つの証明書をユーザー全員で共有する使い方になります。
つまり、所有者のサーバー会社が共用SSL用に導入する際に設定したドメインでないと使えないのです。
せっかく有料で独自ドメインを契約しても使えないんです。がーーん・・・ですよね。(にゃーお。は気づかずやっちゃいました)

アドレスがサーバー会社が指定するドメインになってしまうので、独自性は無いですしビジネスには使えないですね。
新規にWebサイトを立ち上げる分にはSSL化といっても変更にはなりませんのでインパクトは無いんですが、かなりの期間運営されてきたWebサイトのURLがいきなりサーバー会社のURLのように変わるとユーザーは混乱???しますよね。
また、Webサイト所有者の保証もされません。暗号化という機能面では恩恵に預かれますが、Webサイトの証明には使えないのです。

独自SSLとは独自ドメインに対して証明書を適用できます。
Webサイトの信頼性をより効果的にアピールできます。
独自認証には以下の3種類あり、価格もかなり異なります。提供する認証機関によって変わります。

独自SSL 証明書

費用

証明内容

信頼性

ブラウザ表示

ドメイン認証型 DV証明書

0円〜5万円前後

ドメイン使用権

鍵マーク

ドメイン認証型 OV証明書

5〜10万円前後

企業実在証明

☆☆

鍵マーク
企業実在証明

EV認証型 EV証明書

10万円〜

運営証明
署名者証明

☆☆☆

鍵マーク
企業実在証明
緑バーに変化


スポンサーリンク

Let’s Encryptの導入



上記の表の通り、証明書には様々な種類があり費用もピンきりです。その中で無償でドメイン使用権の証明をしてくれるのが「Let’s Encrypt/レッツエンクリプト」です。

「Let’s Encrypt/レッツエンクリプト」とはhttpsを普及させることを目的に提供されました。「SSLサーバー証明書」の発行・インストール・更新をサポートし証明書を提供してくれます。
これをサポートしてくれるレンタルサーバー事業者を比較した表をこちらの記事でまとめています。ご参考ください。

導入の仕方はレンタルサーバー事業者によって異なりますが基本簡単にできるようサポートされています。

以下はご参考までにロリポップ!サーバーでWordPressを使用している場合の設定方法

1.ロリポップ設定画面で独自SSL(無料)を有効にする。


左側のメニューから「セキュリティ」->「独自SSL証明書導入」->「無料独自SSLを設定する」をクリック


こちらの画像はすでに設定済のものとなっていますが、未設定の場合、対象のドメインを選択して選ぶ事になります。
設定後、しばらく時間がかかりますが数分で設定が完了します。

2.WordPressで設定されているURLをhttpsに変更する。


「設定」->「一般設定」からURLの設定を両方ともhttps://に変更します。

注意!SSLの設定が完全に有効になるまで時間がかかります。にゃーお。の場合半日かかりました。
いきなり変えるとWordpressの設定用のアドレスがエラーを吐いてしまい画面が真っ白になりかなりパニクりますww
この場合、SQLデータベース内の登録内容を変更して元に戻す必要があるため注意してください。


もしWordPressテーマで「Simplicity2」を使用している場合、「外観」->「カスタマイズ」->「その他」で「内部URLをSSL対応(簡易版)」をチェックして設定を有効にしましょう。かなり変換してくれます。とても便利で素晴らしい機能です!

他に各画像や記事をチェックし、URLの参照先が「http」のままになっていないか確認しましょう。
他に「設定」->「パーマリンクの設定」をクリックし、変更更新ボタンを押してパーマリンクエラーが出ないか確認してみましょう。

3..htaccess」ファイルを修正しhttpsに自動的にリダイレクトしてもらうようにする。
Googleのインデックスにも反映してもらうようhttpのページにアクセスがあった場合、強制的にhttpsページにリダイレクトする設定を行います。


「.htaccess」ファイルはWebサーバーをディレクトリ単位で制御するためのファイルで制御内容を指定する事でWebサーバーにアップロードされているファイルの処理を自由に設定できます。.htaccessファイル自体は単なるテキストファイルですので、 編集は簡単に可能です。
「wp-admin」「wp-content」と同じ階層にファイルがあります。

ディレクトリの構造や設定によって異なるため人によって処理内容が変わるのですがご参考までに自分の場合はこのように追記しています。


RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

最初httpで読み込まれたページもhttpsにリダイレクト(301)してくれるようになります。

後は無事反映されアドレスバーの表示が変わっているか確認してみましょう。

コメント