自社WordPressサイトを完全HTTPS化しました。サーバー専門のフリーランスエンジニアです。クラウドサービスを利用してWebサイト、ITシステムのサーバー構成設計とサーバー構築を行います。ブログHOMEブログTech自社WordPressサイトを完全HTTPS化しました。Tech自社WordPressサイトを完全HTTPS化しました。00082016年4月27日、この「稲葉サーバーデザインWebサイト」を完全HTTPS化(フルHTTPS化、常時SSL化)しました。完全HTTPS化しようと思った理由は次のとおりです。Encryptが正式版となった。GoogleがHTTPSをランキングアルゴリズムとして利用している。HTTP/2は実質的にHTTPS通信が必須。WordPressサイトのHTTPS化を試してみたかった。※今回は、HTTP/2には対応していません。完全HTTPS化にあたっての作業手順は、次の記事を参考にしました。・ブログの完全HTTPS化を完了、HTTPからHTTPSへの移行プロセスを共有https://www.suzukikenichi.com/blog/what-i-have-done-to-switch-my-blog-to-full-https/作業手順について簡単にまとめておきます。サーバー構成HTTPS化時点のWebサイトのサーバー構成は次のとおりです。完全HTTPS化の手順はこんな感じです。アクセス解析ツールAWStatsの設定変更ひとつずつ補足します。TCP/443のアクセス許可これまでHTTPSは一切使用していなかったので、クラウドのファイアウォールとサーバーのiptablesで、TCP/443へのアクセス許可ルールを新たに追加します。Encryptで取得しました。Encryptで発行される証明書の有効期限は90日間なので、自動更新の設定も行います。自動更新を実行するスクリプト。更新時に、一時的にNginxを停止する必要があります。/root/bin/update_sslcert.sh(2016.6.30追記)現在は、シェルスクリプトは以下のように変更しました。Nginxの停止、起動を行うようにしました。EOF--(2016.6.30追記ここまで)シェルスクリプトの定期実行のため、cronで週に一度、毎週水曜の14:50に実行するようにします。仕様では、証明書を更新できるのは有効期限の30日以内で、期限まで30日以上あるときは更新コマンドを実行しても、証明書ファイルは更新されません。このため、更新処理は週に一度実行するようにしました。/dev/null--※平日の昼間にしたのは、何らかの不具合でWebサーバープロセスが停止したままとなってもすぐ対処できるようにするためです。NginxのHTTPSアクセス設定を追加HTTPSアクセス用のConfigを追加します。HTTPS通信に関する設定のみ抜粋すると、次のような感じです。プロトコルの暗号化パラメータファイルを作成します。サーバーのスペックにもよりますが、30秒から5分ぐらいかかります。2048Nginxに反映するため、再起動します。この時点では、WebコンテンツのHTTPS化は行っていないので、リダイレクトの設定は行いません。Lightプラグインを利用してソーシャルブックマークボタンを設置していました。Cacheを使用しました。Cachehttps://marubon.info/intro-update-wordpress-plugin-sns-count-cache-3-5403/HTTPS化する前に、このプラグインをインストールしておきます。シェアボタンを表示するHTMLコードとCSSは次の記事を参考にしました。ありがとうございました。Cache」を利用してオリジナルのシェアボタンを設置しましたhttp://jimeishi.net/sns-count-cache-sharebutton(↑記事が見れなくなりました。)フロントエンドの知識がほとんどないので、今回のHTTPS化作業の中では、このシェアボタンの表示、とくにCSSまわりの設定が一番苦労しました。AwesomeアイコンのCSSとsb.cssへのlinkを追加することで解決しました。/>...</head>--この状態で、各Webページのシェアボタンが正しく表示されることを確認します。Configの設定変更を行うので、万一失敗したときに元に戻せるよう、バックアップをとっておきます。DBデータのdumpと、WordPressディレクトリのコピーを行いました。HTTP→HTTPSの切り替えこのブロックの設定作業中は、Webページにアクセスできなくなったり、表示が乱れたりします。本当は、HTTPSでの表示が問題ないことを確認してから、最後にリダイレクトの設定を行うつもりでしたが、僕の環境では、このブロックはまとめて行う必要がありました。https;の設定が必要です。(僕はこの設定が抜けていて、リダイレクトループが発生してしまいました。$proxy_add_x_forwarded_for;--※この時点ではHTTPS化の設定途中なので、Nginxのreloadは行いません。WordPressの設定変更wp-config.phpで強制HTTPS通信の設定を追記します。true);...--また、WordPressのサイトアドレスをHTTPSに変更します。記述された内部リンクを置換します。Regexプラグインを使用しました。して、「Search」して変更内容を確認します。→436件ありました。Save」で置換を実行します。NginxをreloadHTTPS化のひととおりの設定を行ったので、NginxをreloadしてHTTPSリダイレクト設定を反映します。Cache設定を行っている場合は、キャッシュを削除します。Controllerプラグインを使用しているので、WordPress管理画面でキャッシュ削除を行いました。ページ表示を確認ここまでの設定で、WebサイトがHTTPSで表示できるようになっているはずです。WebブラウザからWebサイトの表示を確認します。HTTPでアクセスしたときに、自動的にHTTPSページにリダイレクトされることも確認します。Chromeのディベロッパーツールで警告が表示されていないか、確認します。うまく表示されないときは、Webブラウザに表示されるエラーメッセージや、サーバー上のWebサーバー(Nginx)のアクセスログ、エラーログのメッセージをヒントにして対応します。Content:~」の警告がいくつか出ていました。Cacheプラグインで「HTTPからHTTPSへのスキーム移行モード:有効」とします。Cacheプラグインが、疑似的にHTTPページとHTTPSページのシェア数を合計して表示してくれるようになります。Security)の設定HSTSは「2回目以降のアクセスでHTTPのURLをブラウザに打ち込んでも、HTTPSでアクセスさせる仕組み」とのことで、その設定を行います。Testのレイティングがアップします。監視ツールや外部サービスを使用していれば、あわせて変更します。