へっぽこヘタレシステム管理者の管理人です。
CentOSにWordPressを立てるに引き続き・・・
サーバを無料で常時SSL化する方法を試してみたので、忘備録として掲載しておきます。
ちなみに、この記事の【ホスト名】と【ドメイン】は投稿のために仮に記載しております。
実際に実行するときは、インターネットから接続できる【ホスト名】・【ドメイン名】でお願いします。
【host】コマンドで名前引きができるか確認する
まずは、【host】又は【nslookup】コマンドでIPアドレスが返るか確認します。
管理人のテスト環境では・・・
ホスト名:server5
ドメイン:hogehoge.home.com
です。
host server5.hogehoge.home.com
nslookup server5.hogehoge.home.com
IPアドレスが取れない場合は、DNSの設定を見直してください。
ファイアウオールのポートを空ける
次に、ファイアウオールのポートを空けます。
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
【mod_ssl】をインストール
次に【mod_ssl】をインストールします。
yum -y install mod_ssl
【apache】を再起動
【apache】を再起動します。
systemctl restart httpd
【certbot】をインストール
まずは【certbot】をインストールする為のリポジトリをインストールします。
yum -y install epel-release
次に【certbot】をインストールします。
yum -y install certbot
次に【python2-certbot-apache】をインストールします。
yum -y install python2-certbot-apache
サーバー証明書を作成
次にサーバー証明書を作成します。
ホスト名・ドメイン名・・・
エイリアスは適宜変更してください。
certbot certonly --webroot -w /var/www/html/reservesys -d server5.hogehoge.home.com
対話型で処理が進みますので・・・
適宜メールアドレスを入力してください。
選択は【Y】でOKです。
サーバー証明書ファイルの確認
次のフォルダにサーバー証明書ファイルができますので確認します。
/etc/letsencrypt/live/server5.hogehoge.home.com
次のファイルができているはずです。
- cert.pem :サーバー証明書本体
- chain.pem :中間証明書
- privkey.pem :秘密鍵ファイル
- fullchain.pem :サーバー証明書と中間証明書のセット
Apache httpdへSSL通信用の設定を行う
次にSSL通信用の設定を行います。
設定するファイルは
【/etc/httpd/conf.d/ssl.conf】
です。
変更する内容は次のとおりです。
SSLCertificateFile /etc/letsencrypt/live/server5.hogehoge.home.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/server5.hogehoge.home.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/server5.hogehoge.home.com/chain.pem
次のコマンドでファイルの設定が正しいか確認します。
httpd -t
Syntax OK と出ればOKです。
httpdを再起動します。
systemctl restart httpd
SSL通信の確認
ブラウザでSSL通信が出来ているか確認します。
証明書の自動更新
証明書の自動更新を設定します。
手動更新の場合は次のコマンドです。
certbot renew --dry-run
しかし面倒なので自動更新を設定します。
次のコマンドを入力します。
crontab -e
エディタが開きますので例えば次のとおりに入力します。
00 5 * * * certbot renew -q --deploy-hook "systemctl restart httpd"
上の例では、毎日5時に更新となります。
00 04 01 * * certbot renew -q --deploy-hook "systemctl restart httpd"
上の例では、毎月1日の4時に自動更新となります。
【*】の設定で更新間隔を設定できます。
次のコマンドで自動更新が設定されているか確認します。
crontab -l
設定した内容が表示されればOKです。
コメント