トップページ > インフォメーション

自宅サーバ構築MY HOME SERVER

ウエブサーバ(Apache) 外部からアクセステスト アクセス制限 ウエブページ暗号化(SSL) SSL証明書の作成 IEで動作確認

- ウエブサーバ(Apache) -

ウエブページを外部に公開するためにApacheをインストールして、設定していきます。iptablesが有効の場合、ポート80番を開放します。外部公開する場合、ルータも同じポートを 開放する必要があります。ポート開放の詳細はルータポート開放についてをご覧ください。 ローカルのクライアントPCから、サーバのIPアドレスでウエブページにアクセスできるように設定します。 bindをインストール・設定済みであれば、ドメイン名でウエブページにアクセスできます。

Apacheのインストールをします。
         
[root@hoge123 ~]# vi /usr/local/etc/pkgtools.conf

赤文字の部分を追記します。 

MAKE_ARGS = {
	'www/apache22' => 'WITH_SUEXEC=yes SUEXEC_DOCROOT=/home', 
  }
[root@hoge123 ~]# cd /usr/ports/www/apache22
[root@hoge123 /apache22]# make BATCH=yes WITH_SUEXEC=yes SUEXEC_DOCROOT=/home WITHOUT_IPV6=yes install clean ← 1行で記入します。

[root@hoge123 /apache22]# cd


httpd.confの編集・保存します。
         
[root@hoge123 ~]# vi /usr/local/etc/apache22/httpd.conf

ServerAdmin you@example.com
↓ 変更します。
ServerAdmin hogehoge@hoge123.dip.jp

#ServerName www.example.com:80
↓ 先頭の#を削除して、変更します。
ServerName hoge123.dip.jp:80 

<Directory "/usr/local/www/apache22/data">

#Options Indexes FollowSymLinks
↓ 先頭の#を削除して、変更します。
Options Includes ExecCGI FollowSymLinks 

#AllowOverride None
↓ 先頭の#を削除して、変更します。
AllowOverride All 

</Directory>

<IfModule dir_module>

DirectoryIndex index.html
↓ 追記します。
DirectoryIndex index.html index.htm index.cgi index.php

</IfModule>

<IfModule log_config_module>

CustomLog "/var/log/httpd-access.log" combined
↓ 変更します。
CustomLog "/var/log/httpd/access.log" combined env=!nolog 

↓ CustomLogの下に追記します。
    
SetEnvIf Request_URI "default\.ida" nolog
SetEnvIf Request_URI "cmd\.exe" nolog
SetEnvIf Request_URI "root\.exe" nolog
SetEnvIf Request_URI "Admin\.dll" nolog
SetEnvIf Request_URI "NULL\.IDA" nolog
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(ico)|(css)$" nolog

</IfModule>

<IfModule mime_module>

#AddHandler cgi-script .cgi
↓ 先頭の#を削除して、.plを追記します。
AddHandler cgi-script .cgi .pl 
    
</IfModule>

<IfModule mime_module>

AddType application/x-httpd-php .php ← 追記します。

</IfModule>

#Include etc/apache22/extra/httpd-languages.conf
↓ 先頭の#を削除します。
Include etc/apache22/extra/httpd-languages.conf 

#Include etc/apache22/extra/httpd-userdir.conf
↓ 先頭の#を削除します。
Include etc/apache22/extra/httpd-userdir.conf

#Include etc/apache22/extra/httpd-default.conf
↓ 先頭の#を削除します。
Include etc/apache22/extra/httpd-default.conf 


httpd-languages.conf、httpd-userdir.conf、httpd-default.conf、mod_deflateの編集をします。
 
[root@hoge123~]# vi /usr/local/etc/apache22/extra/httpd-languages.conf
AddLanguage ja .ja ←この行を最上位に移動します。

LanguagePriority ja ← jaを先頭に移動します。

[root@hoge123~]# vi /usr/local/etc/apache22/extra/httpd-userdir.conf

<Directory "/home/*/public_html">

AllowOverride FileInfo AuthConfig Limit Indexes
↓ 変更します。
AllowOverride All FileInfo AuthConfig Limit Indexes

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
↓ 変更します。
Options Includes ExecCGI FollowSymLinks 

</Directory>

[root@hoge123~]# vi /usr/local/etc/apache22/extra/httpd-default.conf

ServerTokens Full
↓ 変更します。
ServerTokens Prod 

ServerSignature On
↓ 変更します。
ServerSignature Off 

