サイトにSSLを導入する際の実際の手順

先日、グーグルのサーチコンソールから、HTTPSに移行しないとクロームで警告が表示されるようになるという趣旨のメールが来ていたため、当サイトでもSSLに対応することにしました。

当サイトではsixcoreを利用しており、こちらで「ジオトラストのクイックSSLプレミアム」を導入してみたのですが、料金の方は初期費用を含め37,260円でした。

また、同じサーバーに健康系のサイトも設置しているのですが、そちらでは「グローバルサインのクイックSSL」を利用しており、そちらは初期費用を含めて32,400円でした。

どちらがよいのかは甲乙つけがたいですが、グローバルサインの方が気持ち安めかもしれません。

おそらく、SSL専用のIPアドレスが付与されるため、けっこうな費用がかかるのだろうと思いますが、他のレンタルサーバーではSNIのネームベースの格安SSLを利用できるケースもあり、そのようなサーバーでは数千円程度でも利用できます。

費用をおさえてSSLを導入する際には、格安SSLも検討されてみるとよいかもしれません。

SSL申請のコモンネームについて

このSSL申請の時点で気を付けたい点は「wwwあり・なし」の違いです。

一般的には、「wwwあり」を付けたドメイン名で申し込みをすれば、両方での接続が可能となりますので、「wwwあり」でサイトを公開している場合にはそのままwwwを付けて申し込みをすればよいと思います。

当サイトも「www付き」のURLで運営していますので、「www.homepage-tukurikata.com」にて申請しました。

ただ、「wwwなし」の「example.com」の形でサイトを公開している場合は判断が難しいです。

一応は「www付き」で申し込みをして両方ともでアクセスできる状態にしておき、.htaccessにて「wwwあり」を「wwwなし」にリダイレクト設定すればよいと考えるかもしれません。

けれども、この場合、サイトシールや携帯サイト(※フィーチャーフォン)の利用がwww付きの方でしか利用できないケースがあります。

なので、「example.com」の形でサイトを運営している場合は「wwwあり」を捨て、そのまま「wwwなし」のコモンネームで申し込んだ方がよい気もしますが、このあたりは判断が難しいかと思います。

SSL設定後のホームページの修正方法

審査を通過してSSLの設定が完了したのち、https:のページにアクセスするとサイトが表示されるようになりますが、そのままの状態では「保護されていません」などの表示が出てくるはずです。

なので、サイトを修正する必要があります。

修正する箇所は「httpsではないページ」から読み込んでいるリソースの箇所になりますが、おそらくは<img src="http://"の画像タグがメインになるかと思います。

サイトを表示する際、htmlファイルだけではなく、スタイルシートや画像なども読み込んで表示されますが、読み込むリソースについても安全なhttpsページからのものでないとエラーが表示されてしまいます。

これは自サイト内の画像のみならず、外部サイトから読み込むアフィリエイトのバナー画像やアクセス解析の1pxの小さな画像などもhttpsに対応する必要があります。

内部リンクについてはリソースを読み込んでいるわけではありませんが、こちらもそのままだとhttpページへと遷移してしまいますので、すべてhttps:付きに修正する必要があります。

ただし、他サイトへの外部リンクについては、httpsに対応していなければリンク切れになってしまうため、httpのままで問題ありません。

https:に修正する箇所

  • 読み込んでいる画像などのリソースの箇所(自サイト+外部サイト)
  • リンク(自サイト内の内部リンクのみ、外部リンクはhttpのままで可)
  • その他、httpの外部サイトからのプラグインなど

この実際の修正方法については、「http://www.example.com」などのURLをs付きの「https://www.example.com」へ一括置換してしまえば、該当箇所はすべて修正されるはずです。

これはhtmlファイルだけではなく、cssに記載されている画像なども修正する必要があります。

これら、すべて修正したら緑色に表示されるはずです。

修正をしたものの、なかなか正常に反映されない場合、ブラウザの「キャッシュ」を消去してから再度アクセスしてみるとよいでしょう。

ほか、サイトマップやロボットテキスト、.htaccessなどに記載しているURLについても、httpsへと修正しておきましょう。

SSL専用のIPアドレスへのDNS設定

SNIによるネームベースでのSSLの場合は特に必要ありませんが、一般的な独自SSLの場合、ひとつのIPアドレスにSSL証明書はひとつまでとなっているため、レンタルサーバー側からSSL専用のIPアドレスを渡されるはずです。

