【オンラインRPG】転生したらビヨンドのインターンだった件

【オンラインRPG】転生したらビヨンドのインターンだった件

【導入実績300社以上】AWS 構築・運用保守サービス

【導入実績300社以上】AWS 構築・運用保守サービス

【CMS】WordPress専用 クラウド / サーバー『WebSpeed』

【CMS】WordPress専用 クラウド / サーバー『WebSpeed』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【CPU】AMD EPYC CPU サーバー 技術検証(PoC)サービス

【CPU】AMD EPYC CPU サーバー 技術検証(PoC)サービス

【Webシステム / サービス開発】SEKARAKU Lab(セカラクラボ)

【Webシステム / サービス開発】SEKARAKU Lab(セカラクラボ)

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

Apacheを使ってbasic認証かけてみた

こんにちは、けんです。今回初めてのブログを書いていきますので、とても緊張しています。多分、、、、、。コーヒー大好きで、会社でもコーヒーをほぼ毎日いれてます、そして他のビヨンドメンバーに飲んでね!と毎日押しつけて、勧めています。

 

今回使用したもの

virtualbox バージョン 6.1

vagrant バージョン 2.2.19

vagrant box: centos/7

apache バージョン 2.4.6

 

basic認証とは?

まずは、wikipediaさんの説明を見ていきましょう。

Basic認証(ベーシックにんしょう、Basic Authentication)とは、HTTPで定義される認証方式(HTTP認証)の一つ。基本認証と呼ばれることも。

Basic認証では、ユーザ名とパスワードの組みをコロン ":" でつなぎ、Base64でエンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、広く使われている。

盗聴や改竄を防ぐため、後にDigest認証というユーザ名とパスワードをMD5でハッシュ化して送る方法が考えられた。

引用:https://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC (2022/08/12現在)

へっ???何を言っているの??wikipediaよ!!

一言でいうと、webサイトにアクセス制限をかけること、で、それを簡単に数行だけで行おうということです。サイトにログインする前に、ユーザー名とパスワード打ってね、それじゃないとログインできませんよっていうやつです。

 

ApacheでVirtualhostを立てて、basic認証をかけてみよう!

今回はvagrantにインストールしたVirtualHostで設定した公開画面にbasic認証をかけることをゴールとします。

Vagrantfileの設定を変更して、vagrantにログインしてみよう

local環境内でインターネット接続できるようにするために、vagrantfileを編集をする。

Vagrantfileの一例が以下の設定になっている。

接続するために絶対に必要なのが、


 config.vm.network "private_network", ip: "192.168.43.20"

となっている。


# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://vagrantcloud.com/search.
  config.vm.box = "centos/7"

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
   config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
   config.vm.network "private_network", ip: "192.168.43.20"

end

編集が終了したら、vagrant upをする。


vagrant up

vagrant upが完了したら、vagrant sshで接続して、

 vagrant ssh 

接続は完了となる。

apacheのインストールと表示の確認

まずは、apacheをインストールしていくことから始めます。

sudo yum install httpd

completeと表示されるとインストールが完了となる。

systemctl status httpd

この時点では、まだ起動していないので、inactive(dead)という表示になる。

● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd(8)
man:apachectl(8)

apacheを起動させていく。

sudo systemctl start httpd

起動したことを確認するために、もう一度apacheのステータスを確認する。

systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2022-08-12 05:55:17 UTC; 4s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 2443 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
tq2443 /usr/sbin/httpd -DFOREGROUND
tq2444 /usr/sbin/httpd -DFOREGROUND
tq2445 /usr/sbin/httpd -DFOREGROUND
tq2446 /usr/sbin/httpd -DFOREGROUND
tq2447 /usr/sbin/httpd -DFOREGROUND
mq2448 /usr/sbin/httpd -DFOREGROUND

active(running)という表示になっていることが確認できたら、apacheは動いている。

更に、apacheのtestページが表示されることも併せて確認していく。

ブラウザでhttp://localhost:8080と入力して、apacheのtest画面が表示されればオッケー。

Virtualhostを立てていこう

まず初めに、Virtualhost用にドキュメントルートを作成していく


mkdir -p /var/www/vhosts/example.com/public_html

を作成したら、public_htmlに移動する。


cd /var/www/vhosts/example.com/public_html

public_html以下に表示させるようのファイルを作成する


vi index.html

中身は任意のものを記載していく。今回はVirtualhost用のテストなので、以下のような文言にする。


This is a test for the basic document

書き込むことができたら、:wqで保存してページを閉じる。

次に今回作成するようのVirualhostのconfファイルを作成する。