[root@hoge123~]# vi /usr/local/etc/apache22/Includes/deflate.conf

↓ 新規作成します。以下内容を貼り付け・保存します。


  # Insert filter
  SetOutputFilter DEFLATE

  # Netscape 4.x has some problems...
  BrowserMatch ^Mozilla/4 gzip-only-text/html

  # Netscape 4.06-4.08 have some more problems
  BrowserMatch ^Mozilla/4\.0[678] no-gzip

  # MSIE masquerades as Netscape, but it is fine
  # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

  # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
  # the above regex won't work. You can use the following
  # workaround to get the desired effect:
  BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

  # Don't compress images
  SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png|ico|z|taz|t?gz|t?bz2?|zip|lzh|sit|rar|pdf|mp3|ogg|wma|rm|wmv|mov|mpe?g)$ \
    no-gzip dont-vary

  # Make sure proxies don't deliver the wrong content
  Header append Vary User-Agent env=!dont-vary



ウエブ公開ディレクトリの所有権変更、logディレクトリ作成、Apache2の起動をします。
[root@hoge123~]# chown -R hogehoge /usr/local/www/apache22/data
[root@hoge123~]# mkdir /var/log/httpd
[root@hoge123~]# chown www: /var/log/httpd
[root@hoge123~]# vi /etc/rc.conf

apache22_enable="YES" ← 最終行に追記します。

[root@hoge123~]# /usr/local/etc/rc.d/apache22 start

[root@hoge123~]# vi /usr/local/etc/logrotate.d/apache22

新規作成です。下記内容を貼り付けます。

