【第5回】SSL通信に対応させる

2022年3月21日月曜日

webサーバー

SSL通信に対応させる





 「RaspberryPiを使ってWebサーバーを立てる」第5回、最後です。全体の目次はこちらです。前回独自ドメインを取得してドメインからアクセスできるようになりましたが、SSL通信に対応していないと様々なところで不都合が生じます。

 〇目次

  1. VirtualHostの設定
  2. mod_sslのインストール
  3. Let's Encryptのインストール
  4. 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サーバーを立てる」すべてが終わりました。お疲れ様でした。



    このブログを検索

    ブログ アーカイブ

    自己紹介

    自分の写真
    大学3年。小学のころから電子工作が好きです。現在はIoTデバイスの制作やドローンの制作などをしています。

    連絡フォーム

    名前

    メール *

    メッセージ *

    QooQ