Pesquisa de site

Criando hosts virtuais, gerando certificados e chaves SSL e habilitando gateway CGI no Gentoo Linux


O último tutorial sobre Instalando LAMP no Gentoo Linux apenas cobriu o processo básico de instalação sem configurações adicionais disponíveis para o Apache controlar melhor seus domínios.

Este tutorial está estritamente conectado com o anterior no Gentoo LAMP e discute configurações extras para o ambiente LAMP, como criar Hosts Virtuais no Apache, gerar SSL, habilite o protocolo SSL seguro em transações HTTP e use o CGI Gateway do Apache para que você possa executar Perl ou Scripts Bash em seu site.

Requisitos

  1. Instale LAMP no Gentoo Linux

Etapa 1: criar hosts virtuais Apache

Este tópico usa um nome de domínio falso – gentoo.lan – habilitado através de arquivo de hosts locais, com arquivos de site servidos em /var/www/gentoo.lanDocumentRoot , sem um registro DNS válido, para demonstrar como vários hosts virtuais podem ser habilitados no Gentoo usando o servidor web Apache.

1. Para começar, abra o arquivo hosts do Gentoo para edição e adicione uma nova linha com seu nome de domínio.

sudo nano /etc/hosts

No final do arquivo, faça com que fique semelhante a este.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Teste seu domínio falso com o comando ping e o domínio deverá responder com seu endereço IP.

ping -c2 gentoo.lan

3. O processo de ativação do Apache Virtual Hosts é bastante simples. Basta abrir o arquivo de hosts virtuais padrão do Apache localizado no caminho /etc/apache2/vhosts.d/ e antes da última instrução , insira sua nova definição de Host Virtual incluída em diretivas. c

Contendo suas configurações personalizadas, como ServerName e caminho DocumentRoot. Use o seguinte modelo de arquivo como guia para um novo Host Virtual e inclua-o no arquivo 00_default_vhost.conf (para sites não-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>

Como você pode ver visualizando o conteúdo deste arquivo, o arquivo é altamente comentado com explicações e também contém a definição de localhost Virtual Host – que você pode usar como guia.

4. Depois de terminar de editar o arquivo com seu Virtual Host personalizado, reinicie o Apache para aplicar as configurações e certifique-se de criar o diretório DocumentRoot caso você tenha alterado esta diretiva e o caminho não 'não existe por padrão (neste caso foi alterado para /var/www/gentoo.lan). Também criei um pequeno arquivo PHP para testar as configurações do servidor web.

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

5. Para verificá-lo, abra um navegador e aponte para ele o seu nome de domínio virtual http://gentoo.lan/info.php.

Usando este procedimento, você pode adicionar quantos sites não SSL desejar usando Apache Virtual Hosts, mas para uma máquina real voltada para a Internet, certifique-se de ter seus domínios registrados e de usar registros de servidor DNS válidos.

Para remover um Virtual Host apenas comente ou exclua suas diretivas incluídas em no arquivo 00_default_vhost.conf.

Etapa 2: gerar certificados e chaves SSL para hosts virtuais

SSL é um protocolo criptográfico utilizado para troca de informações através de um canal de comunicação seguro na Internet ou dentro de redes usando Certificados e Chaves simétricas/assimétricas.

6. Para simplificar o processo de geração de certificados e chaves, use o seguinte script Bash que atua como um comando e cria automaticamente tudo o que você precisa com suas configurações de nome de domínio SSL.

Primeiro comece criando um script Bash usando o seguinte comando.

sudo nano /usr/local/bin/apache_gen_ssl

Adicione o seguinte conteúdo do arquivo.

#!/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. Após a criação do arquivo, anexe permissões de execução a ele e execute-o para gerar chaves e certificados SSL.

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

Quando você executá-lo pela primeira vez, será solicitado que você insira o nome do seu domínio. Insira o nome do seu domínio para o qual você gera as configurações SSL e preencha o Certificado com as informações necessárias, a mais importante, Nome Comum, use o FQDN do seu servidor.

O local padrão onde todos os seus certificados e chaves são hospedados usando este método é /etc/apache2/ssl/.

8. Agora é hora de criar o equivalente SSL do gentoo.lan Virtual Host. Use o mesmo método usado para hosts virtuais não SSL, mas desta vez editando o arquivo /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf com pequenas alterações.

Primeiro abra o arquivo para edição e faça as seguintes alterações.

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

Na diretiva Listen 443 adicione o seguinte conteúdo.

NameVirtualHost *:443

Use o modelo a seguir para um novo host virtual e anexe o novo certificado SSL + caminho e nomes da chave.

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

As definições de Hosts Virtuais devem terminar antes das três últimas instruções.

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

9. Após terminar de editar o arquivo Virtual Host, reinicie o serviço Apache e direcione seu navegador para seu domínio usando o protocolo HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Usando este procedimento, você pode adicionar sites SSL com seus próprios certificados e chaves usando Apache Virtual Hosts. Para remover hosts virtuais SSL, comente ou exclua suas diretivas incluídas em no arquivo /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Etapa 3: ativar a interface CGI

O CGI (Common Gateway Interface) permite que o Apache interaja com programas externos, consistindo principalmente em scripts Perl ou BASH, que podem adicionar conteúdo dinâmico ao seu site.

10. Antes de ativar o gateway CGI certifique-se de que o Apache foi compilado com suporte de sinalizadores de módulos USE CGI no arquivo make.conf do Portage: cgi cgid . Para ativar o suporte GCI para Apache, abra o arquivo /etc/conf.d/apache2 e anexe o módulo CGI na linha APACHE2_OPTS.

sudo nano /etc/conf.d/apache2

Certifique-se de que esta linha tenha conteúdo semelhante.

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

11. Depois que os módulos CGI forem habilitados, abra o host de definição do site que você deseja habilitar a interface CGI e adicione o seguinte conteúdo dentro das diretivas do 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. Se você tiver um diretório dentro do caminho DocumentRoot (/var/www/gentoo.lan/) que contém scripts CGI, você pode ativar apenas esse diretório para servir Perl dinâmico ou scripts 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. Para SSI (Server Side Includeds), anexe a instrução +Includes em Options e adicione a extensão de arquivo .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. Para testar alguns scripts simples .cgi e .pl no gateway Apache CGI, crie os seguintes scripts dentro de seu Virtual Host DocumentRoot ( /var/www/gentoo.lan/).

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

Adicione o seguinte conteúdo Perl.

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

Adicione o seguinte conteúdo Bash.

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

15. Depois que os arquivos forem criados, torne-os executáveis, reinicie o daemon Apache e aponte seu navegador para os seguintes URLs.

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

Agora você pode transformar o Gentoo em uma poderosa plataforma de hospedagem Web com configurações de ajuste fino para o desempenho do seu sistema e controle máximo sobre todo o seu ambiente.