【HTTPS】当ブログ(zibunlog.com)をHTTPSでの表示に変更しました

HTTPS化するまでの流れ

GoogleからアナウンスをされているようにWEBの安全性を高めるためにあらゆるWEBページのHTTPS化が推奨されています。

HTTPS化をすることでブログの検索順位が上がることも予測されるので僕のブログでも早速SSL証明書を用意してページ全てをHTTPSに変更しました。

security
Google では過去数か月にわたり、Google のランキング アルゴリズムでのシグナルとして、暗号化された安全な接続をサイトで使用しているかを考慮に入れたテストを実施してきました。この実験ではよい結果が得られているため、ユーザーがもっと安全にサイトを閲覧できるよう、すべてのサイト所有者の皆様に HTTP から HTTPS への切り替えをおすすめしたいと考えています。

Googleアナウンスページ

まずはSSL証明書の用意

HTTPS化をするにはまずはSSL証明書の準備が必要になります。

SSL証明書は有名なとこでいうとグローバルサインやジオトラストなどがありますが、ECサイトや金融系のWEBサイトでない限り有名なSSL証明書は必要ないと思います。

僕のような個人ブログなどであれば安価なSSL証明書で十分です。
その中で僕が選んだSSL証明書はKingSSLを選んでいます。
kingssl page

このKingSSLを選んだ理由はやはり値段が安いということですね。一つのコモンネームのSSL証明書の年間の金額が900円と他のSSL証明書よりはるかに安い金額です。
あらゆるサブドメインにも対応したワイルドカードの形式でも年額で9,000円と大変お得です!

それに、このKingSSLは完全自動化により証明書の発行が非常に速いです。僕も実際に使ってみて申請後約10分くらいで発行できました。

まず申請を行うにはCSRを作成しなくてはいけません。CSRとは証明書を作成するための事前情報といえばわかりやすいかもしれません。
CSRを作成するときに国や所在地を表す情報や、最も需要なコモンネームというサイトのドメインの情報が必要になります。

このCSRを作成する方法ですが、VPSなどのサーバを使用している人はサーバにログインをしてからopensslコマンドで簡単に作成することができます。

サーバにログインする環境が無い人は無償で使えるツールのサイトから作成することも可能です。
CSR作成ツール

僕の場合はサーバにログイン後にコマンドで作成しています。

#-- CSRを作成するための秘密鍵の作成 --#
# openssl genrsa -des3 -out zibunlog.com.key 2048
Generating RSA private key, 2048 bit long modulus
....+++
............................+++
e is 65537 (0x10001)
Enter pass phrase for blog.zibunlog.com.key:
Verifying - Enter pass phrase for zibunlog.com.key:

