ウェブサイト検索

Gentoo Linuxで仮想ホストを作成し、SSL証明書とキーを生成し、CGIゲートウェイを有効にする


Gentoo Linux への LAMP のインストールに関する最後のチュートリアルでは、ドメインをより適切に制御するために Apache で使用できる追加設定を含まない、基本的なインストール プロセスについて説明しました。

このチュートリアルは、Gentoo LAMP に関する以前のチュートリアルと厳密に関連しており、Apache での仮想ホスト の作成、 の生成など、LAMP 環境の追加設定について説明します。 >SSL 証明書ファイルとキー。HTTP トランザクションで安全な SSL プロトコルを有効にし、Apache CGI ゲートウェイ を使用して、Perl またはウェブサイト上でスクリプトをBash します。

要件

  1. Gentoo LinuxにLAMPをインストールする

ステップ 1: Apache 仮想ホストを作成する

このトピックでは、偽のドメイン名 - gentoo.lan を使用します。これは、ローカル ホスト ファイルを通じて有効になり、Web サイト ファイルは /var/www/gentoo.lan - DocumentRoot から提供されます。 ディレクティブを有効な DNS レコードなしで使用して、Apache Web サーバーを使用して Gentoo 上で複数の仮想ホストを有効にする方法を示します。

1. まず、Gentoo ホスト ファイルを編集用に開き、ドメイン名を含む新しい行を追加します。

sudo nano /etc/hosts

ファイルの最後では、次のようになります。

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. ping コマンドを使用して偽のドメインをテストすると、ドメインは IP アドレスで応答するはずです。

ping -c2 gentoo.lan

3. Apache 仮想ホストをアクティブ化するプロセスは非常に簡単です。 /etc/apache2/vhosts.d/ パスにある Apache のデフォルトの仮想ホスト ファイルを開き、最後の ステートメントの前に、< で囲まれた新しい仮想ホスト定義を入力します。 ディレクティブ。 c

ServerNameDocumentRoot パスなどのカスタム設定が含まれます。次のファイル テンプレートを新しい仮想ホストのガイドとして使用し、それを00_default_vhost.conf ファイルに含めます (非 SSL Web サイトの場合)。

sudo nano /etc/apache2/vhosts.d/00_default_vhost.conf
## Another Virtual hosts statemes ending in </VirtualHost> ###

<VirtualHost *:80>
        ServerName gentoo.lan
        DocumentRoot "/var/www/gentoo.lan"
                        <Directory "/var/www/gentoo.lan"
                Options Indexes FollowSymLinks ExecCGI MultiViews
         # AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        # Controls who can get stuff from this server file
                        Order allow,deny
                        Allow from all
        </Directory>
        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>
</VirtualHost>

## Another Virtual hosts statemes ###
## LAST STATEMENT which closes virtual hosts file ##

</IfDefine>

このファイルの内容を視覚化するとわかるように、このファイルには説明が高度にコメントされており、ガイドとして使用できる localhost 仮想ホスト定義も保持されています。

4. カスタム仮想ホストでファイルの編集を終了したら、Apache を再起動して設定を適用し、このディレクティブを変更してパスが変更された場合に備えて、DocumentRoot ディレクトリを作成していることを確認します。デフォルトでは存在しません (この場合は /var/www/gentoo.lan に変更されました)。 Web サーバーの構成をテストするための小さな PHP ファイルも作成しました。

sudo mkdir /var/www/gentoo.lan
su "echo '<?php phpinfo(); ?>' > /var/www/gentoo.lan/info.php"
sudo /etc/init.d/apache2 restart

5. これを確認するには、ブラウザを開いて仮想ドメイン名 http://gentoo.lan/info.php を指定します。

この手順を使用すると、Apache Virtual Host を使用して非 SSL Web サイトを好きなだけ追加できますが、実際のインターネットに接続するマシンの場合は、ドメインが登録されており、有効な DNS サーバー レコードを使用していることを確認してください。

仮想ホストを削除するには、00_default_vhost.conf ファイルの で囲まれたディレクティブをコメントアウトするか削除します。

ステップ 2: 仮想ホストの SSL 証明書とキーを生成する

SSL は、証明書と対称/非対称キーを使用して、インターネットまたは内部ネットワーク内の安全な通信チャネル上で情報を交換するために使用される暗号化プロトコルです。

6. 証明書とキーの生成プロセスを簡素化するには、コマンドとして機能し、SSL ドメイン名設定で必要なものをすべて自動的に作成する次の Bash スクリプトを使用します。

まず、次のコマンドを使用して Bash スクリプトを作成します。

sudo nano /usr/local/bin/apache_gen_ssl

次のファイル内容を追加します。

#!/bin/bash
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
echo -e "Enter a name for this certificate:\nEx: mydomain.lan"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate $cert has been generated!\nPlease link it to Apache SSL website!"
ls -all /etc/apache2/ssl/
exit 0

7. ファイルが作成されたら、そのファイルに実行権限を追加し、実行して SSL キーと証明書を生成します。

sudo chmod +x /usr/local/bin/apache_gen_ssl
sudo apache_gen_ssl

初めて実行するときは、ドメイン 名の入力を求められます。 SSL 設定を生成するドメイン名を入力し、証明書に必要な情報を入力します。最も重要な情報である共通名には、サーバーの FQDN を使用します。

この方法を使用してすべての証明書とキーがホストされるデフォルトの場所は /etc/apache2/ssl/ です。

8. 次に、gentoo.lan 仮想ホスト SSL に相当するものを作成します。非 SSL 仮想ホストの場合と同じ方法を使用しますが、今回は少し変更して /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf ファイルを編集します。

まず編集用にファイルを開いて、次の変更を加えます。

sudo nano /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf

