logo

Now Loading...

WEBサイト作りノウハウ WEBノウハウメモ

  • HOME
  • 記事一覧
  • WEBサイトのSSL対応方法_レンタルサーバとVPS

WEBサイトのSSL対応方法_レンタルサーバとVPS

cover image

カテゴリー:サーバ関連メモ

作成日付:2020年1月30日

更新日付:2020年1月30日

Wordpressを使用したWEBサイトで、シングルサイト構成、マルチサイト構成、VPS構成の場合のhttpからhttpsに変更する手順を記載します。

目的

SSL非対応のサイトをSSL対応にします。

2018年7月リリースのGoogle Chrome 68からSSL化を推奨の動きをうけて、 従来のWEBサイトを何度かSSL化することを行ったためそのメモ

ここで記載するのは以下3つ、前提としてどのパターンもWordpressを運用しています。

  • レンタルサーバの場合
  • レンタルサーバの場合(マルチサイト運用)
  • VPSサーバの場合

結果

WEBサイトのSSL化の期待値

レンタルサーバの場合、レンタルサーバ(マルチサイト)の場合、VPSサーバの場合、すべてで以下の状態にします。

  • Let’s Encryptを使用してサイト内のURLをhttpからhttpsに変更します。
  • 旧httpにアクセスされた場合httpsへ301リダイレクトを行います。

方法

フロー

1Let’s Encryptの設定
2301リダイレクトの設定
3WordPressの設定
4その他WEBサイトにかかわるサービスの設定変更

レンタルサーバの場合

Let’s Encryptの設定

前提

  
レンタルサーバさくらレンタルサーバ

