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
- 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.lan – DocumentRoot 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.