SSL通信に対応させる
「RaspberryPiを使ってWebサーバーを立てる」第5回、最後です。全体の目次はこちらです。前回独自ドメインを取得してドメインからアクセスできるようになりましたが、SSL通信に対応していないと様々なところで不都合が生じます。
〇目次
- VirtualHostの設定
- mod_sslのインストール
- Let's Encryptのインストール
- Let's Encryptの自動更新
〇今回使うコマンド
- yumコマンド
- viコマンド
- systemctlコマンド
- crontabコマンド
1.VirtualHostの設定
VirtualHostとは一つのサーバーで複数のドメインを管理する方法です。今回の場合はhttp(SSL非対応)のドメイン、https(SSL対応)のドメインを使いたいのでVirtualHostを使用します。
まず前提として、ファイアーウォールの設定でhttpsを許可していること、ルーターでポート番号443を開放していることを確認しましょう。このブログの第2回をやった人は大丈夫です。
ではVirtualHostの設定を行います。以下のコマンドを実行してvirtualhostの設定ファイルを作成しましょう。
# vi /etc/httpd/conf.d/vhost.conf
作成した設定ファイルに以下を書き込みます。
<virtualhost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html </virtualhost>
examleには自分で設定したドメインに書き換えてください。DocumentRootは基本的にそのままで大丈夫です。
2.Mod_sslのインストール
まずMod_sslとは、100以上あるApacheのモジュールの一つです。その中でこのMod_sslは、名前からもわかるようにssl通信に対応させるモジュールです。まずはこのモジュールをインストールしましょう。
# yum install -y mod_ssl
3.Let's Encryptのインストール
今度はLet's Encrypt(レッツ
エンクリプト)という無料のSSLサーバー証明書をインストールします。SSL証明書は有料のものが多いですが、こちらの証明書は親切にも無料で何度でも証明書を発行してくれます。
Ⓐ下のコマンドを実行してインストールしましょう。
# yum install certbot python2-certbot-apache # certbot --apache
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
エラーがでなかった人はとばしてください。
EPELリポジトリ
まず初めにEPELリポジトリが有効になっているか確認します。
# sudo yum repolist all | grep -i epel
もし何も表示されない場合はEPELリポジトリが有効になっていません。EPELリポジトリを有効にしましょう。
# sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y
ここで一度先ほどのコマンドⒶを実行しましょう。再びエラーが起きる場合はEPELファイルを編集します。以下のように書き換えましょう。念のため元のファイル内容はコピーしてメモ帳などに保存しておきましょう。
# vi /etc/yum.repos.d/epel.repo [epel] name=Epel rebuild for armhfp baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/ enabled=1 gpgcheck=0
再び先ほどのコマンドⒶを実行しましょう。それでも治らない場合はSELINUX、suEXECを無効化します。
SELINUXの無効化
etc/selinux/config を開き、SELINUXの項目をdisabledに変更します。
# vi /etc/selinux/config SELINUX=disabled
suEXECの無効化
suEXECはhttpdの設定ファイルで無効化できます。デフォルトの設定ファイルの場所は/etc/httpd/conf/httpd.conf です。上の方に追加しておきましょう。
# vi /etc/httpd/conf/httpd.conf Suexec off
再起動しましょう。
# reboot
再起動したら先ほどのコマンドⒶを実行しましょう。これでもエラーが起きる場合は下のコメントにエラー内容を書いて送ってください。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
エラーがでなかった、治ったら入力が求められます。
Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: daishilog.net 2: www.daishilog.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1
httpsを適用するのはどっちかと聞かれます。短い方がいいので1を選びました。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://daishilog.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/daishilog.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/daishilog.net/privkey.pem Your certificate will expire on 2022-05-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
「Congratulations」と表示されればOKです。最後にhttpdを再起動します。
# systemctl restart httpd
4.Let's Encryptの自動更新
更新には前回MyDNSのIPアドレス通知でも使ったcrontabコマンドを使います。crontabは定期的にコマンドを実行させるコマンドです。
以下のコマンドを実行してファイルを開きましょう。
# crontab -e
ファイルが開いたら以下を追加します。
0 1 * * * root /usr/bin/certbot renew
上のコマンドで毎日1時に証明書を更新します。ただし実際に更新するのは更新期限が近づいてからなのでまだ更新されません。ちなみに今回使った証明書「Let's
Encrypt」は期限が3か月です。
以上で「RaspberryPiを使ってWebサーバーを立てる」すべてが終わりました。お疲れ様でした。
0 件のコメント:
コメントを投稿