Ricerca nel sito web

Creazione di host virtuali, generazione di certificati e chiavi SSL e abilitazione del gateway CGI in Gentoo Linux


L'ultimo tutorial sull'Installazione di LAMP in Gentoo Linux ha appena trattato il processo di installazione di base senza impostazioni aggiuntive disponibili per Apache per controllare meglio i tuoi domini.

Questo tutorial è strettamente connesso al precedente su Gentoo LAMP e discute impostazioni extra per l'ambiente LAMP come creare host virtuali su Apache, generare SSL, abilita il protocollo SSL sicuro sulle transazioni HTTP e utilizza Apache CGI Gateway in modo da poter eseguire Perl o Bash script sul tuo sito web.

Requisiti

  1. Installa LAMP in Gentoo Linux

Passaggio 1: crea host virtuali Apache

Questo argomento utilizza un nome di dominio falso – gentoo.lan – abilitato tramite il file host locale, con file del sito web serviti da /var/www/gentoo.lanDocumentRoot , senza un record DNS valido, per dimostrare come è possibile abilitare più host virtuali su Gentoo utilizzando il server web Apache.

1. Per iniziare, apri il file host Gentoo per la modifica e aggiungi una nuova riga con il tuo nome di dominio.

sudo nano /etc/hosts

Alla fine del file fallo sembrare simile a questo.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Metti alla prova il tuo dominio falso con il comando ping e il dominio dovrebbe rispondere con il suo indirizzo IP.

ping -c2 gentoo.lan

3. Il processo di attivazione degli host virtuali Apache è abbastanza semplice. Basta aprire il file degli host virtuali predefiniti di Apache situato nel percorso /etc/apache2/vhosts.d/ e prima dell'ultima istruzione, inserire la nuova definizione di host virtuale racchiusa sotto direttive. C

Contenente le impostazioni personalizzate come ServerName e DocumentRoot percorso. Utilizza il seguente modello di file come guida per un nuovo host virtuale e includilo nel file 00_default_vhost.conf (per siti Web non 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>

Come puoi vedere visualizzando il contenuto di questo file, il file è altamente commentato con spiegazioni e mantiene anche la definizione di host virtuale localhost, che puoi utilizzare come guida.

4. Dopo aver terminato la modifica del file con il tuo host virtuale personalizzato, riavvia Apache per applicare le impostazioni e assicurati di creare la directory DocumentRoot nel caso in cui hai modificato questa direttiva e il percorso non funziona non esiste per impostazione predefinita (in questo caso è stato cambiato in /var/www/gentoo.lan). Ho anche creato un piccolo file PHP per testare le configurazioni del server web.

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

5. Per verificarlo, apri un browser e indica il nome del tuo dominio virtuale http://gentoo.lan/info.php.

Utilizzando questa procedura puoi aggiungere tutti i siti Web non SSL che desideri utilizzando Apache Virtual Hosts, ma per una vera macchina con connessione a Internet assicurati di avere i tuoi domini registrati e di utilizzare record di server DNS validi.

Per rimuovere un host virtuale basta commentare o eliminare le sue direttive racchiuse sotto nel file 00_default_vhost.conf.

Passaggio 2: generare certificati e chiavi SSL per host virtuali

SSL è un protocollo crittografico utilizzato per scambiare informazioni su un canale di comunicazione sicuro in Internet o all'interno di reti utilizzando certificati e chiavi simmetriche/asimmetriche.

6. Per semplificare il processo di generazione di certificati e chiavi, utilizza il seguente script Bash che agisce come un comando e crea automaticamente tutto ciò di cui hai bisogno con le impostazioni del nome di dominio SSL.

Per prima cosa inizia creando lo script Bash usando il seguente comando.

sudo nano /usr/local/bin/apache_gen_ssl

Aggiungi il seguente contenuto del file.

#!/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. Dopo che il file è stato creato, aggiungi le autorizzazioni di esecuzione su di esso ed eseguilo per generare chiavi e certificati SSL.

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

Quando lo esegui per la prima volta, ti verrà chiesto di inserire il nome del tuo dominio. Inserisci il nome del tuo dominio per il quale generi le impostazioni SSL e compila il certificato con le informazioni richieste, la più importante, Nome comune, utilizza l'FQDN del tuo server.

La posizione predefinita in cui sono ospitati tutti i certificati e le chiavi utilizzando questo metodo è /etc/apache2/ssl/.

8. Ora è il momento di creare l'equivalente SSL dell'host virtuale gentoo.lan. Utilizza lo stesso metodo utilizzato per gli host virtuali non SSL, ma questa volta modificando il file /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf con lievi modifiche.

Per prima cosa apri il file per la modifica e apporta le seguenti modifiche.

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

Nella direttiva Ascolta 443 aggiungi il seguente contenuto.

NameVirtualHost *:443

Utilizza il seguente modello per un nuovo host virtuale e aggiungi il nuovo certificato SSL + percorso e nomi della chiave.

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

Le definizioni degli host virtuali devono terminare prima di queste ultime tre istruzioni.

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

9. Dopo aver terminato la modifica del file host virtuale, riavvia il servizio Apache e indirizza il browser al tuo dominio utilizzando il protocollo HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Utilizzando questa procedura, puoi aggiungere siti Web SSL con i propri certificati e chiavi utilizzando gli host virtuali Apache. Per rimuovere gli host virtuali SSL commenta o elimina le sue direttive racchiuse in nel file /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Passaggio 3: abilitare l'interfaccia CGI

La CGI (Common Gateway Interface) consente ad Apache di interagire con programmi esterni, costituiti principalmente da script Perl o BASH, che possono aggiungere un contenuto dinamico al tuo sito web.

10. Prima di abilitare il gateway CGI assicurati che Apache sia stato compilato con il supporto dei flag dei moduli USE CGI sul file make.conf di Portage: cgi cgid . Per abilitare il supporto GCI per Apache, aprire il file /etc/conf.d/apache2 e aggiungere il modulo CGI sulla riga APACHE2_OPTS.

sudo nano /etc/conf.d/apache2

Assicurati che questa riga abbia contenuti simili.

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

11. Dopo aver abilitato i moduli CGI, apri l'host di definizione del tuo sito web che desideri abilitare l'interfaccia CGI e aggiungi il seguente contenuto nelle direttive dell'host virtuale.

<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. Se hai una directory all'interno del tuo percorso DocumentRoot (/var/www/gentoo.lan/) che contiene script CGI, puoi abilitare solo quella directory per servire Perl dinamico o script 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. Per SSI (Server Side Include) aggiungi l'istruzione +Includes su Opzioni e aggiungi l'estensione del file .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. Per testare alcuni semplici script .cgi e .pl sul gateway Apache CGI crea i seguenti script all'interno del tuo host virtuale DocumentRoot ( /var/www/gentoo.lan/).

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

Aggiungi il seguente contenuto Perl.

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

Aggiungi il seguente contenuto Bash.

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

15. Dopo che i file sono stati creati, rendili eseguibili, riavvia il demone Apache e indirizza il browser ai seguenti 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

Ora puoi trasformare Gentoo in una potente piattaforma di hosting Web con impostazioni di ottimizzazione per le prestazioni del tuo sistema e il massimo controllo sull'intero ambiente.