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化する(後編)」に続く。