Apache: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
= Apache Server = | |||
== Instalar o | Servidor de Páginas Web Open Source que se caracteriza por trabalhar de forma modular ele tem a capacidade de hospedar vários sites de forma simultânea. | ||
== Instalar o Apache2 == | |||
Atualize os repositórios e o sistema. | Atualize os repositórios e o sistema. | ||
Linha 10: | Linha 13: | ||
apt install apache2 apache2-data apache2-doc apache2-utils apachetop http-icons -y | apt install apache2 apache2-data apache2-doc apache2-utils apachetop http-icons -y | ||
Permissões para o | Conferir se o Firewall do sistema está habilitado | ||
ufw status | |||
Caso esteja habilitado, libere as portas '''80''' e '''443''' | |||
ufw allow 80 | |||
ufw allow 443 | |||
Permissões para o usuário. | |||
adduser $USER www-data | adduser $USER www-data | ||
Linha 83: | Linha 95: | ||
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt | openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt | ||
O comando acima cria a chave '''/etc/ssl/private/apache-selfsigned.key''' e o certificado '''/etc/ssl/certs/apache-selfsigned.crt'''. Esses dois arquivos serão inseridos nas configurações do apache em '''/etc/apache2/sites-available/ | onde: | ||
* '''openssl''': esta é a ferramenta de linha de comando básica para criar e gerenciar certificados, chaves e outros arquivos OpenSSL. | |||
* '''req''': este subcomando especifica o uso do gerenciamento de solicitação de assinatura de certificado (CSR) X.509. O “X.509” é um padrão de infraestrutura de chave pública ao qual SSL e TLS aderem para seu gerenciamento de chave e certificado. Para criar um novo certificado X.509, use este subcomando. | |||
* '''-x509''': Isso modifica ainda mais o subcomando anterior informando ao utilitário para criar um certificado autoassinado em vez de gerar uma solicitação de assinatura de certificado, como normalmente aconteceria. | |||
* '''-nodes''': Isso informa ao OpenSSL para ignorar a opção de proteger o certificado com uma senha. O Apache precisa ser capaz de ler o arquivo, sem intervenção do usuário, quando o servidor for inicializado. Uma senha impediria que isso acontecesse porque os usuários teriam que inseri-la após cada reinicialização. | |||
* '''-days 365''': Esta opção define o período de tempo que o certificado será considerado válido. Neste caso, é definido por um ano. | |||
* '''-newkey rsa''': 2048 : especifica que você deseja gerar um novo certificado e uma nova chave ao mesmo tempo. A chave necessária para assinar o certificado não foi criada em uma etapa anterior, portanto, ela precisa ser criada junto com o certificado. A rsa:2048parte diz para criar uma chave RSA com 2048 bits de comprimento. | |||
* '''-keyout''': Esta linha informa ao OpenSSL onde colocar o arquivo de chave privada gerado que está sendo criado. | |||
* '''-out''': Isso informa ao OpenSSL onde colocar o certificado que está sendo criado. | |||
O retorno do comando acima lhe será perguntado algumas informações provenientes de quem está criando o certificado. Preencha os campos cnforme o exemplo abaixo: | |||
<pre> | |||
Country Name (2 letter code) [AU]:BR | |||
State or Province Name (full name) [Some-State]:# Estado | |||
Locality Name (eg, city) []:# Cidade | |||
Organization Name (eg, company) [Internet Widgits Pty Ltd]:# O nome da sua empresa ou projeto. | |||
Organizational Unit Name (eg, section) []:# Setor da sua empresa ou projeto. | |||
Common Name (e.g. server FQDN or YOUR name) []: # Nome do seu site (seusite.com.br) | |||
Email Address []:# [email protected] | |||
</pre> | |||
O comando acima cria a chave '''/etc/ssl/private/apache-selfsigned.key''' e o certificado '''/etc/ssl/certs/apache-selfsigned.crt'''. Esses dois arquivos serão inseridos nas configurações do apache em '''/etc/apache2/sites-available/seusite.com.br.conf'''. | |||
Você pode coferí-los listando a pasta. | Você pode coferí-los listando a pasta. | ||
Linha 140: | Linha 174: | ||
reboot | reboot | ||
== Restrição por senha == | |||
Atualizar | |||
sudo apt update | |||
Instalaçao do resurso do apache. | |||
sudo apt install apache2-utils -y | |||
Criando o usuário e a senha de acesso ao diretório. | |||
sudo htpasswd -c /etc/apache2/.htpasswd usuario | |||
Para visualizar o arquivo: | |||
cat /etc/apache2/.htpasswd | |||
Abra o arquivo de Host Virtual do site: | |||
sudo vim /etc/apache2/sites-enabled/dominio.com.br.conf | |||
Nele, insira as seguintes instruções: | |||
<pre> | |||
<Directory "/var/www/html"> | |||
AuthType Basic | |||
AuthName "Restricted Content" | |||
AuthUserFile /etc/apache2/.htpasswd | |||
Require valid-user | |||
</Directory> | |||
</pre> | |||
O arquivo deverá ficar semelhante a esse: | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerAdmin webmaster@localhost | |||
DocumentRoot /var/www/html | |||
ErrorLog ${APACHE_LOG_DIR}/error.log | |||
CustomLog ${APACHE_LOG_DIR}/access.log combined | |||
<Directory "/var/www/html"> | |||
AuthType Basic | |||
AuthName "Restricted Content" | |||
AuthUserFile /etc/apache2/.htpasswd | |||
Require valid-user | |||
</Directory> | |||
</VirtualHost> | |||
</pre> | |||
Para garantir que as configurações estão corretas: | |||
sudo apache2ctl configtest | |||
Deverá retornar algumas informações, mas a mais importante é <code>Syntax OK</code>. | |||
Agora reinicie o apache | |||
sudo systemctl restart apache2 | |||
sudo systemctl status apache2 | |||
Agora, crie o arquivo <code>.htaccess</code> no diretorio que será restrito. | |||
sudo vim /var/www/html/pasta_restrita | |||
Insira estas instruções no arquivo: | |||
<pre> | |||
AuthType Basic | |||
AuthName "Restricted Content" | |||
AuthUserFile /etc/apache2/.htpasswd | |||
Require valid-user | |||
</pre> | |||
Reinicie novamente o apache | |||
sudo systemctl restart apache2 | |||
sudo systemctl status apache2 | |||
== Fonte == | |||
https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-18-04-pt |
Edição atual tal como às 18h59min de 16 de setembro de 2024
Apache Server[editar | editar código-fonte]
Servidor de Páginas Web Open Source que se caracteriza por trabalhar de forma modular ele tem a capacidade de hospedar vários sites de forma simultânea.
Instalar o Apache2[editar | editar código-fonte]
Atualize os repositórios e o sistema.
apt update ; apt upgrade -y
Instala o apache
apt install apache2 apache2-data apache2-doc apache2-utils apachetop http-icons -y
Conferir se o Firewall do sistema está habilitado
ufw status
Caso esteja habilitado, libere as portas 80 e 443
ufw allow 80 ufw allow 443
Permissões para o usuário.
adduser $USER www-data adduser $USER sudo adduser $USER root
Setando permissões na pasta host.
chmod -R 775 /var/www/*
Criar a pasta que vai abrigar os arquivos do site.
mkdir /var/www/seusite.com.br mkdir /var/www/seusite.com.br/public_html
Copie o arquivo index para a pasta criada
cp -rv /var/www/html/index.html /var/www/seusite.com.br/public_html/
Host Virtual[editar | editar código-fonte]
Acesse a pasta das configurações do apache server.
cd /etc/apache2/sites-available/
Copie o arquivo padrão 000-default.conf com o nome do seu site e a extensão .conf.
cp -rv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/seusite.com.br.conf
Edite o arquivo /etc/apache2/sites-available/seusite.com.br.conf.
vim /etc/apache2/sites-available/seusite.com.br.conf
O arquivo vai estar com a configuração default. Edite-o para que ele redirecione ao endereço do site, conforme as instruções abaixo.
<VirtualHost *:80> ServerAdmin [email protected] ServerName seusite.com.br DocumentRoot /var/www/seusite.com.br/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Após editar o arquivo, habilite o site.
a2ensite seusite.com.br.conf
Desabilite o site padrão.
a2dissite 000-default.conf
Restart no apache
systemctl reload apache2 ; systemctl restart apache2 ; systemctl status apache2
Certificado SSL[editar | editar código-fonte]
Para habilitar o mod de SSL.
a2enmod ssl
Agora chegou a hora de gerar o certificado.
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
onde:
- openssl: esta é a ferramenta de linha de comando básica para criar e gerenciar certificados, chaves e outros arquivos OpenSSL.
- req: este subcomando especifica o uso do gerenciamento de solicitação de assinatura de certificado (CSR) X.509. O “X.509” é um padrão de infraestrutura de chave pública ao qual SSL e TLS aderem para seu gerenciamento de chave e certificado. Para criar um novo certificado X.509, use este subcomando.
- -x509: Isso modifica ainda mais o subcomando anterior informando ao utilitário para criar um certificado autoassinado em vez de gerar uma solicitação de assinatura de certificado, como normalmente aconteceria.
- -nodes: Isso informa ao OpenSSL para ignorar a opção de proteger o certificado com uma senha. O Apache precisa ser capaz de ler o arquivo, sem intervenção do usuário, quando o servidor for inicializado. Uma senha impediria que isso acontecesse porque os usuários teriam que inseri-la após cada reinicialização.
- -days 365: Esta opção define o período de tempo que o certificado será considerado válido. Neste caso, é definido por um ano.
- -newkey rsa: 2048 : especifica que você deseja gerar um novo certificado e uma nova chave ao mesmo tempo. A chave necessária para assinar o certificado não foi criada em uma etapa anterior, portanto, ela precisa ser criada junto com o certificado. A rsa:2048parte diz para criar uma chave RSA com 2048 bits de comprimento.
- -keyout: Esta linha informa ao OpenSSL onde colocar o arquivo de chave privada gerado que está sendo criado.
- -out: Isso informa ao OpenSSL onde colocar o certificado que está sendo criado.
O retorno do comando acima lhe será perguntado algumas informações provenientes de quem está criando o certificado. Preencha os campos cnforme o exemplo abaixo:
Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:# Estado Locality Name (eg, city) []:# Cidade Organization Name (eg, company) [Internet Widgits Pty Ltd]:# O nome da sua empresa ou projeto. Organizational Unit Name (eg, section) []:# Setor da sua empresa ou projeto. Common Name (e.g. server FQDN or YOUR name) []: # Nome do seu site (seusite.com.br) Email Address []:# [email protected]
O comando acima cria a chave /etc/ssl/private/apache-selfsigned.key e o certificado /etc/ssl/certs/apache-selfsigned.crt. Esses dois arquivos serão inseridos nas configurações do apache em /etc/apache2/sites-available/seusite.com.br.conf.
Você pode coferí-los listando a pasta.
ls -lha /etc/ssl/certs/
Ou dando um cat neles.
cat /etc/ssl/certs/apache-selfsigned.crt cat /etc/ssl/private/apache-selfsigned.key
Para configurar a chave e o certificado, edite o arquivo .conf correto.
vim /etc/apache2/sites-available/seusite.com.br.conf
A configuração deve ser similar a essa:
<VirtualHost *:443> ServerAdmin [email protected] ServerName seusite.com.br DocumentRoot /var/www/seusite.com.br/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on # Aqui você insere o caminho absoluto do certificado. SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt # Aqui você insere a chave. SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key <FilesMatch "\.(?:cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> </VirtualHost>
Reinicie o sistema
reboot
Restrição por senha[editar | editar código-fonte]
Atualizar
sudo apt update
Instalaçao do resurso do apache.
sudo apt install apache2-utils -y
Criando o usuário e a senha de acesso ao diretório.
sudo htpasswd -c /etc/apache2/.htpasswd usuario
Para visualizar o arquivo:
cat /etc/apache2/.htpasswd
Abra o arquivo de Host Virtual do site:
sudo vim /etc/apache2/sites-enabled/dominio.com.br.conf
Nele, insira as seguintes instruções:
<Directory "/var/www/html"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory>
O arquivo deverá ficar semelhante a esse:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/html"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> </VirtualHost>
Para garantir que as configurações estão corretas:
sudo apache2ctl configtest
Deverá retornar algumas informações, mas a mais importante é Syntax OK
.
Agora reinicie o apache
sudo systemctl restart apache2 sudo systemctl status apache2
Agora, crie o arquivo .htaccess
no diretorio que será restrito.
sudo vim /var/www/html/pasta_restrita
Insira estas instruções no arquivo:
AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user
Reinicie novamente o apache
sudo systemctl restart apache2 sudo systemctl status apache2