さくらレンタルサーバでの実行手順は以下参考。 基本的にボタンを押すだけ、反映までに少しだけ時間がかかる。

  • 【無料SSL】サーバコントロールパネルからの導入手順- さくらレンタルサーバ
  • 301リダイレクトの設定

    httpsではなく、従来のhttpのURLでアクセスされた場合の対処法としてhttpsへリダイレクトするように設定する。
    301リダイレクト、302リダイレクトなどがあるが、今回は恒久的な変更であり、Googleに被リンク評価などを引き継がせるため301リダイレクトを行う。

    ※302リダイレクトは一時的な転送

    301リダイレクトの設定は.htaccessの変更を変更する。

    
    vi .htaccess
    
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    説明
    RewriteCondRewriteRule適用のための条件を記載する
    ここでの記載はhttpでアクセスされた場合
    RewriteRuleRewriteRule
    ここでの記載はすべての文字列を対象にhttpsのアドレスに置き換え301リダイレクトする

    WordPressの設定

    WordPressから[設定]->[一般設定]からURL部分を変更する。 ただhttpsに変更するだけ。
    ・WordPressアドレス(URL)
    ・サイトアドレス(URL)

    シングル構成のWordpress設定URL箇所

    レンタルサーバ(マルチサイト)の場合

    Let's Encryptの設定

    シングルサイトの場合と同じ

    301リダイレクトの設定

    シングルサイトの場合と同じ

    WordPressの設定

    マルチサイトの場合、配下の複数のサイトでWordpressのURL設定変更をする必要がる
    しかし、なぜだか親サイトのURLはGUIから設定ができない。
    そのためMySQLのDBを自分で書き換える必要がある。

    確認は[サイト]->[すべてのサイト]->[対象のサイト]->[設定]から確認が可能。
    子サイトの場合はここからGUIで更新が可能。

    ※親サイトと子サイトのテーブル名は名前が似ているので間違わないように

    
    mysql> SHOW TABLES FROM webmemo_db;
    +--------------------------------+
    | Tables_in_webmemo_db          |
    +--------------------------------+
    ・・・省略
    | wpXXXXX2_options              |
    ・・・省略
    | wpXXXXXoptions                |
    ・・・省略
    +--------------------------------+
    34 rows in set (0.00 sec)
    

    更新するテーブルはwXXXXXoptionsテーブルの以下2つ
    ・siteurl
    ・home

    
    mysql> select * from wpXXXXXoptions where option_name='siteurl';
    +-----------+-------------+---------------------+----------+
    | option_id | option_name | option_value        | autoload |
    +-----------+-------------+---------------------+----------+
    |         1 | siteurl     | http://webmemo.tokyo| yes      |
    +-----------+-------------+---------------------+----------+
    1 row in set (0.00 sec)
    
    mysql> select * from wpXXXXXoptions where option_name='home';
    +-----------+-------------+---------------------+----------+
    | option_id | option_name | option_value        | autoload |
    +-----------+-------------+---------------------+----------+
    |         2 | home        | http://webmemo.tokyo| yes      |
    +-----------+-------------+---------------------+----------+
    1 row in set (0.00 sec)
    
    

    MySQLを更新する。httpをhttpsにする。

    
    UPDATE wpXXXXXoptions SET option_value='https://webmemo.tokyo'  WHERE option_id=1;
    UPDATE wpXXXXXoptions SET option_value='https://webmemo.tokyo'  WHERE option_id=2;
    
    mysql> UPDATE wpXXXXXoptions SET option_value='https://webmemo.tokyo'  WHERE option_id=1;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> UPDATE wpXXXXXoptions SET option_value='https://webmemo.tokyo'  WHERE option_id=2;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from wpXXXXXoptions where option_name='siteurl';
    +-----------+-------------+----------------------+----------+
    | option_id | option_name | option_value         | autoload |
    +-----------+-------------+----------------------+----------+
    |         1 | siteurl     | https://webmemo.tokyo| yes      |
    +-----------+-------------+----------------------+----------+
    1 row in set (0.00 sec)
    
    mysql> select * from wpXXXXXoptions where option_name='home';
    +-----------+-------------+----------------------+----------+
    | option_id | option_name | option_value         | autoload |
    +-----------+-------------+----------------------+----------+
    |         2 | home        | https://webmemo.tokyo| yes      |
    +-----------+-------------+----------------------+----------+
    1 row in set (0.00 sec)
    

    MySQLのDBを更新後、GUIから確認を行う。

    マルチサイト構成のWordpress設定URL箇所

    VPSサーバの場合

    VPSの場合、主な違いはLet's Encryptの設定の箇所。
    独自ドメインが設定されている場合 SSL証明書の有効期限は3ヶ月なので、3ヶ月ごとに更新する必要がある。

    Let's Encryptの設定

    前提

      
    OSCentOS release 6.10 (Final)

    サイトをSSL化するには、ApacheのSSLモジュールmod_sslが必要

    
    [root@www15123uf themes]#  httpd -M | grep ssl
    [Sun Jan 19 00:08:27 2020] [warn] module php5_module is already loaded, skipping
    Syntax OK
     ssl_module (shared)
    

    存在しない場合は以下でインストールする

    
    yum install mod_ssl
    

    SSLを使用可能にするにはhttp通信の80番ポートではなく、https用の443番ポートを開ける

    
    vi /etc/sysconfig/iptables
    
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
    
    /etc/init.d/iptables restart
    
    [root@www15123uf themes]# iptables --list | grep http
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https
    
    ※80(http)もiptablesに同じ記述でポートを開放している
    

    certbotのインストール

    
    [root@www15123uf themes]# yum install epel-release
    ・・・省略
    [root@www15123uf themes]# wget https://dl.eff.org/certbot-auto
    [root@www15123uf themes]# yum install certbot python-certbot-apache
    ・・・省略
    

    ▼証明書の発行と自動更新設定

    
    [root@www15123uf themes]# /var/letsencrypt/letsencrypt/certbot-auto certonly -d webmemo.tokyo
    
    説明
    -d(文字列)SSL/TLS サーバ証明書の取得を申請するドメイン名を指定します。

    証明書は3か月で有効期限がきれてしまうため、その都度更新をしなければならない。

    cronを使用して証明書の自動更新設定をする。cron毎月1日の4時に更新する設定
    cronは以下のような書式で記載する。

    分 時 日 月 曜日 実行コマンド

    
    [root@www15123uf cron.d]# vi /etc/cron.d/letsencrypt
    00 04 01 * * root /etc/rc.d/init.d/httpd stop && /var/letsencrypt/letsencrypt/certbot-auto renew && /etc/rc.d/init.d/httpd start
    

    ▼SSL設定の変更

    
    vi /etc/httpd/conf.d/ssl.conf
    [root@www15123uf myserver.com]# grep pem /etc/httpd/conf.d/ssl.conf
    SSLCertificateFile /etc/letsencrypt/live/ドメイン名/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/ドメイン名/chain.pem
    

    301リダイレクトの設定

    レンタルサーバの場合と同じ

    WordPressの設定

    レンタルサーバの場合と同じ

    参考

    その他

    WEBサイトに関連するサービスの設定変更

    ・Googleサーチコンソールの設定変更を行う。

    ・Googleアナリティクスの設定変更を行う。