無料でSSL化(https)対応をする(CentOS7)
Chromeのバージョンアップにより、SSLが設定されていないWebサイトはアドレスバーに【保護されていません】と警告が表示されることになりました。
そのため最近になって対応した方も多いはず。
初心者の方にとっては敷居が高いように思うかもしれませんが、無料証明書の「Let’s Encrypt」を使えばコマンドだけでSSL化対応を行うことができます。
この記事の目次
CentOS8でのSSL対応手順
当記事はCentOS7でのSSL対応手順なので、CentOS8での手順は↑記事になります。
参考サイト
導入にはいくつかの前提があります
前提に問題がなければサーバーにログインし、いくつかのコマンドを実行します。
ちなみにOSはCentOS7を使用しています。
ドメイン認証( DV )SSL / TLS証明書に限られる
ドメインの所有者であることは証明できるが、企業の実在証明などには使えない。
有効期限が90日間である
通常の証明書は1年が基本ですが、Let’s Encryptはだいぶ短いです。
しかしcronを活用すれば解決。
rootユーザーでコマンド入力できる
使用するコマンドはroot権限が必要です。
独自ドメインを持っている
IPアドレスでは設定できません。
コマンドを入力する
# ApacheのSSLモジュールであるmod_sslがインストールされているか確認
$ httpd -M | grep ssl_module
# 下記が表示されればOK
...
ssl_module (shared)
...
# ない場合はインストール
$ yum install -y mod_ssl
# httpsポートの開放がまだなら実行
$ firewall-cmd --permanent --zone=public --add-service=https
$ firewall-cmd --reload
# Let’s Encryptのインストール
$ yum install certbot python2-certbot-apache
# hoge.comの箇所に設定したいドメインをwwwなしで入力
$ certbot --apache -d hoge.com
# certbotコマンドの実行中にもし下記のエラーが表示されたら設定が必要
パッケージ certbot は利用できません。
パッケージ python-certbot-apache は利用できません。
# [epel]のenabled=0を1に修正
$ vi /etc/yum.repos.d/epel.repo
# エラーがない場合は入力を求められるので任意の問いを入力
# 自分のメールアドレスを入力
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):
# 規約の同意を選択
(A)gree/(C)ancel:
# Let's EncryptパートナーにEmailを公開するか否か。私はNoにしました
(Y)es/(N)o:
# どのvirtual hostを選択するか。1のssl.confを選択
Press 1 [enter] to confirm the selection (press 'c' to cancel):
# HTTPSアクセスが必須か選択。2のリダイレクトを選択
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
# 設定が完了したらapacheの再起動を実行
$ systemctl restart httpd
# Let’s Encryptの有効期限が90日なので、自動で更新コマンドを実行するようにcronの設定を行う
$ vi /etc/crontab
# 毎日午前三時に更新コマンドを実行する
0 3 * * * root /usr/bin/certbot renew
設定したドメインをブラウザで表示し、URL欄に「保護された通信」と表示されていれば成功です。