Listen 443 ディレクティブの下に、次のコンテンツを追加します。

NameVirtualHost *:443

新しい仮想ホストに次のテンプレートを使用し、新しい SSL 証明書 + キーのパスと名前を追加します。

## Another Virtual hosts statemes ending in </VirtualHost> ###

<VirtualHost *:443>
                ServerName gentoo.lan
    DocumentRoot "/var/www/gentoo.lan"
                ErrorLog /var/log/apache2/gentoo.lan-ssl_error_log
                <IfModule log_config_module>
                                TransferLog /var/log/apache2/gentoo.lan-ssl_access_log
                </IfModule>

                SSLEngine on
                SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

## Edit with new generated SSL certificate and key and change path to /etc/apache2/ssl/

		SSLCertificateFile /etc/apache2/ssl/gentoo.lan.crt
		SSLCertificateKeyFile /etc/apache2/ssl/gentoo.lan.key

                <Directory "/var/www/gentoo.lan">
                                Options Indexes FollowSymLinks ExecCGI MultiViews Includes
                                AllowOverride All
			        Order allow,deny
        			Allow from all
                </Directory>

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>

                <Directory "/var/www/gentoo.lan ">
                                SSLOptions +StdEnvVars
                </Directory>

                <IfModule setenvif_module>
                                BrowserMatch ".*MSIE.*" \
                                                nokeepalive ssl-unclean-shutdown \
                                                downgrade-1.0 force-response-1.0
                </IfModule>

                <IfModule log_config_module>
                                CustomLog /var/log/apache2/ssl_request_log \
                                                "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
                </IfModule>
</VirtualHost>

## Another Virtual hosts statements ###

仮想ホストの定義は、この最後の 3 つのステートメントの前に終了する必要があります。

</IfModule>
</IfDefine>
</IfDefine>

9. 仮想ホスト ファイルの編集が完了したら、Apache サービスを再起動し、HTTPS プロトコル https://gentoo.lan を使用してブラウザをドメインに誘導します。

sudo /etc/init.d/apache2 restart

この手順を使用すると、Apache 仮想ホストを使用して独自の証明書とキーを持つ SSL Web サイトを追加できます。 SSL 仮想ホストを削除するには、/etc/apache2/vhosts.d/00_default_ssl_vhosts.conf ファイルの で囲まれたディレクティブをコメント アウトするか削除します。

ステップ 3: CGI インターフェイスを有効にする

CGI (共通ゲートウェイ インターフェイス) により、Apache は主に Perl または BASH スクリプトで構成される外部プログラムと対話できるようになり、Web サイトに動的なコンテンツを追加できます。

10. CGI ゲートウェイを有効にする前に、Apache が Portage での USE CGI モジュール フラグ サポートを使用してコンパイルされていることを確認してください。make.conf ファイル: cgi cgid 。 Apache の GCI サポートを有効にするには、/etc/conf.d/apache2 ファイルを開き、APACHE2_OPTS 行に CGI モジュールを追加します。

sudo nano /etc/conf.d/apache2

この行にも同様の内容が含まれていることを確認してください。

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D STATUS -D CGI"

11. CGI モジュールが有効になったら、CGI インターフェイスを有効にする Web サイト定義ホストを開き、仮想ホスト ディレクティブ内に次のコンテンツを追加します。

<Directory "/var/www/gentoo.lan">
	Options Indexes +ExecCGI MultiViews
        AddHandler cgi-script .cgi .pl
	DirectoryIndex index.cgi index.php index.html index.pl
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

12. DocumentRoot (/var/www/gentoo.lan/) パス内に CGI スクリプトを保持するディレクトリがある場合は、そのディレクトリのみを有効にして動的 Perl を提供できます。または Bash スクリプト。

ScriptAlias /cgi-bin/ /var/www/gentoo.lan/cgi-bin/

<Location /cgi-bin>
                Options +ExecCGI
AddHandler cgi-script .cgi .pl
 DirectoryIndex index.cgi index.php index.html index.pl
</Location>

13. SSI (サーバー サイド インクルード) の場合、オプション+include ステートメントを追加し、.shtml ファイル拡張子を追加します。

<Directory "/var/www/gentoo.lan">
                                Options Indexes +ExecCGI +Includes
                                AddHandler cgi-script .cgi .pl
                AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
        DirectoryIndex index.shtml index.cgi index.pl index.php index.html
                AllowOverride All
                Order allow,deny
                Allow from all
</Directory>

14. Apache CGI ゲートウェイでいくつかの単純な .cgi および .pl スクリプトをテストするには、仮想ホスト DocumentRoot 内に次のスクリプトを作成します ( /var/www/gentoo.lan/)。

Perl スクリプト
sudo nano /var/www/gentoo.lan/env.pl

次の Perl コンテンツを追加します。

#!/usr/bin/perl
print "Content-type: text/html\n\n"; foreach my $keys (sort keys %ENV) { print "$keys =
$ENV{$keys}<br/>\n";
}
Bash スクリプト
sudo nano /var/www/gentoo.lan/run.cgi

次の Bash コンテンツを追加します。

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "---------------------------------------------------------------------------------"
              ./env.pl 
echo "---------------------------------------------------------------------------------"

15. ファイルが作成されたら、それらを実行可能にして、Apache デーモンを再起動し、ブラウザで次の URL を指定します。

sudo chmod +x /var/www/gentoo.lan/run.cgi
sudo chmod +x /var/www/gentoo.lan/env.pl
sudo /etc/init.d/apache2 restart
https://gentoo.lan/run.cgi 

OR

https://gentoo.lan/env.pl

これで、システムパフォーマンスの微調整設定と環境全体の最大限の制御を備えた強力な Web ホスティングプラットフォームに Gentoo を変換できるようになりました。