在Gentoo Linux中創(chuàng)建虛擬主機并生成SSL證書及密鑰
譯文在Gentoo中創(chuàng)建Apache虛擬主機
本教程探討了LAMP環(huán)境的額外設(shè)置,比如在Apache上創(chuàng)建虛擬主機、生成SSL證書文件及密鑰、針對HTTP事務(wù)啟用安全SSL協(xié)議,以及使用Apache CGI網(wǎng)關(guān),那樣你就可以在自己的網(wǎng)站上運行Perl腳本或Bash腳本。
第1步:創(chuàng)建Apache虛擬主機
這個話題使用一個虛假的域名:gentoo.lan,通過本地主機文件來啟用,網(wǎng)站文件從/var/www/gentoo.lan來提供――沒有有效DNS記錄的DocumentRoot命令用來演示如何在使用Apache Web Server的Gentoo上啟用多個虛擬主機。
1. 首先,打開Gentoo主機文件進行編輯,用你的域名添加新的一行。
$ sudo nano /etc/hosts
在文件末尾,讓它看起來如同這樣。
127.0.0.1 localhost gentoo 192.168.1.13 gentoo.lan
在主機文件中添加域名
2. 使用ping命令測試你的虛假域,該域應(yīng)該會使用其IP地址來回應(yīng)。
$ ping -c2 gentoo.lan
驗證域名
3. 激活A(yù)pache虛擬主機的過程相當(dāng)簡單。只要打開位于/etc/apache2/vhosts.d/路徑的Apache默認虛擬主機文件,在最后一個語句前面,輸入你新的虛擬主機定義,該定義在…命令下圍起來。
包含你的自定義設(shè)置,比如ServerName和DocumentRoot路徑。使用下列文件模板作為新虛擬主機的指南,并將它添加到00_default_vhost.conf文件上(用于非SSL網(wǎng)站)。
- $ sudo nano /etc/apache2/vhosts.d/00_default_vhost.conf
- ## 以</VirtualHost>結(jié)尾的另一個虛擬主機語句###
- <VirtualHost *:80>
- ServerName gentoo.lan
- DocumentRoot "/var/www/gentoo.lan"
- <Directory "/var/www/gentoo.lan"
- Options Indexes FollowSymLinks ExecCGI MultiViews
- # AllowOverride控制什么命令可以放在.htaccess文件中。
- AllowOverride All
- # 控制誰能從該服務(wù)器文件中獲得內(nèi)容
- Order allow,deny
- Allow from all
- </Directory>
- <IfModule mpm_peruser_module>
- ServerEnvironment apache apache
- </IfModule>
- </VirtualHost>
- ## 另一個虛擬主機語句###
- ## 結(jié)束虛擬主機文件的最后一個語句##
- </IfDefine>
在Gentoo中創(chuàng)建Apache虛擬主機
你可能從該文件內(nèi)容圖形中看出,文件使用了大量的說明注釋,還保留了本地主機虛擬主機的定義――你可以將它用作指南。
4. 使用自定義的虛擬主機完成文件編輯后,重啟Apache,讓設(shè)置生效,并確保你創(chuàng)建了DocumentRoot目錄,以防你更改了該指令,路徑在默認情況下并不存在(這種情況下路徑改成/var/www/gentoo.lan)。我還創(chuàng)建了一個小巧的PHP文件,以測試Web服務(wù)器的配置。
- $ 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。
驗證PHP配置
使用這個方法,你可以使用Apache虛擬主機,想添加幾個非SSL網(wǎng)站,就能添加幾個;但是就一個真實的面向互聯(lián)網(wǎng)的機器而言,要確保你的域已注冊,并且使用有效的DNS服務(wù)器記錄。
想刪除虛擬主機,只要注釋掉或刪除00_default_vhost.conf文件中…下圍起來的指令。#p#
第2步:為虛擬主機生成SSL證書和密鑰
SSL是一種加密協(xié)議,用來通過互聯(lián)網(wǎng)或使用證書以及對稱/非對稱密鑰的網(wǎng)絡(luò)里面的安全通信通道交換信息。 6. 想簡化證書和密鑰的生成過程,使用下列Bash腳本,該腳本充當(dāng)命令,可以自動創(chuàng)建你所需要的帶SSL域名設(shè)置的SSL證書和密鑰。
首先,開始使用下列命令,創(chuàng)建Bash腳本。
$ sudo nano /usr/local/bin/apache_gen_ssl
添加下列文件內(nèi)容。
#!/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
創(chuàng)建Bash腳本,生成SSL
7. 文件創(chuàng)建完畢后,在其末尾添加執(zhí)行權(quán)限,并運行文件,生成SSL密鑰及證書。
$ sudo chmod +x /usr/local/bin/apache_gen_ssl $ sudo apache_gen_ssl
生成SSL證書及密鑰
你第一次運行文件時,它會要求你輸入域名。輸入需要生成SSL設(shè)置的域名,并為證書填充必要的信息,最重要的一個信息是Common Name,使用你服務(wù)器的FQDN(完全符合標準的域名)。
使用這種方法放置所有證書和密鑰的默認位置是/etc/apache2/ssl/。
8. 現(xiàn)在可以創(chuàng)建與gentoo.lan對應(yīng)的虛擬主機SSL。使用與非SSL虛擬主機一樣的方法,不過這回編輯/etc/apache2/vhosts.d/00_default_ssl_vhosts.conf文件,需要稍加改動文件。
先打開文件進行編輯,然后進行下列改動。
$ sudo nano /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf
在Listen 443命令下,添加下列內(nèi)容。
NameVirtualHost *:443
啟用HTTPS端口
針對新的虛擬主機使用下列模板,并在末尾添加新的SSL證書及密鑰路徑和名稱。
- ## 以</VirtualHost> 結(jié)尾的另一個虛擬主機語句###
- <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
- ## 使用新生成的SSL證書和密鑰進行編輯,將路徑改成/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>
- ## 另一個虛擬主機語句###
創(chuàng)建SSL虛擬主機
虛擬主機的定義必須在這最后三個語句之前結(jié)束。
- </IfModule>
- </IfDefine>
- </IfDefine>
驗證虛擬主機
9. 完成虛擬主機文件的編輯后,重啟Apache服務(wù),將瀏覽器指向使用HTTPS協(xié)議的域:https://gentoo.lan。
$ sudo /etc/init.d/apache2 restart
驗證HTTPS協(xié)議
使用這個方法,就可以使用Apache虛擬主機,為SSL網(wǎng)站添加自己的證書和密鑰。想刪除SSL虛擬主機,只要注釋掉或刪除在/etc/apache2/vhosts.d/00_default_ssl_vhosts.conf文件中…下圍起來的命令。
第3步:啟用CGI接口
CGI(通用網(wǎng)關(guān)接口)讓Apache可以與外部程序進行聯(lián)系,它主要由Perl或BASH腳本組成,可以為你的網(wǎng)站添加動態(tài)內(nèi)容。
10. 在啟用CGI網(wǎng)關(guān)之前,確保Apache已經(jīng)過編譯,Portage make.conf文件:cgi cgid 上支持USE CGI模塊。想啟用GCI對Apache的支持,打開/etc/conf.d/apache2文件,在APACHE2_OPTS這一行添加CGI模塊。
$ sudo nano /etc/conf.d/apache2
確保這一行有類似的內(nèi)容。
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D STATUS -D CGI"
為Apache啟用CGI
11. CGI模塊啟用后,打開你想要啟用CGI接口的網(wǎng)站定義主機,并將下列內(nèi)容添加到虛擬主機命令里面。
- <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>
在虛擬主機中啟用CGI
12. 如果你在DocumentRoot(/var/www/gentoo.lan/)路徑里面有一個目錄存放CGI腳本,完全可以啟用該目錄,提供動態(tài)的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(服務(wù)器端嵌入),在Options上添加+Includes語句,并添加.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. 想在Aapche CGA網(wǎng)關(guān)上測試一些簡單的.cgi和.pl腳本,在虛擬主機DocumentRoot(/var/www/gentoo.lan/)里面創(chuàng)建下列腳本。
Perl腳本
$ sudo nano /var/www/gentoo.lan/env.pl
添加下列Perl內(nèi)容。
#!/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內(nèi)容。
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "---------------------------------------------------------------------------------"
./env.pl
echo "---------------------------------------------------------------------------------"
15. 上述文件創(chuàng)建完畢后,讓它們成為可執(zhí)行文件,重啟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
驗證CGI配置
現(xiàn)在,你可以將Gentoo變成一個功能強大的Web主機托管平臺,可以通過一些設(shè)置對系統(tǒng)性能進行微調(diào),并且最大限度地控制你的整個環(huán)境。
原文地址: http://www.tecmint.com/create-apache-virtual-hosts-in-gentoo/