Vyhledávání na webu

Vytváření virtuálních hostitelů, generování SSL certifikátů a klíčů a povolení brány CGI v Gentoo Linuxu


Poslední tutoriál o Instalaci LAMP v Gentoo Linux pokryl pouze základní instalační proces bez dalších dostupných nastavení pro Apache pro lepší kontrolu vašich domén.

Tento tutoriál úzce souvisí s předchozím na Gentoo LAMP a pojednává o dalších nastaveních pro prostředí LAMP, jako je vytváření virtuálních hostitelů na Apache, generování SSL Certifikační soubory a klíče, povolte bezpečný protokol SSL pro transakce HTTP a použijte Apache CGI Gateway, abyste mohli spouštět Perl nebo Bash skripty přes váš web.

Požadavky

  1. Nainstalujte LAMP v Gentoo Linuxu

Krok 1: Vytvořte virtuální hostitele Apache

Toto téma používá falešný název domény – gentoo.lan – povolený prostřednictvím souboru místního hostitele, se soubory webových stránek obsluhovaných z /var/www/gentoo.lanDocumentRoot direktiva, bez platného DNS záznamu, k demonstraci toho, jak lze na Gentoo povolit více virtuálních hostitelů pomocí webového serveru Apache.

1. Pro začátek otevřete soubor hostitelů Gentoo pro úpravy a přidejte nový řádek s názvem vaší domény.

sudo nano /etc/hosts

Na konci souboru, aby to vypadalo podobně jako toto.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Otestujte svou falešnou doménu pomocí příkazu ping a doména by měla odpovědět svou IP adresou.

ping -c2 gentoo.lan

3. Proces aktivace virtuálních hostitelů Apache je poměrně jednoduchý. Stačí otevřít výchozí soubor virtuálních hostitelů Apache umístěný na cestě /etc/apache2/vhosts.d/ a před posledním příkazem zadejte svou novou definici virtuálního hostitele přiloženou pod direktivy. C

Obsahuje vaše vlastní nastavení, jako je ServerName a DocumentRoot cesta. Použijte následující šablonu souboru jako průvodce pro nového virtuálního hostitele a zahrňte ji do souboru 00_default_vhost.conf (pro weby bez SSL).

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>

Jak můžete vidět při vizualizaci obsahu tohoto souboru, soubor je vysoce komentován s vysvětlením a také si zachovává definici virtuálního hostitele localhost – kterou můžete použít jako vodítko.

4. Po dokončení úprav souboru s vaším vlastním virtuálním hostitelem restartujte Apache, abyste použili nastavení, a ujistěte se, že jste vytvořili adresář DocumentRoot pro případ, že jste změnili tuto direktivu a cesta se nezměnila 't ve výchozím nastavení neexistuje (v tomto případě bylo změněno na /var/www/gentoo.lan). Vytvořil jsem také malý soubor PHP pro testování konfigurací webového serveru.

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

5. Chcete-li to ověřit, otevřete prohlížeč a zadejte název své virtuální domény http://gentoo.lan/info.php.

Pomocí tohoto postupu můžete přidat libovolný počet webů bez SSL pomocí virtuálních hostitelů Apache, ale u skutečného počítače s připojením k internetu se ujistěte, že máte zaregistrované své domény a používáte platné záznamy serveru DNS.

Chcete-li odebrat virtuálního hostitele, stačí jej okomentovat nebo smazat jeho direktivy uzavřené pod v souboru 00_default_vhost.conf.

Krok 2: Vygenerujte certifikáty SSL a klíče pro virtuální hostitele

SSL je kryptografický protokol používaný k výměně informací přes zabezpečený komunikační kanál na internetu nebo uvnitř sítí pomocí certifikátů a symetrických/asymetrických klíčů.

6. Pro zjednodušení procesu generování certifikátů a klíčů použijte následující skript Bash, který funguje jako příkaz a automaticky vytvoří vše, co potřebujete s nastavením názvu domény SSL.

Nejprve začněte vytvořením skriptu Bash pomocí následujícího příkazu.

sudo nano /usr/local/bin/apache_gen_ssl

Přidejte následující obsah souboru.

#!/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. Po vytvoření souboru připojte k němu oprávnění ke spuštění a spusťte jej, aby se vygenerovaly klíče a certifikáty SSL.

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

Při prvním spuštění budete požádáni o zadání názvu vaší domény. Zadejte název své domény, pro kterou generujete nastavení SSL, a vyplňte certifikát požadovanými informacemi, z nichž nejdůležitější je Běžný název, použijte FQDN vašeho serveru.

Výchozí umístění, kde jsou pomocí této metody hostovány všechny vaše certifikáty a klíče, je /etc/apache2/ssl/.

8. Nyní je čas vytvořit ekvivalent SSL virtuálního hostitele gentoo.lan. Použijte stejnou metodu jako pro ne-SSL virtuální hostitele, ale tentokrát upravte soubor /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf s malými změnami.

Nejprve otevřete soubor pro úpravy a proveďte následující změny.

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

Do direktivy Listen 443 přidejte následující obsah.

NameVirtualHost *:443

Použijte následující šablonu pro nového virtuálního hostitele a připojte nový certifikát SSL + cestu a názvy klíče.

## 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 ###

Definice virtuálních hostitelů musí končit před těmito posledními třemi příkazy.

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

9. Po dokončení úprav souboru virtuálního hostitele restartujte službu Apache a přesměrujte svůj prohlížeč do vaší domény pomocí protokolu HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Pomocí tohoto postupu můžete přidat weby SSL s jejich vlastními certifikáty a klíči pomocí virtuálních hostitelů Apache. Chcete-li odebrat virtuální hostitele SSL, zakomentujte nebo odstraňte jeho direktivy uzavřené pod v souboru /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Krok 3: Povolte rozhraní CGI

CGI (Common Gateway Interface), které umožňuje Apache komunikovat s externími programy, primárně sestávajícími ze skriptů Perl nebo BASH, které mohou přidat dynamický obsah na váš web.

10. Před povolením brány CGI se ujistěte, že Apache byl zkompilován s podporou příznaků modulů USE CGI v souboru Portage make.conf: cgi cgid . Chcete-li povolit podporu GCI pro Apache, otevřete soubor /etc/conf.d/apache2 a připojte modul CGI na řádek APACHE2_OPTS.

sudo nano /etc/conf.d/apache2

Ujistěte se, že tento řádek má podobný obsah.

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

11. Po aktivaci modulů CGI otevřete hostitele definic webových stránek, u kterého chcete povolit rozhraní CGI, a přidejte do direktiv virtuálního hostitele následující obsah.

<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. Pokud máte v cestě DocumentRoot (/var/www/gentoo.lan/) adresář, který obsahuje skripty CGI, můžete povolit, aby pouze tento adresář poskytoval dynamický Perl nebo Bash skripty.

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. Pro SSI (Server Side Within) připojte k Možnosti prohlášení +Includes a přidejte příponu souboru .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. Chcete-li otestovat některé jednoduché skripty .cgi a .pl na bráně Apache CGI, vytvořte ve svém virtuálním hostiteli DocumentRoot následující skripty ( /var/www/gentoo.lan/).

Perl skript
sudo nano /var/www/gentoo.lan/env.pl

Přidejte následující obsah Perlu.

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

Přidejte následující obsah Bash.

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

15. Po vytvoření souborů udělejte z nich spustitelné, restartujte démona Apache a nasměrujte prohlížeč na následující adresy 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

Nyní můžete Gentoo přeměnit na výkonnou webhostingovou platformu s jemným nastavením pro výkon vašeho systému a maximální kontrolu nad celým vaším prostředím.