Wyszukiwanie w witrynie

Tworzenie wirtualnych hostów, generowanie certyfikatów i kluczy SSL oraz włączanie bramy CGI w Gentoo Linux


Ostatni samouczek na temat Instalowania LAMP w Gentoo Linux opisał podstawowy proces instalacji bez dodatkowych ustawień dostępnych dla Apache, aby lepiej kontrolować twoje domeny.

Ten tutorial jest ściśle powiązany z poprzednim na Gentoo LAMP i omawia dodatkowe ustawienia środowiska LAMP takie jak tworzenie hostów wirtualnych na Apache, generowanie SSL Pliki certyfikatów i klucze, włącz bezpieczny protokół SSL w transakcjach HTTP i używaj Apache CGI Gateway, aby móc uruchamiać Perl lub Skrypty Bash w Twojej witrynie.

Wymagania

  1. Zainstaluj LAMPę w Gentoo Linux

Krok 1: Utwórz wirtualne hosty Apache

W tym temacie używana jest fałszywa nazwa domeny – gentoo.lan – włączona poprzez lokalny plik hosts, z plikami strony internetowej udostępnianymi z /var/www/gentoo.lanDocumentRoot bez ważnego rekordu DNS, aby zademonstrować, jak można włączyć wiele wirtualnych hostów w Gentoo przy użyciu serwera WWW Apache.

1. Aby rozpocząć, otwórz plik hosts Gentoo do edycji i dodaj nową linię z nazwą swojej domeny.

sudo nano /etc/hosts

Na końcu pliku spraw, aby wyglądał podobnie do tego.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Przetestuj swoją fałszywą domenę za pomocą polecenia ping, a domena powinna odpowiedzieć swoim adresem IP.

ping -c2 gentoo.lan

3. Proces aktywacji wirtualnych hostów Apache jest dość prosty. Po prostu otwórz domyślny plik wirtualnych hostów Apache znajdujący się w ścieżce /etc/apache2/vhosts.d/ i przed ostatnią instrukcją wprowadź nową definicję wirtualnego hosta ujętą w dyrektywy. C

