Δημιουργία εικονικών κεντρικών υπολογιστών, δημιουργία πιστοποιητικών και κλειδιών SSL και ενεργοποίηση πύλης CGI στο Gentoo Linux


Ο τελευταίος οδηγός για την Εγκατάσταση του LAMP στο Gentoo Linux μόλις κάλυψε τη βασική διαδικασία εγκατάστασης χωρίς πρόσθετες ρυθμίσεις διαθέσιμες για τον Apache για τον καλύτερο έλεγχο των τομέων σας.

Αυτό το σεμινάριο συνδέεται αυστηρά με το προηγούμενο στο Gentoo LAMP και εξετάζει επιπλέον ρυθμίσεις για το περιβάλλον LAMP, όπως δημιουργία Εικονικών κεντρικών υπολογιστών στον Apache, δημιουργία SSL Αρχεία και κλειδιά πιστοποιητικών, ενεργοποιήστε το ασφαλές πρωτόκολλο SSL στις συναλλαγές HTTP και χρησιμοποιήστε το Apache CGI Gateway ώστε να μπορείτε να εκτελέσετε το Perl ή Bash σενάρια στον ιστότοπό σας.

Απαιτήσεις

  1. Εγκαταστήστε το LAMP στο Gentoo Linux

Βήμα 1: Δημιουργήστε εικονικούς κεντρικούς υπολογιστές Apache

Αυτό το θέμα χρησιμοποιεί ένα ψεύτικο όνομα τομέα – gentoo.lan – ενεργοποιημένο μέσω του αρχείου τοπικών κεντρικών υπολογιστών, με αρχεία ιστότοπου που προβάλλονται από το /var/www/gentoo.lanDocumentRoot οδηγία, χωρίς έγκυρη εγγραφή DNS, για να δείξει πώς μπορούν να ενεργοποιηθούν πολλαπλοί εικονικοί κεντρικοί υπολογιστές στο Gentoo χρησιμοποιώντας τον διακομιστή ιστού Apache.

1. Για να ξεκινήσετε, ανοίξτε το αρχείο κεντρικών υπολογιστών Gentoo για επεξεργασία και προσθέστε μια νέα γραμμή με το όνομα τομέα σας.

sudo nano /etc/hosts

Στο τέλος του αρχείου κάντε το να μοιάζει με αυτό.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Δοκιμάστε τον ψεύτικο τομέα σας με την εντολή ping και ο τομέας θα πρέπει να ανταποκρίνεται με τη διεύθυνση IP του.

ping -c2 gentoo.lan

3. Η διαδικασία ενεργοποίησης των εικονικών κεντρικών υπολογιστών Apache είναι αρκετά απλή. Απλώς ανοίξτε το προεπιλεγμένο αρχείο εικονικών κεντρικών υπολογιστών του Apache που βρίσκεται στη διαδρομή /etc/apache2/vhosts.d/ και πριν από την τελευταία δήλωση , εισαγάγετε τον νέο σας ορισμό εικονικού κεντρικού υπολογιστή που εσωκλείεται στο οδηγίες. ντο