/var/log/httpd/*log {
	daily
	rotate 4
	create
	nocompress
	missingok
	sharedscripts
	postrotate
		/usr/local/sbin/apachectl -k graceful
	endscript
}



IEで表示されるか確認します。 IEを開き、アドレスバーに192.168.0.10か、hoge123.dip.jp と入力します。 下図のように表示されます。


cgiが正常動作するか、test.cgiを作成してIEで表示されるか確認します。
         
[root@hoge123 ~]# vi /usr/local/www/apache22/data/test.cgi
以下の内容を貼り付け・保存します

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "<html>\n<body>\n";
print "<div style=\"width: 100%; font-size: 50px; font-weight: bold; text-align: center;\">\n";
print "<p><font color=\"#FF0000\">Hogehoge CGI Test </p>";
print "\n</div>\n";
print "</body>\n</html>\n";

- 貼り付け範囲は、この上までです。 -

[root@hoge123 ~]# chmod 755 /usr/local/www/apache22/data/test.cgi 


192.168.0.10/test.cgiまたは、hoge123.dip.jp/test.cgi と入力します。下図のように表示されます。

PHP5をインストールします。
[root@hoge123 ~]# vi /usr/local/etc/pkgtools.conf

MAKE_ARGS = {
	'lang/php5' => 'WITH_APACHE=yes', ← 追記します。
	'lang/php5-extensions' => 'WITH_GD=yes WITH_MBSTRING=yes', ← 追記します。
  }
  
[root@hoge123 ~]# cd /usr/ports/lang/php5
[root@hoge123 /php5]# make BATCH=yes WITH_APACHE=yes WITHOUT_IPV6=yes install clean
[root@hoge123 /php5]# cd /usr/ports/lang/php5-extensions 
[root@hoge123 /php5-extensions]# make BATCH=yes WITH_GD=yes WITH_MBSTRING=yes install clean

[root@hoge123 /php5-extensions]# cd
[root@hoge123 ~]# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
[root@hoge123 ~]# chmod 640 /usr/local/etc/php.ini
[root@hoge123 ~]# vi /usr/local/etc/php.ini

short_open_tag = Off
↓ 変更します。
short_open_tag = On 

expose_php = On
↓ 変更します。
expose_php = Off 

max_execution_time = 30
↓ 変更します。
max_execution_time = 300 

;default_charset = "iso-8859-1"
↓ 変更します。
default_charset = "UTF-8"

upload_max_filesize = 2M
↓ 変更します。
upload_max_filesize = 20M 

;date.timezone =
↓ 先頭の;を削除して、変更します。
date.timezone = Asia/Tokyo 

;mbstring.language = Japanese
↓ 先頭の;を削除して、変更します。
mbstring.language = Japanese

;mbstring.internal_encoding = EUC-JP
↓ 先頭の;を削除して、変更します。
mbstring.internal_encoding = UTF-8 

;mbstring.http_input = auto
↓ 先頭の;を削除します。
mbstring.http_input = auto

;mbstring.http_output = SJIS
↓ 先頭の;を削除して、変更します。
mbstring.http_output = pass 

;mbstring.encoding_translation = Off
↓ 先頭の;を削除して、変更します。
mbstring.encoding_translation = On 

;mbstring.detect_order = auto
↓ 先頭の;を削除します。
mbstring.detect_order = auto 

;mbstring.substitute_character = none;
↓ 先頭の;を削除します。
mbstring.substitute_character = none;

[root@hoge123 ~]# /usr/local/etc/rc.d/apache22 restart


PHPが動作するか、test.phpを作成してIEで表示されるか確認します。

[root@hoge123 ~]# echo "<?php phpinfo(); ?>" > /usr/local/www/apache22/data/test.php


192.168.0.10/test.phpまたは、hoge123.dip.jp/test.php と入力します。下図のように表示されます。

これでCGIやPHPプログラムをウエブ上で動作させることが出来る様になりました。PHPベースの掲示板やブログなど 、簡単にカスタマイズするだけで使用できるフリー素材がウエブ上にはたくさんあります。是非、試してみてください。



- 外部からアクセステスト -

ローカルドメインからウエブページにアクセスが出来ても、外部公開している場合、外部からアクセスできるか確認する必要があります。近くにインターネット カフェでもあれば確認できるかもしれませんが、わざわざ行くのも大変です。そこで、 Free Web Surfingを使い、外部プロクシサーバからアクセスしてみます。 こちらをクリックしてください。

Anonymouse をクリックします。 10.jpg(69129 byte)

English を選択します。 11.jpg(55946 byte)

ドメイン名を入力して、Surf Anonymousely をクリックします。

ウエブページが表示されれば、外部に一般公開されている状態です。尚、このサイトはhttpsから始まるアドレスには対応してません。



- アクセス制限 -

ウエブページにアクセス制限をかけて、特定のユーザだけが閲覧できる設定をします。制限をかけるフォルダを作成します。 そのフォルダ内に、認証が成功すれば表示されるウエブページを作成します。
[root@hoge123 ~]# mkdir /usr/local/www/apache22/data/testfolder
[root@hoge123 ~]# vi /usr/local/www/apache22/data/testfolder/test.html

下記内容を貼り付けます。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
ACCESS TEST
</body>
</html> 

アクセス制限を許可するユーザ、パスワードを作成します。任意のユーザ名hogehogeを作成し、 任意のパスワードを設定します。パスワードは一度、入力後、確認入力が必要です。
[root@hoge123 ~]# mkdir /usr/password
[root@hoge123 ~]# htpasswd -c /usr/password/.htpasswd hogehoge
New password:
Re-type new password:
Adding password for user hogehoge

[root@hoge123 ~]#


Apacheの設定をします。
[root@hoge123 ~]# vi /usr/local/etc/apache22/httpd.conf

一番下に下記内容を追記・保存します

<Directory "/usr/local/www/apache22/data/testfolder">

    AuthType Basic
    AuthName       "My Test Page"
    AuthUserFile    /usr/password/.htpasswd
    Require valid-user

</Directory>


設定内容の変更を反映させるため、Apacheを再起動します。

[root@hoge123 ~]# /usr/local/etc/rc.d/apache22 start


ウエブページにhttp://hoge123.dip.jp/testfolder/test.htmlと入力します。「ユーザ名」にhogehoge、 「パスワード」に先ほど作成したパスワードを入力します。
26.jpg(24670 byte)

認証に成功すると、ページが表示されます。



- ウエブページ暗号化(SSL) -

ウエブページを単純に閲覧目的で使用する分には、あまり必要ありませんが、パスワードやクレジットカード情報等を入力してウエブ上で送信する場合 、暗号化が必須です。暗号化されてない情報は平文で流れるため、第3者に読み取られる可能性があります。

そこで暗号化通信を可能にするため、mod SSLをApacheに組み込みます。暗号化通信が可能になると、URLを https//hoge123.dip.jp にして使用することが 出来ます。暗号化通信に使用するポート番号443 はiptables及びルータともに開放ずみであることが前提条件です。既に ルータポート開放についての 設定をしていれば、443番は開放されています。



- SSL証明書の作成 -

ここでは独自の証明書を作成します。
         
[root@hoge123 ~]# cd /etc/ssl 
[root@hoge123 /ssl]# openssl genrsa -des3 -out server.key 1024

Generating RSA private key, 1024 bit long modulus
..........................++++++
.......................................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key: ← 任意のパスフレーズを入力します。
Verifying - Enter pass phrase for server.key: ← 再入力します。

[root@hoge123 ssl]# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: ← 先ほど設定したパスフレーズを入力します。
writing RSA key

[root@hoge123 ssl]# openssl req -new -days 3650 -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:TOKYO
Locality Name (eg, city) []:SHIBUYAKU
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HOGEHOGE
Organizational Unit Name (eg, section) []:HOGE
Common Name (e.g. server FQDN or YOUR name) []:hoge123.dip.jp
Email Address []:hogehoge@hoge123.dip.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ← 何も入力せず、Enterキーを押します。
An optional company name []: ← 何も入力せず、Enterキーを押します。
[root@hoge123 ssl]# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650 ← 実際には1行で入力します。
 
Signature ok
subject=/C=JP/ST=TOKYO/L=SHIBUYAKU/O=HOGEHOGE/OU=HOGE/CN=hoge123.dip.jp
/emailAddress=hogehoge@hoge123.dip.jp
Getting Private key

[root@hoge123 /ssl]# chmod 400 server.* 
[root@hoge123 /ssl]# openssl x509 -in server.crt -out /usr/local/www/apache22/data/server.der -outform DER ← 実際には1行で入力します。

[root@hoge123 /ssl]# cd
[root@hoge123 ~]# vi /usr/local/etc/apache22/httpd.conf

#Include etc/apache22/extra/httpd-ssl.conf
↓ 先頭の#を削除します。
Include etc/apache22/extra/httpd-ssl.conf 


httpd-sslの設定をします。
         
[root@hoge123 ~]# vi vi /usr/local/etc/apache22/extra/httpd-ssl.conf

ServerName www.example.com:443
↓ 変更します。

ServerName hoge123.dip.jp:443 

ServerAdmin you@example.com
↓ 変更します。
ServerAdmin hogehoge@hoge123.dip.jp 

ErrorLog "/var/log/httpd-error.log"
↓ 変更します。
ErrorLog "/var/log/httpd/ssl_error.log" 

TransferLog "/var/log/httpd-access.log"
↓ 変更します。
TransferLog "/var/log/httpd/ssl_access.log" 

SSLCertificateFile "/usr/local/etc/apache22/server.crt"
↓ 変更します。
SSLCertificateFile "/etc/ssl/server.crt" 

SSLCertificateKeyFile "/usr/local/etc/apache22/server.key"
↓ 変更します。
SSLCertificateKeyFile "/etc/ssl/server.key"

CustomLog "/var/log/httpd-ssl_request.log"
↓ 変更します。
CustomLog "/var/log/httpd/ssl_request.log" 
 
[root@hoge123 ~]# /usr/local/etc/rc.d/apache22 restart




- IEで動作確認 -

IEを開いたら、URL に https://hoge123.dip.jp と入力します。自己証明書のため、どうしても証明書エラー 表示が出ます。認証機関から発行された証明書を使用していれば このようなエラー表示は出ません。

「このサイトの閲覧を続行する」を選択します。

セキュリティ警告は「はい」をクリックします。 2.jpg(21601 byte)

hogehogeのトップページが表示されました。毎回、証明書エラー表示が出るのを解消するには、証明書を インストールします。証明書をインストールしたパソコンだけ、エラー表示が出ません。ただし、上記の セキュリティー警告は出ます。
「証明書のエラー」をクリックします。

「証明書の表示」をクリックします。 4.jpg(37434 byte)

「証明書のインストール」をクリックします。 5.jpg(34774 byte)

「次へ」をクリックします。 6.jpg(40259 byte)

「証明書をすべて次のストアに配置する」を選択して、「参照」ボタンをクリックします。 7.jpg(33955 byte)

「信頼されたルート証明機関」を選択して、「OK」ボタンをクリックします。 8.jpg(22168 byte)

「次へ」をクリックします。 9.jpg(35305 byte)

「完了」をクリックします。 10.jpg(33309 byte)

セキュリティ警告は「はい」を選択します。 11.jpg(15289 byte)

「OK」ボタンをクリックします。
12.jpg(8342 byte)

自宅サーバ構築(FreeBSD9)に戻る


Copyright(C) PCDEMAGIC All Rights Reserved.