Let's Encryptを使ってサイトを無料でSSL化する(For Amazon Linux)

Amazon LinuxでMauticをホストしている場合のSSL証明書設定方法を紹介します。

Let’s Encryptを利用しているので、無料かつ更新を自動化できるというところもポイントです。

Let’s Encryptのインストールと証明書発行

*httpdを停止しているのは、インスタンス起動時にPORT443が既に利用されているためです
*example.comには自分のサイトのドメインを入れてください

$ sudo su -
# service httpd stop
# cd /usr/local/
# git clone https://github.com/letsencrypt/letsencrypt /usr/local/letsencrypt
# /usr/local/letsencrypt/letsencrypt-auto --help --debug
# /usr/local/letsencrypt/letsencrypt-auto certonly --standalone -d example.com --agree-tos

ここまで入力すると、Emailアドレスを入力する画面が表示されます。
証明書の期限が近づいた場合などに連絡が届きますので、かならず有効かつ自分がすぐに確認できるアドレスを入力しましょう、
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-18-23-28-32

ここまで実行すると、(エラーが出ていなければ)証明書が発行されます。

Apacheの設定に組み込む

続いてApacheの設定ファイルを編集してSSLでのアクセスを受け付けましょう。

変更前ssl.conf(抜粋)

SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

変更後ssl.conf(抜粋)

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

Apache再起動

作業前にApacheを停止していますので、起動させましょう。

# service httpd start

これでSSLでのアクセスが可能になりました。

SSL証明書の更新を自動化する

最後にcronジョブに証明書更新スクリプトを設定しておきましょう。
Let’s Encryptの有効期限は90日ですので、自動化しておかないと管理に手間がかかってしまいますのでご注意ください。

# crontab -e

crontabに入れる内容

# Autorenew Let's Encrypt
0 1 * * 1 /usr/local/letsencrypt/letsencrypt-auto renew && /usr/sbin/httpd restart > /dev/null 2>&1

Mautic運用Tips