超簡易的 Let’s Encryptでhttpsサーバー設定

超簡易的 Let’s Encryptでhttpsサーバー設定

Let’s Encrypt は GitHub で公開されているので
まずはgitをインストールしましょう。


# yum -y install git

openssl や mod_sslも必要ですので
まだ導入してなければ、追加でインストールしましょう。

ホームディレクトリで作業するので移動します。
そのディレクトリでGitHub からLet’s Encryptを取得しましょう。


# cd ~
# git clone https://github.com/letsencrypt/letsencrypt

取得すると、letsencryptディレクトリが出来上がるので
その中に移動しましょう。


# cd letsencrypt

初回起動時にこのような形でヘルプを表示させると、
実行に必要な依存ソフトウェアが自動的に取得されます。


# ./letsencrypt-auto –help –debug

Apacheが起動しているとエラーになるので一旦停止してから、
証明書を作成しましょう。


# systemctl stop httpd
# ./letsencrypt-auto certonly –standalone -d 発行するドメイン

メールアドレスの入力や利用規約の確認が行なわれると
Let’s Encryptとサーバーとの通信などが行われて、つぎのようなメッセージが出力され
証明書の作成が完了します。

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/[your domain]/fullchain.pem. Your
cert will expire on YYYY-MM-DD. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.
To non-interactively renew *all* of your certificates,
run “letsencrypt-auto renew”

作成されたサーバー証明書は /etc/letsencrypt/live/[発行したドメイン]/ 内に作成されます。

これらを
ssl.confやバーチャルホストの設定内に追記します。

SSLCertificateFile /etc/letsencrypt/live/[発行したドメイン]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[発行したドメイン]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[発行したドメイン]/chain.pem

Apache再起動


# systemctl start httpd

もちろん、firewalldで443番ポートの開放は必要です。

それと、証明書の有効期限が3ヶ月で切れてしまいますから、
定期的に更新が必要です。

更新コマンドはApacheを停止した状態で
[インストールしたディレクトリ]/certbot-auto renew」を実行します。


# systemctl stop httpd
# /root/letsencrypt/certbot-auto renew
# systemctl start httpd

crontabで定期的に自動実行させるのも可能です。
crontab -eで下記を記述します。


# 10 01 01 * * systemctl stop httpd && \
> /root/letsencrypt/certbot-auto renew 1> /dev/null 2> /dev/null ; \
> systemctl start httpd

(「/ >」 は、みにくいのでコマンド上で改行してます)

「10 01 01 * *」 これは実行時間
分0-59 時0-23 日1-31 月1-12 曜日0-7
と言う決まりなので
毎月1日1時10分が実行時間です。

次に来るのが実行コマンド
systemctl stop httpd && /root/letsencrypt/certbot-auto renew 1> /dev/null 2> /dev/null ; systemctl start httpd

※解説
・「systemctl stop httpd」 はApache停止。
・「&&」 でコマンドを繋ぐと正常に終了したら次のコマンドを実行するです。
・「/root/letsencrypt/certbot-auto renew」 はLet’s Encryptの更新コマンド
・「1> /dev/null 2> /dev/null」 は「黙々と実行してね」です。
・「;」 でコマンドを繋ぐと正常、異常にかかわらず次のコマンドを実行するです。
・「systemctl start httpd」はApache開始です。

あとは、せっかくのhttpsなので、
httpで来ても、httpsにリダイレクトさせるよう
.htaccessでhttpsリダイレクトの設定もしたいもんですね。