Περιέχει τις προσαρμοσμένες ρυθμίσεις σας, όπως τη διαδρομή ServerName και DocumentRoot. Χρησιμοποιήστε το παρακάτω πρότυπο αρχείου ως οδηγό για έναν νέο Εικονικό κεντρικό υπολογιστή και συμπεριλάβετέ τον στο αρχείο 00_default_vhost.conf (για ιστότοπους χωρίς 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>

Όπως μπορείτε να δείτε οπτικοποιώντας αυτό το περιεχόμενο του αρχείου, το αρχείο σχολιάζεται πολύ με επεξηγήσεις και διατηρεί επίσης τον ορισμό του εικονικού κεντρικού υπολογιστή localhost – τον οποίο μπορείτε να χρησιμοποιήσετε ως οδηγό.

4. Αφού ολοκληρώσετε την επεξεργασία του αρχείου με τον προσαρμοσμένο σας εικονικό κεντρικό υπολογιστή, επανεκκινήστε τον Apache για να εφαρμόσετε ρυθμίσεις και βεβαιωθείτε ότι έχετε δημιουργήσει τον κατάλογο DocumentRoot σε περίπτωση που έχετε αλλάξει αυτήν την οδηγία και η διαδρομή δεν 'υπάρχει από προεπιλογή (σε αυτήν την περίπτωση άλλαξε σε /var/www/gentoo.lan). Έχω δημιουργήσει επίσης ένα μικρό αρχείο PHP για να δοκιμάσω τις διαμορφώσεις διακομιστή ιστού.

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.

Χρησιμοποιώντας αυτήν τη διαδικασία, μπορείτε να προσθέσετε όσες τοποθεσίες χωρίς SSL θέλετε χρησιμοποιώντας εικονικούς κεντρικούς υπολογιστές Apache, αλλά για μια πραγματική μηχανή που αντιμετωπίζει το Διαδίκτυο, βεβαιωθείτε ότι έχετε καταχωρίσει τους τομείς σας και χρησιμοποιείτε έγκυρες εγγραφές διακομιστή DNS.

Για να καταργήσετε έναν Εικονικό κεντρικό υπολογιστή, απλώς σχολιάστε ή διαγράψτε τις οδηγίες του που εσωκλείονται στο στο αρχείο 00_default_vhost.conf.

Βήμα 2: Δημιουργήστε πιστοποιητικά SSL και κλειδιά για εικονικούς κεντρικούς υπολογιστές

Το SSL είναι ένα κρυπτογραφικό πρωτόκολλο που χρησιμοποιείται για την ανταλλαγή πληροφοριών μέσω ενός ασφαλούς καναλιού επικοινωνίας στο Διαδίκτυο ή εντός δικτύων χρησιμοποιώντας Πιστοποιητικά και συμμετρικά/ασύμμετρα κλειδιά.

6. Για να απλοποιήσετε τη διαδικασία δημιουργίας πιστοποιητικών και κλειδιών, χρησιμοποιήστε την ακόλουθη δέσμη ενεργειών Bash που λειτουργεί ως εντολή και δημιουργεί αυτόματα όλα όσα χρειάζεστε με τις ρυθμίσεις ονόματος τομέα SSL.

Αρχικά ξεκινήστε δημιουργώντας σενάριο Bash χρησιμοποιώντας την ακόλουθη εντολή.

sudo nano /usr/local/bin/apache_gen_ssl

Προσθέστε το ακόλουθο περιεχόμενο αρχείου.

#!/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. Αφού δημιουργηθεί το αρχείο, προσθέστε δικαιώματα εκτέλεσης σε αυτό και εκτελέστε το για να δημιουργήσετε κλειδιά και πιστοποιητικά SSL.

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

Όταν το εκτελέσετε την πρώτη φορά, θα σας ζητηθεί να εισαγάγετε το όνομα τομέα σας. Εισαγάγετε το όνομα τομέα για το οποίο δημιουργείτε ρυθμίσεις SSL και συμπληρώστε το Πιστοποιητικό με τις απαιτούμενες πληροφορίες, το πιο σημαντικό, το Κοινό όνομα, χρησιμοποιήστε το FQDN του διακομιστή σας.

Η προεπιλεγμένη τοποθεσία όπου φιλοξενούνται όλα τα Πιστοποιητικά και τα Κλειδιά σας χρησιμοποιώντας αυτήν τη μέθοδο είναι /etc/apache2/ssl/.

8. Τώρα ήρθε η ώρα να δημιουργήσετε το αντίστοιχο SSL του gentoo.lan Virtual Host. Χρησιμοποιήστε την ίδια μέθοδο όπως για τους εικονικούς κεντρικούς υπολογιστές που δεν είναι SSL, αλλά αυτή τη φορά επεξεργάζεστε το αρχείο /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf με ελαφρές αλλαγές.

Ανοίξτε πρώτα το αρχείο για επεξεργασία και κάντε τις παρακάτω αλλαγές.

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

Στην οδηγία Listen 443 προσθέστε το ακόλουθο περιεχόμενο.

NameVirtualHost *:443

Χρησιμοποιήστε το παρακάτω πρότυπο για έναν νέο εικονικό κεντρικό υπολογιστή και προσθέστε νέο πιστοποιητικό SSL + διαδρομή κλειδιού και ονόματα.

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

Οι ορισμοί των εικονικών κεντρικών υπολογιστών πρέπει να τελειώνουν πριν από αυτές τις τρεις τελευταίες δηλώσεις.

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

9. Αφού ολοκληρώσετε την επεξεργασία του αρχείου Virtual Host, επανεκκινήστε την υπηρεσία Apache και κατευθύνετε το πρόγραμμα περιήγησής σας στον τομέα σας χρησιμοποιώντας το πρωτόκολλο HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Χρησιμοποιώντας αυτήν τη διαδικασία, μπορείτε να προσθέσετε ιστότοπους SSL με τα δικά τους πιστοποιητικά και κλειδιά χρησιμοποιώντας εικονικούς κεντρικούς υπολογιστές Apache. Για να καταργήσετε τους εικονικούς κεντρικούς υπολογιστές SSL, σχολιάστε ή διαγράψτε τις οδηγίες του που εσωκλείονται στο στο αρχείο /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Βήμα 3: Ενεργοποιήστε τη διεπαφή CGI

Το CGI (Κοινή Διασύνδεση Πύλης) επιτρέπει στον Apache να αλληλεπιδρά με εξωτερικά προγράμματα, κυρίως που αποτελούνται από σενάρια Perl ή BASH, τα οποία μπορούν να προσθέσουν ένα δυναμικό περιεχόμενο στον ιστότοπό σας.

10. Πριν ενεργοποιήσετε την πύλη CGI, βεβαιωθείτε ότι ο Apache έχει μεταγλωττιστεί με υποστήριξη σημαιών λειτουργιών USE CGI στο αρχείο Portage make.conf: cgi cgid . Για να ενεργοποιήσετε την υποστήριξη GCI για Apache, ανοίξτε το αρχείο /etc/conf.d/apache2 και προσθέστε τη μονάδα CGI στη γραμμή APACHE2_OPTS.

sudo nano /etc/conf.d/apache2

Βεβαιωθείτε ότι αυτή η γραμμή έχει παρόμοιο περιεχόμενο.

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

11. Αφού ενεργοποιηθούν οι λειτουργικές μονάδες CGI, ανοίξτε τον κεντρικό υπολογιστή ορισμού του ιστότοπού σας που θέλετε να ενεργοποιήσετε τη διεπαφή CGI και προσθέστε το ακόλουθο περιεχόμενο στις οδηγίες 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. Εάν έχετε έναν κατάλογο στη διαδρομή DocumentRoot (/var/www/gentoo.lan/) που περιέχει σενάρια CGI, μπορείτε να ενεργοποιήσετε ακριβώς αυτόν τον κατάλογο για να εξυπηρετεί τη δυναμική 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 (Server Side Includes) προσθέστε τη δήλωση +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. Για να δοκιμάσετε μερικά απλά σενάρια .cgi και .pl στην πύλη Apache CGI, δημιουργήστε τα ακόλουθα σενάρια μέσα στο Virtual Host DocumentRoot ( /var/www/gentoo.lan/).

Σενάριο Perl
sudo nano /var/www/gentoo.lan/env.pl

Προσθέστε το ακόλουθο περιεχόμενο Perl.

#!/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.

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

15. Αφού δημιουργηθούν τα αρχεία, κάντε τα εκτελέσιμα, επανεκκινήστε το Apache daemon και κατευθύνετε το πρόγραμμα περιήγησής σας στις ακόλουθες διευθύνσεις 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

Τώρα μπορείτε να μετατρέψετε το Gentoo σε μια ισχυρή πλατφόρμα φιλοξενίας Ιστού με ρυθμίσεις ακριβούς συντονισμού για την απόδοση του συστήματός σας και μέγιστο έλεγχο σε ολόκληρο το περιβάλλον σας.