Meaningless Notebook

我輩は雑記帖である。名はまだない。


既存の Web サ-バ- (CentOS 7.3) に Let’s Encrypt を導入して HTTPS 対応にする。

手順は下記の通り。

  1. ネットワ-ク機器の HTTPS インバウンドを許可する
  2. Web サ-バ-の設定を Let’s Encrypt 導入向けに修正
  3. Let’s Encrypt クライアントソフトのインスト-ル 及び 証明書の取得
  4. 取得した証明書を Webサ-バ-に反映
  5. Webアプリケ-ションの URL 修正 (WordPress の場合)

1.ネットワ-ク機器の HTTPS インバウンドを許可する

ネットワ-ク機器によって設定方法が異なる為、省略。

2.Web サ-バ-の設定を Let’s Encrypt 導入向けに修正

1.Firewalld をセットアップ

下記コマンドを実行して Firewalld 設定。

firewall-cmd --add-service=https --permanent
firewall-cmd --reload

3.Let’s Encrypt クライアントソフトのインスト-ル 及び 証明書の取得

1.下記コマンドを実行して、EPEL リポジトリを追加。

yum install epel-release

2.下記コマンドを実行して、Let’s Encrypt クライアント、Apache プラグインをインスト-ル

yum install certbot python-certbot-apache

3.初回登録 及び 証明書取得

certbot certonly --webroot -w 証明書を取得したいドメイン名に対応するドキュメントル-ト -d 証明書を取得したいドメイン名

*

取得したい証明書や環境によってコマンドラインは変化する為、『Let’s Encrypt の使い方』を参照する事。

*

Let’s Encrypt クライアントの初回実行時は、Let’s Encrypt からの通知を受け取るメ-ルアドレスの入力、利用規約の同意、メ-リングリストへの参加有無の入力が発生する。

*

test-cert オプションを指定する事で証明書取得コマンドのテストが出来る模様 (未実施)。

4.証明書取得成否確認

証明書の取得に成功すると、『Congratulations! Your certificate and chain have been saved at:』というメッセ-ジが表示される。

4.取得した証明書を Webサ-バ-に反映

1.SSL の設定

Let’s Encrypt クライアントと一緒にインスト-ルした Apache プラグインが自動生成してくれた…模様。気がついたら、『/etc/httpd/conf.d/ssl.conf』が自動生成されてた。

SSL の設定は、脆弱性の関係で日進月歩となりそうなので本記事では深く扱わないものとする。

2.VirtualHost の設定

『/etc/httpd/conf.d/virtualhost.conf』を作成。

<VirtualHost *:80>
    ServerName ドメイン名:80
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
</VirtualHost>
 
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile 取得したサ-バ証明書 (公開鍵)
    SSLCertificateChainFile 取得した中間証明書
    SSLCertificateKeyFile 取得した秘密鍵
    ServerAdmin サ-バ-管理者の連絡先メ-ルアドレス
    DocumentRoot ドキュメントル-ト
    ServerName ドメイン名:443
</VirtualHost>

*

Apache 2.4.8 以降は、『SSLCertificateChainFile』が不要となり『SSLCertificateFile』に取得したサ-バ証明書と中間証明書が結合されたファイルを指定する事になるので注意 (1敗)

*

HTTP アクセスは、HTTPS へリダイレクトする設定。

3.httpd サ-ビスの再起動

下記コマンドを実行して、各サ-ビスの再起動。

systemctl restart httpd.service

4.証明書更新処理の定期実行設定

crontab に証明書更新処理の定期実行設定を組み込む。

行末に下記行を追加。

00 04 01 * * root /bin/certbot renew --webroot-path 取得した証明書のドメイン名に対応するドキュメントル-ト --post-hook "systemctl reload httpd"

*

月初の AM 4時に証明書更新が実行され、 Apache の設定ファイルリロ-ドが実行される。

5.Webアプリケ-ションの URL 修正 (WordPress の場合)

1.WordPress 設定変更

WordPress の管理画面より、『設定』⇒『一般』の下記二項目を『http://~』から『https://~』へ修正する。

1.WordPress アドレス (URL)
2.サイトアドレス (URL)
3.記事、固定ペ-ジにある『http://~』で始まる画像リンクを、『https://~』へ修正

記事に掲載した画像や、他サイトのバナ-等を修正する。

他サイトのバナ-は、提供元が https に対応してなければ諦めるしかない。

プラグインを使って一括対応してもいいと思うけど、個人的にはインスト-ルプラグインを増やしたくなかったので手で対応した。

Let’s Encrypt が出てから二年も経ってるから先人達が、分かりやすく記事を掲載してくれてて凄いあっさり終わった…。

そういう先人に私はなりたい。

というか、Let’s Encrypt クライアントの完成度も高いな…。

参考元

  1. Let’s Encrypt 総合ポータル
  2. CentOS 7(さくらVPS) + ApacheにLet’s Encryptの無料SSL導入
  3. Let’sEncryptの取得&自動更新設定してみた(CentOS7.1&Apache2.4.6)

Amazon