#-- 作成した秘密鍵を基にCSRの作成 --#
# openssl req -new -key zibunlog.com.key -out zibunlog.com.csr
Enter pass phrase for zibunlog.com.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:****
Locality Name (eg, city) [Default City]:*****-shi
Organization Name (eg, company) [Default Company Ltd]:ZIBUNLOG
Organizational Unit Name (eg, section) []:Personal
Common Name (eg, your name or your server's hostname) []:zibunlog.com
Email Address []:*****@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

ご覧のとおりCSRには国やコモンネームなどが含まれていることがわかると思います。これでCSRの作成は完了です。

そして、作成したCSRファイル(zibunlog.com.csr)の内容をテキストなどで開きます。
テキストなどで開くとしたのような英数字の羅列が表示されるのですべてコピーをします。

-----BEGIN CERTIFICATE REQUEST-----
MIIC3TCCAcUCAQAwgZcxCzAJBgNVBAYTAkpQMQ0wCwYDVQQIDAROYXJhMRYwFAYD
VQQHDA1LYXNoaWhhcmEtc2hpMREwDwYDVQQKDAhaSUJVTkxPdfadfaRzERMA8GA1
UGVyc29uYWwxFTATBgNVBAMasdfasdMDHppYnVubG9nLmNvbTEkMCIGCSqGSIb3D
emlidW5sb2dAemlsdfasdfaidW5sb2cuY29tMIIBIsdfasjANBgkqhkiG9w0BAQd
emlidW5sb2dAemlidW5sb2cuY29tMIIBIjANBgkqhkiG9w0afaBAQEFAAOCAQ8AM
/s6V/BpXC+3uG89Tpc151lNVr3yRsdasdfafgK7rO3zwTqIkBL1alUr4yau1A5MJ
fZnML5mh9WUPu3asdfasLcDk+2dafX+ebpNnG3TqIVxwgG6FyhyvXU0+9M4a/M1F
pvomR8/ZTadfa4BPtN/Masdfas4IzVwm8defwv3p0aWe0JJ/j9d11dHeJ4XCDHVC
RadfadfaznzV9c/Q3f0vywIlmJDhjfEFtIRswIDAQAasdfasBoAAwDQYJKoZIhvc
/qmTxX6KfmYkgLkSR7afaD2Y+v7mnu+UsJmwHDYNzZW3SsWPEF4RJq/AS57UMjLP
XnwTRdBJFplSMDgqBddWasdfasnZap1gqTzJytgEKWjKRKDye9mIdKIhzAflnei7
9CvMtLU+M4pwadfasG1bwJMe8auXasdfaWJiDpqdB4dtVyziMazB6sgXe5a2EeFa
KCT+TI55k1+aMfgsdfa8UZCMWMT8WNdJfdcb/yUCAyVM4ZbfLLuveBAWmL1LRhwB
iHLs8Hx4JLElX04ZpV5Vkco=
-----END CERTIFICATE REQUEST-----

そして、KingSSLの申請時のCSRの欄に張り付けて、次の画面へをクリックします。乗り換え元証明書の欄もありますが、新規の場合は不要です。
CSR張り付け
CSR内容確認のページが表示されるので内容に間違いが無ければ「次の画面」へを選択します。

申請が正当な物かを確認するためにメールが送信されることになります。そのためのメールアドレスを選択します。
ここで選ぶことができるアドレスはドメイン取得時のwhoisの登録アドレスか、もしくはドメイン自身のMXレコードのpostmaster等の宛先に限定されます。
SSL承認メール宛先
ドメインなどの管理に慣れていない人はこのあたりでSSL証明書の取得にてこずると思います。
僕は本業の仕事でよくドメインの申請などをしているので、仕事の経験が役に立ったと感じました。

作業を進めていくと選択したメールアドレスに承認用のメールが配信されています。そのメールに記載されているリンクを開くと、「承認する」、「承認しない」のどちらかを選びます。承認するを選択すると申請の処理は完了です。
承認する 承認しない
承認後数分したら証明書発行のメールが届きます。この速さにも驚きました。

メールを開くと「◆証明書」、「◆中間証明書」、「◆証明書+中間証明書(PKCS7形式)」の3つの英数字の羅列がテキストであります。

まずは「◆証明書」の”—–BEGIN CERTIFICATE—–” から “—–END CERTIFICATE—–“をコピーしてzibunlog.com.crtというファイル名で作成・保存します。
※ファイル名はドメインなどにあわせて適宜変更してください。

次に「◆中間証明書」の”—–BEGIN CERTIFICATE—–” から “—–END CERTIFICATE—–“をコピーしてzibunlog.com.cacerというファイル名で作成・保存します。
※ファイル名はドメインなどにあわせて適宜変更してください。

そして、この2つのファイルをサーバにアップロードします。サーバの操作に慣れている人はコマンドでファイルを作成して保存しても問題はありません。

ここまでで証明書ファイルの準備は完了です。

サーバに設置します(Apache)

用意した証明書関連のファイルをWEBサーバに設置をします。

今回はApache2.2系のケースで書いています。

当サイトのWEBサーバはVirtualHost(バーチャルホスト)を使用しています。これまでは80番ポート用の設定しかなかったので、HTTPSの443番ポート用の設定を新規に作ります。

▼とりあえずこんな感じで書いておけば大丈夫だと思います。あくまでも参考程度にしか書いていません。各環境にあわせて書き換えが必要です。

# vim /etc/httpd/conf.d/ssl.conf

(下の内容を記述)
##
## SSL Virtual Host Context
##

    DocumentRoot "/var/www/zibunlog.com"

    ServerName "zibunlog.com"
    ServerAdmin postmaster@zibunlog.com
    ModPagespeed on
    ModPagespeedFileCachePath "/var/mod_pagespeed/cache/"

    CustomLog "/var/log/httpd/ssl-zibunlog.com-access_log" combined
    ErrorLog "/var/log/httpd/ssl-zibunlog.com-error_log"

    
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
    

    SSLEngine ON
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    #SSL Certification 2014
    SSLCertificateFile "/etc/httpd/conf/.ssl/zibunlog.com.crt" #サーバ証明書
    SSLCertificateKeyFile "/etc/httpd/conf/.ssl/zibunlog.com.key" #秘密鍵
    SSLCACertificateFile "/etc/httpd/conf/.ssl/zibunlog.com.cacer" #中間証明書

        
                SSLOptions +StdEnvVars
        
        
                SSLOptions +StdEnvVars
        

    BrowserMatch ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0


設定の反映のためにApacheの再起動が必要です。

# /etc/init.d/httpd restart

ここまでの設定で問題が出ていなければSSL証明書の設置は完了です。

ブラウザを開いて http://zibunlog.com のようにHTTPSの形式でページが見れたら成功です。

HTTPSの形式で開くことができていれば下の図のように緑色の鍵マークが出てきます。
HTTPS
そして、鍵マークをクリックして接続タブを選択すると証明書の情報や暗号化されていることを確認できます。
証明書情報
あとWEBサーバ上でやっておくことは http://zibunlog.com での接続を http://zibunlog.com へ変換(リダイレクト)させなくてはいけません。

変換するときに注意しておきたいのが ドメインやURLを恒久的に変更する場合を意味する[R=301,L]を入れておいた方がいいです。httpとhttpsで同じコンテンツを見せていたり、転送前のURLが持っていた被リンクなどのデータを転送先のURLに引き継ぐことができるのでSEOとしても301リダイレクトは重要です。
Googleからも301のリダイレクトが重要だとアナウンスもされています。

301 リダイレクトの準備を行う

マッピングと新しいサイトの準備ができたら、次はマッピングで指定した元の URL から新しい URL への HTTP 301 リダイレクトをサーバーにセットアップします。

301リダイレクト Googleアナウンスページ

80番ポート用に設置しているVirtualHostの設定に以下の2行を追加してApacheを再起動すれば設定は可能です。
バーチャルホストの設定に以下の行を追加します。

   RewriteEngine on
   RewriteRule ^/(.*) http://zibunlog.com/$1 [R=301,L]

設定の反映のためにApacheの再起動をします。

# /etc/init.d/httpd restart

こちらのサイトでリダイレクトがちゃんとされているかの確認もできるので、検証はしておいた方がよさそうです。
301リダイレクト 確認用ページ

ここまでの設定でブログを運営する上での設定は完了です!

HTTPSすることでの影響

僕のブログもHTTPSを導入しましたが、導入してから見えてくることもあります。

いくつかページを開いてみると以下のようなちょっとした警告のマークが出てきます。原因はHTTPSのページの中に広告用のリンクのコードがHTTPで読み込まれていたり、JavaScriptのコードが組み込まれているためです。
せっかくhttps://xxxxxx で安全性を高めているのにこのような警告が出てくると中途半端な気持ちが少しあります。
HTTPS httpload

でも、WordPressの管理画面などには広告は表示されないので、緑のマークが維持されます。

それから、http から https へURLが変更されたことにより、これまでのSNSのカウントが無くなります。ページ上に表示させているツイートやはてなのブックマーク数も0からの再スタートになります。
301のリダイレクトでページの評価は変わらないにしても画面上での数値が無くなると少し惜しい気もします。

さいごに

WordPressの安全運用のためにもログイン―ページでのID・パスワードの入力や、記事の投稿画面などのページも暗号化されるので安心です。

SNS系のカウントが無くなるのは少しさみしい気もしますが、GoogleがHTTPSを推奨していて今後の検索順位にも影響はありそうなので僕はこのまますべてのページをHTTPSを継続していこうと思います。