Let’s Encryptを使用したSSL設定の備忘録

Pocket

ようやくHTTP通信からHTTPS通信へと変更しました。
SSL証明書が無料で発行できる時代になり、とてもありがたいことです。
使用したのはおなじみの(?)Let’s Encryptです。

使い方などはこちらのLet’s Encrypt の使い方を見ればイメージがわくと思いますが、とりあえずインストールするためのコマンドを備忘録として置いておきます。

前提

  • Amazon Linuxを使用している
    • BitnamiやマーケットプレースのAMIを使用していない
    • ssl_modlueをインストールしていない
    • Route53を使用している
  • WordPressのWebサーバーは.htaccessでリダイレクトしている
  • Googleの解析サービスを使用している
    • Google Analytics
    • Google Search Console
  • ドメインはkitamix.net
  • メールは<email>

サーバーへの設定手順

Let’s Encryptからクライアントソフトウェア「Certbot」をインストールします。

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod 700 /usr/bin/certbot-auto
sudo /usr/bin/certbot-auto certonly --webroot -w /var/www/html --email <email> --debug -d kitamix.net

途中でいくつか質問に答えます。

[2019.01.06 追記]
ワイルドカードの場合はこのコマンドを実行

sudo /usr/bin/certbot-auto certonly --manual -d *.kitamix.net --email <email> --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

そうするとDNS TXT recordにワンタイムテキストを作成するように指定されるのでTXTを登録(して少し待つ)。

登録されたかどうかは下記のコマンドで確認。

nslookup -q=txt _acme-challenge.kitamix.net

[2019.01.06 追記ここまで]

httpdのバージョンを確認しておきます。
2.4系なので、mod24_sslをインストールします。

httpd -v
sudo yum install mod24_ssl

ssl.confに設定を更新します。

sudo vi /etc/httpd/conf.d/ssl.conf

上2行はバーチャルホストのディレクティブ内にある設定値をコメントアウトしたもので、最後の4行はssl.confの末尾に挿入したものです。

# SSLProtocol
# SSLCipherSuite

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES:!RC4:!DH
SSLHonorCipherOrder On
Header set Strict-Transport-Security "max-age=315360000;"

[2019.01.06 追記]
下記のpemファイルへのパスも追記します。

SSLCertificateFile /etc/letsencrypt/live/kitamix.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/kitamix.net/privkey.pem

ワイルドカードの場合はサブドメインを指定する。

[2019.01.06 追記ここまで]

Webサーバーの再起動

sudo service httpd restart

QualysのSSL Server TestをやってみるとA+まで行くはず(2018年11月現在)
結果を公開されないように”Do not show the results on the boards”のチェックを忘れずに。

Let’s Encryptの期限は90日なので下記のコマンドをcronに登録しておきます。

sudo /usr/bin/certbot-auto renew --post-hook "sudo service httpd restart"

cronの動作確認コマンド

/etc/rc.d/init.d/crond status

毎週、日曜日の夜中3時に確認するように設定しておきました。

sudo vi /etc/cron.d/letsencrypt

次はWordPressの設定です。

sudo vi wp-config.php

リダイレクトループを避けるため、下記の2行を追記

$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';

設定 > 一般設定から下記のURLをHTTPからHTTPSへ更新

  • WordPressアドレス(URL)
  • サイトアドレス(URL)

最後に.htaccessに下記を追加します。

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

これでサーバーへの設定は終わりです。

サービスの設定

Googleのサービスをhttpからhttpsに変更しておくのも忘れないようにしておく。

[2019.01.06 追記]
Google Analytics
-> HTTPをHTTPSに変更(するが、過去のは消えてしまうのでコピーしたほうが良いか?)

Google Search Console
-> 新しいプロパティを作成

[2019.01.06 追記 ここまで]