なので、そちらのSSL専門のIPアドレスへDNS設定を変更する必要があります。wwwありとなしの両方で申し込んだものの、「wwwなし」の方では表示されない場合、まずはこのIPアドレスの設定を確認されるとよいでしょう。

サイトシールの貼り付け

こちらは当サイトがもらったシールになりますが、このようなサイトシールがもらえる場合、どこかに貼付しておくとよいかもしれません。

文言については、「あなたの個人情報はSSL通信による暗号化で安全に保護されています。」など、安全に配慮している旨の内容を書いておけばよいと思います。

サーチコンソールとグーグルアナリティクスの修正

次に、グーグル関係のツールを修正しておくことをおすすめします。

  • サーチコンソール
  • アナリティクス
  • グーグルアドセンス

このうち、アドセンスのサイト登録についてはドメイン単位での登録になるので、サイトをSSL化しても特に必要な修正はありません。タグについても、基本的にはSSL対応になっているため、かなり古いコードをそのまま使っているのでなければ、張り替える必要はないと思います。

もしコードを確認してみて、http://で始まっている場合には新しいコードに取り換えるとよいでしょう。

また、アナリティクスについても、単にプロパティの箇所をhttpsに変更するだけなので、タグなどを張り替える必要はありません。

面倒なのはサーチコンソールですが、https:に対応したサイトを追加で登録する必要があります。

当サイトの場合、httpの「wwwあり・なし」で2つ、httpsの「wwwあり・なし」で2つの合計4つを登録しています。おまとめ機能があるので、そちらにメンバー登録してまとめていますが、いずれにしてもすべてのパターンで登録しておく必要があります。

「wwwなし」のコモンネームでSSL申請した場合、https:の「wwwあり」でアクセスしても表示されませんので、この場合はサイト登録をすることができず、2つか3つになると思います。

そのほか、アフィリエイトを利用している場合もASP側でサイト登録を修正しておき、SSL対応のコードに張り替えておくとよいでしょう。

301リダイレクト設定や常時SSLの設定

SSLに申し込んだ時点では、http:とhttps:の両方でアクセス可能な状態になっているはずですので、これを常にhttps:で表示されるようにして、常時SSLに設定しておくことをおすすめします。

具体的には、httpからhttpsへと301リダイレクトすることになりますが、.htaccessで設定しておくとよいでしょう。

例えば、当サイトの場合は以下のように記述しておりますが、様々な書き方がありますし、個々のサイトの状況によって違いますのでご注意ください。

一般的な301リダイレクトの記述例

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

HSTSの注意点

また、強制的にHTTPS接続を使用する「HSTS」(HTTP Strict Transport Security)の設定もありますが、こちらも.htaccessに記述しておくべきかと思います。

ただし、当サイト運営者の場合、SSL対応した後にサブドメインが表示されなくなってしまい、このHSTSが原因ではないかといろいろ調べることになりました。

結果的には、このHSTSは関係なかったのですが、なかにはHSTSの「includeSubDomains」の設定が原因で、通常のhttpで運営しているサブドメインまでが強制的にhttpsページへと接続されてしまい、サイトが表示されなくなってしまうケースもあります。

特に、ネット上の「HSTS Preload list」に登録している場合、ブラウザのキャッシュの削除だけではなく、リストからも削除しないといけなくなりますので、かなり時間がかかってしまうケースもあり、途方に暮れているサイト運営者もネット上で見受けられます。

HSTSも設定しておくべきとは思いますが、「サブドメイン」を通常のhttp:にて運営する場合には注意されることをおすすめします。

SSL設定後にサブドメインが表示されない場合

予算の都合上、サブドメインについては通常のhttp:で運用する場合、独自SSLを導入したあとにサブドメインが表示されなくなるケースもあるかと思います。

この場合、まずはhttpで運用するサブドメインまでSSL専用のIPアドセスにDNS設定してしまっていないか確認してみることをおすすめします。加えて、上記のHSTSの設定で「includeSubDomains」を記述していないかを確認してみることをおすすめします。

さらに、.htaccessのリダイレクト設定がサブドメインにも影響している可能性があるため、その場合にはサブドメインにも.htaccessを設定することで回避することができます。

サブドメイン側の記述例

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*) http://hoge.example.com/$1 [R=301,L]

サブドメインについてもSSL対応するかしないかによって、複雑な対応が必要となってしまうため、できるだけ、サポートの充実しているロリポップなどのレンタルサーバーを利用するのがよいかもしれません。