confファイルを読み込むためには、/etc/httpd/conf.d以下におく必要があるので、conf以下のファイルに移動する。


cd /etc/httpd/conf.d/

confのディレクトリに移動することができたら、Virtualhost用のconfを作成する。


vi vhost.conf

vhost.confの中身にServerNameとDocumentRootを記述していく。


<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/vhosts/example.com/public_html
</VirtualHost>

設定を反映させるために、apacheを再起動する。


systemctl restart httpd

これだけでは反映されないので、windowsのローカルでの設定が必要となる。行っていくことは、hostsファイルを編集すること。hostファイルの位置は以下のディレクトリになっている。


C:\Windows\System32\drivers\etc\hosts

これをexplorerに入力して、hostファイルをメモ帳を管理者権限で開いて、以下の記述を付け加えていく。


192.168.43.20 example.com

これを書き加えて、保存する。

その後にもし設定がうまくできていれば、ブラウザでhttp://example.comと入力したときにindex.htmlで記載したサイトが表示される。

 

このように表示がされたら、VirtualHostの設定に成功したことになる。

次にこの設定したVirtualHostにbasic認証の設定をしていく。

basic認証の設定を行っていこう

今回basic認証をかけていくサイトは、

/var/www/vhosts/example.com/public_html

になっているので、上記のパスにあるサイトのみにbasic認証がかかるように設定していく。

sudo htpasswd -c /var/www/vhosts/example.com/.htpasswd ユーザ名

ユーザー名とパスワードは任意なものを設定する。上記のコマンドを打つとEnter passwordと聞かれるので、パスワードを設定していく。パスワードは確認のために2回聞かれるので、2回自分が設定したいパスワードを打っていく。それが完了したら、ユーザーとパスワードが設定されているかを確認するために、catコマンドを打つ。

cat /var/www/vhosts/example.com/.htpasswd

出力結果で、ユーザー名とハッシュ化されたパスワードが表示されたので、設定はちゃんとされていることを確認できた。

vagrant:$apr1$5XrvFjtv$45oq4gzLiu708WtVYuOtq0

権限周りの設定が変更できたので、basic認証がされるように設定を行っていく。今回は、.htaccessを使って、basic認証を行っていく。

.htaccessのファイルをドキュメントルート配下に作成する。

sudo vi /var/www/vhosts/example.com/public_html/.htaccess 

そして、basic認証がかかる設定を.htaccess内に入れていく。

  AuthType Basic
  AuthName basic auth test
  AuthUserFile /var/www/vhosts/example.com/.htpasswd
  require valid-user

書き込みが終わったら、:wqを押して、保存する。

そして、apacheはデフォルトで.htaccessの設定を許可するようにされていないので、許可するように設定をしていく。

具体的には/var/www/vhosts/example.com/public_html用にbasic認証の設定ができるようにvhost.confの中に設定を追記していく。追記していく内容は、以下の記述になっている。

<VirtualHost *:80>
  ServerName example.com
  DocumentRoot /var/www/vhosts/example.com/public_html
  <Directory /var/www/vhosts/example.com/public_html>
    AllowOverride AuthConfig
  </Directory>
</VirtualHost>

 

まずは、どのDirectoryに設定を反映させるかを決めるために、<Directory /var/www/vhosts/example.com/public_html></Directory>を記述していく。その中に、AllowOverrideの設定をAuthConfigにすることによって、basic認証などの設定を反映させることができる。この変更が記述できたら、今までの設定を反映させるために再起動する。

sudo systemctl restart httpd

これで設定が反映されたはずなので、もう一度http://example.comと検索して、表示を確認する。

basic認証の画像が表示がされた!!!念のために設定したユーザー名とパスワードを入力してみるとindex.htmlの画像がちゃんと表示された!!!

 

まとめ

basic認証の設定をする時に、設定したのに表示されないじゃないかとか焦るかもしれませんが、焦らずにググって調べることの大切さを学びました。これまではapacheさんメインに色々勉強してましたが、次からはnginxさんのbasic認証の仕方をブログに書いていきたいと思います。

次のブログのテーマを予告した所で、読んでくださってありがとうございます。よい夏をお過ごしください。

 

 

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
5
読み込み中...
5 票, 平均: 1.00 / 15
53
facebook twitter はてなブックマーク
【オンラインRPG】転生したらビヨンドのインターンだった件【プレイ無料】

【オンラインRPG】転生したらビヨンドのインターンだった件【プレイ無料】

この記事をかいた人

About the author

Ken

コーヒーが大好きです。にわかです。カナダに住みたいです。