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