Published on

無料かつ秒でSSL対応する方法と注意点

目次

WEBサイトのSSL対応(URLの始まりがhttps://)はもはや必須と言っていいほどの流れになっています。

理由としては
・セキュリティの問題

注文やお問い合わせなどのフォーム送信を設置しているサイトはとても多くなり、重要な個人情報が含まれているから通信の暗号化をして対策したほうがいいよね。

・Googleの検索に表示されるサイトはより安全なほうがいい。

Google側としてもユーザーになるべく安全なWEBサイトを検索に表示させたいってことでhttpsを推奨していますね。

他にも理由はあると思いますが、主にこの2点かなと思います。

今回はSSLを無料で導入する方法について紹介します。

サーバーのSSLサポートを使う

すでにSSL化についての記事はたくさんあります。

一番てっとり早いのはサーバー側で独自SSLのサポートを利用することです。

独自SSLはだいたいLet’s Encryptを指している場合がほとんどだと思います。他にも無料SSLだとラピッドSSLとかあります。
今の所、無料で使えるSSLはLet’s Encryptが主流という認識で問題ないと思います。

参照 https://letsencrypt.org/

有名なサーバーたとえば、さくらレンタルサーバーやxserver(エックスサーバー)、ロリポップ、mixhostなどはSSLサポートしているのでワンクリックでSSL対応できます。
まだSSL対応してないって方はチェックしてみてくださいね。

ここまではいいのですが、

問題はSSLサポートのないサーバーはどうすればいいか

ですね。

wordpressのSSLプラグインは証明書まで作成してくれるわけではない

wordpressをお使いの方であれば「プラグインで簡単にできるでしょ」と真っ先にプラグインを検索されると思います。

プラグインではあくまでドメインや内部リンクの変更(httpからhttps)までしか対応できなかったりします。

肝心なSSL証明書発行や認証をしないとドメインを変更しただけでは意味がないです。

なんだこれ、このプラグイン使えないじゃん!となりかねません。

SSLサポートがないサーバーは自分で証明書を発行する

サーバーでSSLサポートが使えない、じゃあどうすればいいの?

・サーバーにLet's Encryptを使うためのCertbotを導入する

・サーバーにLet's Encryptを導入できなければサーバを移転する

上記のどちらか検討をおすすめします。
サーバにcertbotを導入する場合はSSHが使えないといけないので、SSHが使えないサーバーは導入が難しいです。

サーバーにLet's Encryptを導入するには

certbotの出番です。

参照https://certbot.eff.org/

Let's Encryptを自動で展開してhttpsにしてくれます。
通常、証明書は90日間の有効期限がありますが自動更新もできます。

親切なことに、導入はサーバーのOSごとにそれぞれ説明があります。

apache,nginx,pleskにも対応しています。(pleskはコンパネでサポートしてるんじゃ、、)

例として、apache,centos6の場合のインストールコマンドです。

wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto

起動

$ sudo /usr/local/bin/certbot-auto --apache

証明書発行の設定にはいります

wwwありとなしどちらのドメインにも対応する場合

certbot certonly **--**webroot **-**w /サイトのディレクトリのパス -d www.ドメイン **-**d ドメイン

認証のためファイルを設置してくれという画面になった場合

//認証用のディレクトリとファイルを設置する
サイトのディレクトリ/.well-known/指定されたファイル名

無事証明書が作成されると/etc/letsencrypt/archiveに証明書が保存されています。

サーバーのSSL設定画面にいき、各証明書をアップロードします。

サーバー側でSSLの対応をしたらサイト内部のパスやリンクをチェックする

サーバー側でSSL対応したあとはサイト内部のチェックをしないといけません。

サイト内部で問題があると

「httpsにアクセスしたけど鍵マークがつかない」

といった現象がおきます。

これはサイトのCSSやJSファイルを読み込ませるパスがhttpのままになっていることが原因でおこります。

たとえば

//css
<link rel="stylesheet" type="text/css" href="http://ドメイン/css/style.css">

//javascript
<script src="http://ドメイン/js/main.js" type="text/javascript" charset="utf-8"></script>

となっていると鍵マークがつきません。
httpsに修正しましょう。

//css
<link rel="stylesheet" type="text/css" href="https://ドメイン/css/style.css">

//javascript
<script src="https://ドメイン/js/main.js" type="text/javascript" charset="utf-8"></script>

wordpressの場合はテーマファイルのheader.phpやfooter.php
でCSSやJSファイルを読み込んでいるのでこの2つのファイルを確認します。

投稿テンプレート(記事テンプレート)に画像を設置している場合もあるかと思います。
その場合はsingle.phpを確認しましょう。
固定ページはpage.php

<img src="http://ドメイン">

となっていたらこちらも変更しましょう。

まとめ

サイトのSSL化については

・サーバーにSSLサポートがあればそれを使うのが一番カンタン

・サーバーにSSLサポートがなければcertbotが導入できるか検討する

・SSLサポートが使えず、SSHやcertbot導入に不安がある場合は
サーバーがサポートしている有料SSLを使うか、サーバーの乗り換えも検討する

といった結論になりました。