Let’s EncryptでTLS化する(前編)

Let's Encryptを使ってWEBページをTLS対応する方法です。無料でSSL/TLS サーバ証明書が発行されます。実際に試した環境は以下となります。

CentOS 6.10 + Apache 2.2.15

(作業はrootユーザで行います)

1.事前準備

mod_sslのインストールをします。

# yum install mod_ssl

/etc/httpd/conf.d 配下にssl.confがあり、ssl.confの中でmod_ssl.soをロードする記載があります。

Let's Encrypt は、クライアントソフトウェア「Certbot」を使用してSSL/TLS サーバ証明書を取得します。Certbotが必要とする依存関係にあるパッケージがEPELリポジトリにあるため、先にインストールしておきます。

# yum install epel-release

※最新になっている場合は実行してみても「パッケージはインストール済みか最新バージョンのため何もしません」となります。

certbotを以下のURLから取得します。

# wget https://dl.eff.org/certbot-auto

任意のディレクトリに保存して、certbot-autoに実行権限を付与します。

# chmod 775 certbot-auto
# chown root:root certbot-auto

なお、certbotをインストールする前にcertbotが外部と通信できるように80番ポートと443ポートをあけておいてください。

2.certbotのインストール

certbotを保存したディレクトリに移動し、certbot-autoを実行します。certbot-autoを実行すると、Certbotクライアントの実行に必要な複数のパッケージが自動的にインストールされます。

# ./certbot-auto

インストールが始まると以下のような質問が英語で行われます。

・連絡先のEmailアドレス
 → Let's Encryptから連絡を受けたいEmailアドレスを入力します。

・規約に同意するかどうか
 → 「A」を入力します(Agreeのこと)。

・Let's EncryptパートナーにEmailを公開するかどうか
 → 「Y」or「N」を入力します(Yes or Noのこと)。

・httpsをアクティブにするサーバ
 → 証明書を取得したいサーバを選んで番号を入力します。

・httpアクセスをhttpsにリダイレクトするかどうか
 → 「Secure」の番号を選びます(リダイレクトのこと)。

インストールが終了したら、証明書の取得に移ります。

3.サーバ証明書の取得

「example.jp」と「www.example.jp」の両方に対応するサーバ証明書を取得する場合、以下のコマンドを実行します。

# ./certbot-auto certonly --webroot -w /var/www/html -d example.jp -d www.example.jp

※上記の「/var/www/html」はドキュメントルートに置き換えてください。

証明書の取得が成功すると「IMPORTANT NOTES:」(画面の下部)に Congratulations! のメッセージが表示されます。このメッセージの中に証明書の有効期限が記載されていますので、確認しておいてください。Let's Encryptの場合は証明書の有効期限は発行から3ヶ月間となっています。

Your cert will expire on 2018-12-31.(有効期限のメッセージ)

なお、実際の証明書は以下のディレクトリに配置されます。

サーバ証明書(公開鍵)
SSLCertificateFile・・・/etc/letsencrypt/live/サーバ名/cert.pem

秘密鍵
SSLCertificateKeyFile・・・/etc/letsencrypt/live/サーバ名/privkey.pem

中間証明書
SSLCertificateChainFile・・・/etc/letsencrypt/live/サーバ名/chain.pem

Let’s EncryptでTLS化する(後編)」に続く。

WordPressのリビジョンを削除する。

WordPressを使用していて「下書きとして保存」をしていると、リビジョンが溜まってしまいます。このリビジョンを削除する方法です。プラグインを使わず、MySQLからレコードを削除してリビジョンを消します。

MySQLのバージョンは、5.7.23 です。

なお、リビジョンを含め投稿記事が格納されているテーブルは「wp_posts」というテーブルになります。

1.データベースにログインします。

$ mysql -u (ユーザ名を入力) -p
Enter password: (パスワードを入力)

mysql> use (データベース名を入力)

2.テーブルの状態を確認します。

mysql> select ID, post_status, post_type from wp_posts;
(※出力結果は、抜粋です)
+—–+————-+———————+
| ID | post_status | post_type |
+—–+————-+———————+
| 26 | trash    | page   | ←(※1)
| 28 | publish   | post   | ←(※2)
| 20 | publish   | post   |
| 27 | publish   | post   |
| 15 | trash    | post   | ←(※3)
| 18 | inherit   | revision | ←(※4)
| 16 | inherit   | revision | ←(※4)
+—–+————-+———————+

(※1) 固定ページがゴミ箱に入れらたもの
(※2) 公開記事
(※3) 投稿がゴミ箱に入れらたもの
(※4) リビジョン

リビジョンは、post_status が inherit、post_type が revision となっているので、この条件で消す(Deleteする)ことにします。

3.レコードの削除をします。

mysql> delete from wp_posts where post_status = 'inherit' and post_type = 'revision';
mysql> commit;
mysql> exit
Bye

以上。