新たな導入環境に合わせ、以前ブログで記述した内容を改訂しています。
Let’s EncryptによるフリーのSSL認証を導入する手順です。
事前準備
導入環境 Ubuntu Server 16.04
導入前準備として以下項目を再確認・設定して下さい。
Apacheの設定ファイルsite-available内のdefault.confのServerName, ServerAliasを指定して下さい。
サブドメインの場合はServerNameだけを指定して下さい。
ServerName sub.example.com
ServerAlias example.com
Apacheでsslモジュールを有効にします。
sudo a2enmod ssl
Apacheを再起動しSSLアクセスを有効にします。
sudo service apache2 restart
Step 1 — Gitのインストール
まずパッケージマネージャーをアップデートします。
sudo apt-get update
Let’s Encrypt はGitHubにより管理・更新されているため、Gitをインストールします。
sudo apt-get install git
Step 2 — Let’s Encrypt Clientのダウンロード
サードパーティアプリが一般的にインストールされるoptディレクトリにLet’s Encryptをインストールします。
Gitによりクローンを作成します。
sudo git clone GitHub - certbot/certbot: Certbot is EFF's tool to obtain certs from Let's Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol. /opt/letsencrypt
上記コマンドにより、Let’s Encrypt公式レポジトリのコピーが /opt/letsencrypt に作成されます。
Step 3 — SSL認証のセットアップ
Let’s EncryptによるSSL認証は非常に簡単です。ドメインと設定ファイルの指定のみで、認証処理は自動的に行われます。
まずletsencryptのディレクトリに移動します。
cd /opt/letsencrypt
インタラクティブな認証処理が下記コマンドで行われます。サブドメインの場合はサブドメインを指定します。
./letsencrypt-auto --apache -d example.com
または (2016年後半にcertbot-autoに変更になったようです。)
./certbot-auto --apache -d example.com
サブドメインの場合
./letsencrypt-auto --apache -d sub.example.com
または
./certbot-auto --apache -d sub.example.com
ベースドメインに加え、サブドメインの認証処理を同時に行う場合は、サブドメインの箇所を追加して下さい。
./letsencrypt-auto --apache -d example.com -d sub.example.com
上記コマンド実行中、認証オプションを選択する画面が表示されます。
- ドメインが記述された設定ファイルの選択
- e-mailアドレス
- httpアクセスをhttpsへリダイレクトするかどうか
などを選択して下さい。
インストール終了後、以下サイトで指定のサイトがSSL認証されているかどうか確認して下さい。example.comにはベースのドメインまたはサブドメインを入力します。
Step 4 — 認証の自動更新
Let’s Encryptによる認証有効期間は90日です。余裕を見て60日以内ごとに更新することをお勧めします。
以下更新コマンドです。
./letsencrypt-auto renew
インストールした時点では、まだ更新の必要がない旨のメッセージが表示されます。
Checking for new version…
Requesting root privileges to run letsencrypt…
/root/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
複数のドメインを指定した場合には、ベースドメインのみ上記のメッセージに表示されるようですが、認証の更新は問題なく登録ドメインについて行われます。
その都度更新コマンドを実行するのは手間ですので、cronジョブに代行させます。
crontabにスケジュール、実行コマンドを追加します。
sudo crontab -e
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
letsencrypt-auto renew コマンドを毎週月曜日AM2:30に実行し、ログを/var/log/le-renewal.logに記録します。
Step 6 — Let’s Encryptのアップデート
Gitによる更新コマンドです。
cd /opt/letsencrypt
sudo git pull