Apache: mudanças entre as edições

De RJGS Wiki
Ir para navegação Ir para pesquisar
Criou página com ' == Instalar o apache == 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 Permissões para o usuario. adduser rjgs www-data adduser rjgs sudo adduser rjgs 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/robisonjoel.ddns.net mkdir /var/www/robisonjoel.ddns.n...'
 
Sem resumo de edição
 
(10 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
= Apache Server =


== Instalar o apache ==
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 usuario.
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 rjgs www-data
  adduser $USER www-data
  adduser rjgs sudo
  adduser $USER sudo
  adduser rjgs root
  adduser $USER root


Setando permissões na pasta host.
Setando permissões na pasta host.
Linha 22: Linha 34:
Criar a pasta que vai abrigar os arquivos do site.
Criar a pasta que vai abrigar os arquivos do site.


  mkdir /var/www/robisonjoel.ddns.net
  mkdir /var/www/seusite.com.br
  mkdir /var/www/robisonjoel.ddns.net/public_html
  mkdir /var/www/seusite.com.br/public_html


Copie o arquivo index para a pasta criada
Copie o arquivo index para a pasta criada


  cp -rv /var/www/html/index.html /var/www/robisonjoel.ddns.net/public_html/
  cp -rv /var/www/html/index.html /var/www/seusite.com.br/public_html/


== Host Virtual ==
== Host Virtual ==
Linha 37: Linha 49:
Copie o arquivo padrão '''000-default.conf''' com o nome do seu site e a extensão '''.conf'''.
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/robisonjoel.ddns.net.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/robisonjoel.ddns.net.conf'''.
Edite o arquivo '''/etc/apache2/sites-available/seusite.com.br.conf'''.


  vim /etc/apache2/sites-available/robisonjoel.ddns.net.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.
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.
Linha 48: Linha 60:
<VirtualHost *:80>
<VirtualHost *:80>


         ServerAdmin rjgsinfo@gmail.com
         ServerAdmin $USERinfo@gmail.com
          
          
         ServerName robisonjoel.ddns.net
         ServerName seusite.com.br


         DocumentRoot /var/www/robisonjoel.ddns.net/public_html
         DocumentRoot /var/www/seusite.com.br/public_html


         ErrorLog ${APACHE_LOG_DIR}/error.log
         ErrorLog ${APACHE_LOG_DIR}/error.log
Linha 63: Linha 75:
Após editar o arquivo, habilite o site.
Após editar o arquivo, habilite o site.


  a2ensite robisonjoel.ddns.net.conf
  a2ensite seusite.com.br.conf


Desabilite o site padrão.
Desabilite o site padrão.
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/robison.ddns.net.conf'''.
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 96: Linha 130:
Para configurar a chave e o certificado, edite o arquivo '''.conf''' correto.
Para configurar a chave e o certificado, edite o arquivo '''.conf''' correto.


  vim /etc/apache2/sites-available/robisonjoel.ddns.net.conf
  vim /etc/apache2/sites-available/seusite.com.br.conf


A configuração deve ser similar a essa:
A configuração deve ser similar a essa:
Linha 103: Linha 137:
<VirtualHost *:443>
<VirtualHost *:443>


         ServerAdmin rjgsinfo@gmail.com
         ServerAdmin $USERinfo@gmail.com


         ServerName robisonjoel.ddns.net
         ServerName seusite.com.br


         DocumentRoot /var/www/robisonjoel.ddns.net/public_html
         DocumentRoot /var/www/seusite.com.br/public_html


         ErrorLog ${APACHE_LOG_DIR}/error.log
         ErrorLog ${APACHE_LOG_DIR}/error.log
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

Fonte[editar | editar código-fonte]

https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-18-04-pt