Zawiera ustawienia niestandardowe, takie jak Nazwa serwera i ścieżka DocumentRoot. Skorzystaj z poniższego szablonu pliku jako przewodnika po nowym hoście wirtualnym i dołącz go do pliku 00_default_vhost.conf (w przypadku witryn internetowych bez protokołu 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 widać wizualizując zawartość tego pliku, plik jest bardzo skomentowany objaśnieniami, a także zawiera definicję hosta wirtualnego localhost – której możesz używać jako przewodnika.

4. Po zakończeniu edycji pliku na niestandardowym hoście wirtualnym uruchom ponownie Apache, aby zastosować ustawienia i upewnij się, że utworzyłeś katalog DocumentRoot na wypadek zmiany tej dyrektywy i ścieżki nie Domyślnie nie istnieje (w tym przypadku zmieniono na /var/www/gentoo.lan). Stworzyłem także mały plik PHP do testowania konfiguracji serwera WWW.

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

5. Aby to sprawdzić, otwórz przeglądarkę i wskaż jej nazwę swojej wirtualnej domeny http://gentoo.lan/info.php.

Korzystając z tej procedury, możesz dodać dowolną liczbę witryn internetowych nieobsługujących SSL, korzystając z Apache Virtual Hosts, ale w przypadku prawdziwego komputera z dostępem do Internetu upewnij się, że masz zarejestrowane domeny i używasz prawidłowych rekordów serwera DNS.

Aby usunąć hosta wirtualnego, po prostu skomentuj lub usuń jego dyrektywy zawarte w w pliku 00_default_vhost.conf.

Krok 2: Wygeneruj certyfikaty i klucze SSL dla hostów wirtualnych

SSL to protokół kryptograficzny używany do wymiany informacji za pośrednictwem bezpiecznego kanału komunikacyjnego w Internecie lub wewnątrz sieci przy użyciu Certyfikatów i kluczy symetrycznych/asymetrycznych.

6. Aby uprościć proces generowania certyfikatów i kluczy, użyj poniższego skryptu Bash, który działa jak polecenie i automatycznie tworzy wszystko, czego potrzebujesz z ustawieniami nazwy domeny SSL.

Najpierw zacznij od utworzenia skryptu Bash za pomocą następującego polecenia.

sudo nano /usr/local/bin/apache_gen_ssl

Dodaj następującą zawartość pliku.

#!/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 utworzeniu pliku dodaj do niego uprawnienia do wykonywania i uruchom go, aby wygenerować klucze i certyfikaty SSL.

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

Gdy uruchomisz go po raz pierwszy, zostaniesz poproszony o podanie nazwy domeny. Wpisz nazwę swojej domeny dla której generujesz ustawienia SSL i wypełnij Certyfikat wymaganymi informacjami, z których najważniejsza to Nazwa zwyczajowa, użyj FQDN swojego serwera.

Domyślna lokalizacja, w której wszystkie Twoje certyfikaty i klucze są hostowane przy użyciu tej metody, to /etc/apache2/ssl/.

8. Teraz czas stworzyć odpowiednik gentoo.lan Virtual Host SSL. Użyj tej samej metody, co w przypadku hostów wirtualnych bez SSL, ale tym razem edytuj plik /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf z niewielkimi zmianami.

Najpierw otwórz plik do edycji i wprowadź następujące zmiany.

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

W dyrektywie Słuchaj 443 dodaj następującą treść.

NameVirtualHost *:443

Użyj poniższego szablonu dla nowego hosta wirtualnego i dołącz nowy certyfikat SSL + ścieżkę klucza i nazwy.

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

Definicje hostów wirtualnych muszą kończyć się przed trzema ostatnimi instrukcjami.

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

9. Po zakończeniu edycji pliku Virtual Host zrestartuj usługę Apache i skieruj przeglądarkę na swoją domenę za pomocą protokołu HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Korzystając z tej procedury, możesz dodać witryny SSL z własnymi certyfikatami i kluczami, korzystając z wirtualnych hostów Apache. Aby usunąć wirtualne hosty SSL, skomentuj lub usuń ich dyrektywy zawarte w w pliku /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Krok 3: Włącz interfejs CGI

CGI (Common Gateway Interface) umożliwia Apache interakcję z programami zewnętrznymi, składającymi się głównie ze skryptów Perl lub BASH, które mogą dodawać dynamiczną treść do Twojej witryny.

10. Przed włączeniem bramy CGI upewnij się, że Apache został skompilowany z obsługą flag modułów USE CGI w pliku make.conf Portage: cgi cgid . Aby włączyć obsługę GCI dla Apache, otwórz plik /etc/conf.d/apache2 i dołącz moduł CGI w linii APACHE2_OPTS.

sudo nano /etc/conf.d/apache2

Upewnij się, że ten wiersz ma podobną treść.

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

11. Po włączeniu modułów CGI otwórz host definicji witryny, dla której chcesz włączyć interfejs CGI, i dodaj następującą treść w dyrektywach Virtual Host.

<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. Jeśli w ścieżce DocumentRoot (/var/www/gentoo.lan/) masz katalog zawierający skrypty CGI, możesz włączyć tylko ten katalog, aby obsługiwał dynamiczny Perl lub skrypty 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. W przypadku SSI (Server Side Zawiera) dodaj instrukcję +Includes w Opcjach i dodaj rozszerzenie pliku .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. Aby przetestować kilka prostych skryptów .cgi i .pl na bramce Apache CGI, utwórz następujące skrypty w swoim Virtual Host DocumentRoot ( /var/www/gentoo.lan/).

Skrypt Perla
sudo nano /var/www/gentoo.lan/env.pl

Dodaj następującą zawartość Perla.

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

Dodaj następującą zawartość Bash.

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

15. Po utworzeniu plików nadaj im uprawnienia wykonywalne, zrestartuj demona Apache i skieruj przeglądarkę na następujące 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

Teraz możesz przekształcić Gentoo w potężną platformę hostingową z możliwością precyzyjnego dostrojenia ustawień wydajności systemu i maksymalną kontrolą nad całym środowiskiem.