自宅サーバ構築MY HOME SERVER
ウエブサーバ(Apache) 外部からアクセステスト アクセス制限 ウエブページ暗号化(SSL) SSL証明書の作成 IEで動作確認 |
- ウエブサーバ(Apache) -
ウエブページを外部に公開するためにApacheをインストールして、設定していきます。iptablesが有効の場合、ポート80番を開放します。外部公開する場合、ルータも同じポートを
開放する必要があります。ポート開放の詳細はルータポート開放についてをご覧ください。
ローカルのクライアントPCから、サーバのIPアドレスでウエブページにアクセスできるように設定します。
bindをインストール・設定済みであれば、ドメイン名でウエブページにアクセスできます。
root@hoge123:~# aptitude -y install apache2 root@hoge123:~# aptitude -y install php5 php5-cgi libapache2-mod-php5 php5-common php-pear |
Apacheの編集・保存します。
root@hoge123:~# vi /etc/apache2/conf.d/security # 27行目付近、変更します。 ServerTokens Prod # 39行目付近、変更します。 ServerSignature Off root@hoge123:~# vi /etc/apache2/mods-enabled/mime.conf # 218行目付近、コメント解除します。 AddHandler cgi-script .cgi .pl # 219行目付近、追記します。 AddHandler php5-script .php root@hoge123:~# vi /etc/apache2/sites-available/default # 2行目付近、管理者アドレスを変更します。 ServerAdmin hogehoge@hoge123.dip.jp # 10行目付近、変更します。( Indexes は削除、他の赤文字の部分は変更・追記 ) <Directory /var/www/> Options FollowSymLinks MultiViews ExecCGI +Includes AllowOverride All Order allow,deny allow from all AddType text/html .shtml AddOutputFilter INCLUDES .shtml </Directory> root@hoge123:~# vi /etc/apache2/apache2.conf # 最終行に下記内容を追記します。 ServerName hoge123.dip.jp:80 root@hoge123:~# ln -s /usr/bin/perl /usr/local/bin/perl root@hoge123:~# ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled root@hoge123:~# service apache2 restart |
Apacheのページが表示されるか確認します。IEを開き、サーバのIPアドレスか、hoge123.ddo.jp と入力します。 下のように表示が出れば成功です。
SHTML(SSI)の動作確認を行ないます。test.shtmlを作成してIEで表示されるか確認します。
root@hoge123:~# vi /var/www/test.shtml 以下の内容を貼り付け・保存します <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> SHTML(SSI)表示テスト<BR> <!--#echo var="DATE_LOCAL" --> </body> </html> |
下図のように表示されます。
cgiが正常動作するか、test.cgiを作成してIEで表示されるか確認します。
root@hoge123:~# vi /var/www/test.cgi 以下の内容を貼り付け・保存します #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"; print "<title>テストページ</title>\n"; print "</head>\n"; print "<body>\n"; print "CGI表示テスト\n"; print "</body>\n"; print "</html>\n"; - 貼り付け範囲は、この上までです。 - root@hoge123:~# chmod 755 /var/www/test.cgi ← ファイルのパミッションを変更します。 |
下図のように表示されます。
PHPが動作するか、test.phpを作成してIEで表示されるか確認します。
root@hoge123:~# vi /var/www/test.php 以下の内容を貼り付け・保存します <?php phpinfo(); ?> |
下図のように表示されます。
これでCGIやPHPプログラムをウエブ上で動作させることが出来る様になりました。PHPベースの掲示板やブログなど 、簡単にカスタマイズするだけで使用できるフリー素材がウエブ上にはたくさんあります。是非、試してみてください。
- 外部からアクセステスト -
ローカルドメインからウエブページにアクセスが出来ても、外部公開している場合、外部からアクセスできるか確認する必要があります。近くにインターネット カフェでもあれば確認できるかもしれませんが、わざわざ行くのも大変です。そこで、 Free Web Surfingを使い、外部プロクシサーバからアクセスしてみます。 こちらをクリックしてください。
Anonymouse をクリックします。English を選択します。
ドメイン名を入力して、Surf Anonymousely をクリックします。
ウエブページが表示されれば、外部に一般公開されている状態です。尚、このサイトはhttpsから始まるアドレスには対応してません。
- アクセス制限 -
ウエブページにアクセス制限をかけて、特定のユーザだけが閲覧できる設定をします。制限をかけるフォルダを作成します。 そのフォルダ内に、認証が成功すれば表示されるウエブページを作成します。
root@hoge123:~# mkdir /var/www/testfolder root@hoge123:~# vi /var/www/testfolder/test.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> 認証テスト </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 /etc/apache2/sites-available/default 一番下に下記内容を追記・保存します |
設定内容の変更を反映させるため、Apacheを再起動します。
root@hoge123:~# service apache2 restart * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName [ OK ] |
ウエブページにhttp://hoge123.dip.jp/testfolder/test.htmlと入力します。「ユーザ名」にhogehoge、 「パスワード」に先ほど作成したパスワードを入力します。
認証に成功すると、ページが表示されます。
- ウエブページ暗号化(SSL) -
ウエブページを単純に閲覧目的で使用する分には、あまり必要ありませんが、パスワードやクレジットカード情報等を入力してウエブ上で送信する場合
、暗号化が必須です。暗号化されてない情報は平文で流れるため、第3者に読み取られる可能性があります。
そこで暗号化通信を可能にするため、mod SSLをApacheに組み込みます。暗号化通信が可能になると、URLを https//hoge123.dip.jp にして使用することが
出来ます。暗号化通信に使用するポート番号443 はiptables及びルータともに開放ずみであることが前提条件です。既に
ルータポート開放についての
設定をしていれば、443番は開放されています。
- SSL証明書の作成 -
ここでは独自の証明書を作成します。
root@hoge123:~# cd /etc/ssl/private root@hoge123:/etc/ssl/private# 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@PCDEMAGIC:/etc/ssl/private# openssl rsa -in server.key -out server.key Enter pass phrase for server.key: ← 先ほど設定したパスフレーズを入力します。 writing RSA key root@PCDEMAGIC:/etc/ssl/private# 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:/etc/ssl/private# 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:/etc/ssl/private# chmod 400 server.* |
SSLの設定をします。
root@hoge123:~# vi /etc/apache2/sites-available/default-ssl # 3行目付近で、管理者アドレスを変更します。 ServerAdmin hoge123@dip.jp # 11,12行目付近、変更します。 Options FollowSymLinks ExecCGI AllowOverride All # 51,52行目付近、作成したものに変更します。 SSLCertificateFile /etc/ssl/private/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key root@hoge123:~# a2ensite default-ssl Enabling site default-ssl. Run '/etc/init.d/apache2 reload' to activate new configuration! root@hoge123:~# a2enmod ssl See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.Run '/etc/init.d/apache2 restart' to activate new configuration! root@hoge123:~# service apache2 restart |
- IEで動作確認 -
IEを開いたら、URL に https://hoge123.dip.jp と入力します。自己証明書のため、どうしても証明書エラー 表示が出ます。認証機関から発行された証明書を使用していれば このようなエラー表示は出ません。
「このサイトの閲覧を続行する」を選択します。セキュリティ警告は「はい」をクリックします。
hogehogeのトップページが表示されました。毎回、証明書エラー表示が出るのを解消するには、証明書を インストールします。証明書をインストールしたパソコンだけ、エラー表示が出ません。ただし、上記の セキュリティー警告は出ます。
「証明書のエラー」をクリックします。
「証明書の表示」をクリックします。
「証明書のインストール」をクリックします。
「次へ」をクリックします。
「証明書をすべて次のストアに配置する」を選択して、「参照」ボタンをクリックします。
「信頼されたルート証明機関」を選択して、「OK」ボタンをクリックします。
「次へ」をクリックします。
「完了」をクリックします。
セキュリティ警告は「はい」を選択します。
「OK」ボタンをクリックします。