Anda di halaman 1dari 53

HTTP – HyperText Transport

Protocol

Serviços de Rede – UNATEC

prof: Bruno Roberto V. Castro


bruno.una@gmail.com
Conceitos de HTTP

 É um dos serviços de rede mais populares


do mundo

 A famosa “World Wide Web” é toda baseada


em servidores que são acessados pelo
protocolo HTTP

 Utiliza conexões TCP, na famosa porta 80


Cliente x Servidor HTTP
Tcp 1048

Estação A – “Preciso do Site XXXXX” Tcp 80

Tcp 1048
“Segue o conteúdo solicitado” Tcp 80

Servidor HTTP

Cliente HTTP
Conceitos de HTTP

 O protocolo HTTP é bastante simples, textual


e objetivo

 Baseado nas RFC´s 1945 e 2616

 Seu funcionamento é baseado em


requisições e respostas
Conceitos de HTTP

 Assim como outros serviços de Rede, possui


Cliente e Servidor

 O Cliente HTTP é um Browser


 Internet Explorer
 Mozilla
 Netscape

 Servidores HTTP ou Servidores “WWW”, são


serviços de Redes que irão responder às pesquisas
feitas pelos “Browsers” (clientes).
Tipos de Servidores HTTP

 Linux, Unix e Derivados

 APACHE – www.apache.org – “The Apache


Software Foundation”

 Microsoft

 IIS – Internet Information Server


 IIS versão 6, no Windows 2003
Servidor WEB x Servidor de Aplicação

 Servidores HTTP, são também conhecidos


como Servidores “WEB”

 Porém, quando este Servidor HTTP possui


interatividade com demais aplicações como
ASP, .NET, PHP, Mysql, Sql Server, etc, este
servidor passa a ser um “Servidor de
Aplicação”
As URL´s

 Servidores WWW são em sua maioria sob o


protocolo HTTP

 Os Recursos disponíveis nestes servidores


HTTP são denominados “URL´s – Universal
Reference Locators”
As URL´s

 Um URL, define em completamente em “uma


linha”, um determinado serviço na Internet

 Por exemplo:

http://www.tomahawk.com:80/~missel/index.html
Componentes de uma URL

 protocolo: forma de comunicação usada para


acessar o recurso. Pode ser FTP, HTTP, LDAP, ...
 servidor: nome da máquina que provê o serviço
desejado.
 domínio: complemento do nome do servidor,
especificando em que rede se encontra.
 porta: porta a conectar no servidor. Pode ser
omitida se for a porta default para o serviço
desejado.
 caminho: localização do recurso dentro do servidor.
 recurso: nome do recurso dentro do servidor.
Analisando URL´s

PROTOCOLO
SERVIDOR
DOMÍNIO
PORTA
CAMINHO
RECURSO

http://www.tomahawk.com:80/~missel/index.html
O Protocolo HTTP

 Operando em TCP/80, tem o objetivo de


enviar REQUISIÇÕES (GET)a servidores, na
forma de URL´s (http://).

 E, obter respostas na forma de conteúdos


 Os conteúdos contidos nas respostas de
servidores HTTP, possuem o padrão “MIME”.
Exemplo de uma requisição (solicitação)
HTTP
GET /teste.html HTTP/1.0
Host: 10.1.1.29:80
Accept: text/html, text/plain, image/*,
application/pdf, text/sgml, */*
Accept-Encoding: gzip, compress
Accept-Language: en
User-Agent: Lynx/2.8.5dev.7 libwww-FM/2.14
SSL-MM/1.4.1 OpenSSL/0.9.7
Exemplo de uma Resposta à Solicitação
HTTP
HTTP/1.1 200 OK
Date: Tue, 01 Jun 2004 01:41:08 GMT
Server: Apache/2.0.41 (Debian Linux)
Last-Modified: Tue, 02 Apr 2002 19:49:45 GMT
ETag: "1cds24-35-aba6c840"
Accept-Ranges: bytes
Content-Length: 53
Connection: close
Content-Type: text/html; charset=ISO-8859-1

<html>
<body>
<h1>OPA, No AR!!</h1>
</body>
</html>
Analisando o Tráfego com o “Etherreal”

 A seguir, 3 exemplos de tráfegos HTTP


capturados com analisador de protocolo
Exemplo de GET - Http
Exemplo de Resposta - Http
Exemplo de completo tráfego HTTP com resolução dns
Os PDU´s HTTP

 PDU = Protocol Data Unit

 São os comandos ou os tipos de mensagens


do Protocolo HTTP
PDU´s HTTP
Método Descrição

GET busca um objeto definido por uma URL do servidor

indica que os dados no corpo da consulta devem ser


PUT
armazenados na URL especificada.

Cria um novo objeto ligado ao objeto especificado na URL. Uma


POST URL será alocada pelo servidor e retornada ao cliente.O
conteúdo do novo objeto é o corpo de dados da consulta.

Similar ao método GET, mas retorna somente o cabeçalho da


HEAD
resposta do servidor

Requisita ao servidor que o mesmo apague informações


DELETE
correspondentes à URL
“Status de Retorno” HTTP

 Os Servidores HTTP, possuem códigos


associados à determinados tipos de
respostas, para cada situação

 Uma das mais famosas, é o “404 error –


NOT FOUND”, que é exibida quando
tentamos acessar uma página que não existe
no servidor em questão
Error 404
Principais “Status de Retorno” do protocolo HTTP (RFC 2616)
Categoria descrição Código Descrição
1** Informational 100 Continue
Switching
101
protocols
2** Success 200 Ok
201 Created
202 Accepted
Non-authoritive
203
information
226 IM used
3** Redirection 300 Multiple choices
Moved
301
permanently
Moved
302
temporarily
4** Client error 400 Bad request
401 Unauthorized
402 Payment required
403 Forbidden
404 Not found
Unsupported
415
media type
426 Upgrade Required
Internal server
5** Server error 500
error
501 Not implemented

502 Bad gateway


Service
503
unavailable
HTTP version not
505
supported
O conteúdo das respostas HTTP
 O conteúdo das respostas dos servidores
HTTP seguem o padrão MIME

 Especificados nas RFC´s 2045 a 2048


 Exemplos Mime´s mais comuns:
Tipo MIME Significado
text/plain arquivo de texto puro
text/html arquivo de texto em formato HTML
image/gif arquivo de imagem em formato GIF
image/jpeg arquivo de imagem em formato JPEG
application/pdf arquivo de aplicação em formato PDF
video/quicktime arquivo de vídeo em formato QuickTime
Tipo de MIME
Apache – Serviço HTTP no
Gnu/Linux – www.apache.org

Prof: Bruno Roberto V. Castro


bruno.una@gmail.com
O Serviço Apache

 Apache no Debian 4.0


 Apache 1 (apt-get install apache)
 Apache 2 (apt-get install apache2)

 dpkg –la | grep apache

 Iniciar / Parar Serviço


 /etc/init.d/apache
 /etc/init.d/apache2
O Serviço Apache
 Nome do “Daemon” que irá “rodar”: “httpd”

 Exemplo:
 ps aux | grep apache

root 2173 0.0 0.9 4888 2136 ? Ss Nov10 0:00 /usr/sbin/apache


www-data 3535 0.0 0.6 4888 1376 ? S Nov16 0:00 /usr/sbin/apache
www-data 3536 0.0 0.5 4888 1300 ? S Nov16 0:00 /usr/sbin/apache
www-data 3537 0.0 0.5 4888 1304 ? S Nov16 0:00 /usr/sbin/apache
www-data 3538 0.0 0.5 4888 1300 ? S Nov16 0:00 /usr/sbin/apache
www-data 3539 0.0 0.5 4888 1304 ? S Nov16 0:00 /usr/sbin/apache
www-data 4136 0.0 0.5 4888 1300 ? S Nov18 0:00 /usr/sbin/apache
root 4340 0.0 0.3 2876 764 pts/0 S+ 16:26 0:00 grep apache
Os Principais Arquivos do Apache2
caminhos válidos para o Debian 4.0
 /etc/apache2/apache2.conf: principal arquivo de configuração

 /etc/mime.types : tipos MIME e extensões de arquivos conhecidos pelo servidor

 /var/log/apache2/ : arquivos de logs de acessos e erros

 /var/www/ : diretório principal das páginas locais oferecidas pelo servidor

 /var/www/apache2-default: páginas default do servidor (index.html)


 (É o “DocumentRoot” padrão no Debian 4.0, por causa de um “REDIRECT”)

 /usr/lib/apache2/modules : módulos dinâmicos usados pelo servidor (plugins)

 $HOME/public_html : páginas pessoais de cada usuário


O diretório de configuração do Apache2 no Debian 4.0
“/etc/apache2/”
Os mais utilizados:
 apache2.conf
 É o arquivo PRINCIPAL de configuração
e todos os demais dependem dele.
 ports.conf
 É o arquivo para configuração de portas.
 /sites-enabled/000-default
 É o arquivo de configuração do recurso
de “VIRTUAL HOSTS”. Vem ativado por
padrão, e contendo “1” virtual hosts já
configurado.

Os demais arquivos e diretórios de configuração:


 /sites-enabled/ e /sites-available/
 Ambos são similares e “abrigam” os arquivos de configuração de VIRTUAL HOSTS. Por padrão, existe o arquivo “000-
default”.
 httpd.conf
 Arquivo de configuração secundário, EM BRANCO, apenas para fins de compatibilidade.
 /mods-enabled/ e /mods-available/
 Ambos são similares e são responsáveis por abrigar os módulos do apache2.
 /conf.d/
 Possíveis configurações adicionais (uso opcional)
 envvars
 Configuração opcional de variáveis de ambiente
Configurando o Apache
Principais Parâmetros para se utilizar nos arquivos de configuração

 Listen 80
 Porta padrão que o servidor irá “escutar”

 User www
 Group www
 Usuário e Grupo Padrão que serão utilizados pelo Apache

 DocumentRoot “/var/www”
 É o caminho “Raiz” aonde estará o site principal
hospedado
Configurando o Apache
Principais Parâmetros para se utilizar nos arquivos de configuração

 DirectoryIndex index.html index.html.var


 Arquivos que serão procurados, quando o cliente não
especificar na URL, quem ele gostaria de acessar:
 Ex:
 http://10.0.0.1
 Será exibida a página: http://10.0.0.1/index.html ou
http://10.0.0.1/index.html.var
Arquivos de Saída (LOG´s)

 /var/log/apache2/error_log
 Mensagens de Erro:
 Acessos de Usuários com Erro
 Erros do Serviço

 Ex:
 [Tue May 23 18:13:05 2006] [error] [client 201.165.38.132] File does not
exist: /home/httpd/
 [Tue May 23 18:17:49 2006] [error] [client 201.165.38.132] File does not
exist: /home/httpd/
 [Tue May 23 18:17:49 2006] [error] [client 201.165.38.132] File does not
exist: /home/httpd/
 [Tue May 23 18:18:04 2006] [error] [client 201.165.38.132] File does not
exist: /home/httpd/
 [Tue May 23 18:19:12 2006] [error] [client 201.165.38.132] File does not
exist: /home/httpd/
 [Tue May 23 18:19:12 2006] [error] [client 201.165.38.132] File does not
exist: /home/httpd/
Arquivos de Saída (LOG´s)

 /var/log/apache2/access_log
 Log´s dos acessos e requisições feitas ao Serviço:

 Ex:
201.15.38.132 - - [23/May/2006:19:05:37 +0000] "GET /imagens/visualizar.gif
HTTP/1.0" 200 1429
201.15.38.132 - - [23/May/2006:19:05:37 +0000] "GET /imagens/visualizar2.gif
HTTP/1.0" 200190
201.15.38.132 - - [23/May/2006:19:05:37 +0000] "GET
/imagens/visualizar_html.gif HTTP/1.0"200 629
201.15.38.132 - - [23/May/2006:19:05:37 +0000] "GET
/imagens/visualizar_pdf.gif HTTP/1.0" 200 1039
201.15.38.132 - - [23/May/2006:19:05:37 +0000] "GET /imagens/w.gif
HTTP/1.0" 200 39
201.15.38.132 - - [23/May/2006:19:05:37 +0000] "GET /imagens/wink.gif
HTTP/1.0" 200 586
201.15.38.132 - - [23/May/2006:19:05:37 +0000] "GET /imagens/word.gif
HTTP/1.0" 200 617
Arquivos de Saída (LOG´s)

 /var/log/apache2/ssl_request_log
 Log´s dos acessos e requisições feitas ao Serviço SSL
(criptografado)
 HTTP Seguro:

 [20/Aug/2005:19:34:42 +0000] 222.156.70.45 - - "GET /" 634


 [20/Aug/2005:20:43:18 +0000] 218.175.168.222 - - "GET /" 634
 [20/Aug/2005:20:43:18 +0000] 218.175.168.222 - - "GET /" 634
 [20/Aug/2005:20:43:18 +0000] 218.175.168.222 - - "GET /" 634
 [03/Sep/2005:06:07:51 +0000] 222.156.66.55 - - "GET /" 634
 [03/Sep/2005:06:07:51 +0000] 222.156.66.55 - - "GET /" 634
 [03/Sep/2005:06:07:52 +0000] 222.156.66.55 - - "GET /" 634
 [06/Sep/2005:05:32:21 +0000] 61.129.102.56 - - "GET /" 634
Apache - VirtualHost´s

 VirtualHost, é a capacidade de alocar 2 ou


mais FQDN´s em um mesmo servidor
APACHE.

 Exemplo:
 www.meudominio.com.br , será apontado para
um site “X”
 interno.meudominio.com.br , será apontado para
um site “Y”
Apache - VirtualHost´s

 É possível graças à mensagem de “GET” do


Cliente HTTP

 O Apache irá interpretar esta mensagem e


distinguir diferentes “diretório” na mesma
máquina, para cada “FQDN”
Configurando o VirtualHost´s
“/etc/apache2/sites-enabled/000-default” - Passo 1

#
# Use name-based virtual hosting.
#
#NameVirtualHost *

O parâmetro “NameVirtualHost *”, ATIVA o suporte ao recurso de


VIRTUAL HOSTS, e no APACHE2, vem ativo por padrão
Configurando o VirtualHost´s
“/etc/apache2/sites-enabled/000-default” - Passo 2

 Adicionar quantos Virtuais Hosts forem necessário,


seguindo o padrão:
Mínimo Obrigatório
#<VirtualHost *>
# ServerAdmin webmaster@gmail.com
# DocumentRoot /var/sites/diretorio_que_eu_quero
# ServerName meufqdn.dominio.com.br
# ErrorLog /var/log/apache2/dummy-host.example.com-error_log
# CustomLog /var/log/apache2/dummy-host.example.com-access_log
#</VirtualHost>
Os Principais Parâmetros

 DocumentRoot -> É onde estão armazenadas as


páginas que o apache irá servir
 ServerName -> É o nome do seu servidor
(hostname)
 ServerAdmin -> É o e-mail do administrador do
servidor
 ErrorLog -> É onde serão armazenados os logs de
erro
 TransferLog -> É onde serão armazenados os logs
de acesso
Configurando o VirtualHost´s
“/etc/apache2/sites-enable/000-default”
Ip_do_servidor_apache
<VirtualHost 10.19.40.40:80> ou simplesmente “ * ”

ServerAdmin meuemail@dominio.com
DocumentRoot /srv/www/default/dominio1
ServerName interno.dominio.com
</VirtualHost>
Diretório Root do FQDN que
FQDN desejado esta sendo configurado
Configurando o VirtualHost´s
“/etc/apache2/sites-enable/000-default” - exemplos de 2 domínios diferentes
configurados
<VirtualHost *>
ServerAdmin meuemail@havaianadepau.com.br
DocumentRoot /srv/www/default/
ServerName www.havaianadepau.com.br
</VirtualHost>

<VirtualHost *>
ServerAdmin jaobao@cadeotroco.com.br
DocumentRoot /srv/www/default/cadeotroco
ServerName www.cadeotroco.com.br
</VirtualHost>
O HTTPS (Serviço HTTP Seguro)

 Opera na Porta 443 / TCP

 É baseado em Chaves e Certificados

 O Apache2, vem com suporte habilitado ao


HTTPS
Ativando o Serviço HTTPS no Apache

 Uma vez que você já possui o APACHE2


instalado e funcionando, é necessário
basicamente providenciar 3 coisas:

 1. GERAR ou IMPORTAR um certificado


 2. Habilitar o suporte à SSL do Apache2
 3. Configurar suas opções do HTTPS (SSL)
Ativando o Serviço HTTPS no Apache

 Certifique-se de que os pacotes “openssl” e


“ssl-cert” se encontram instalados juntamente
com o Servidor Apache2.
slot-etch:/etc/apache2# dpkg -la | grep ssl
ii libssl0.9.8 0.9.8c-4etch3 SSL shared libraries
ii openssl 0.9.8c-4etch4 Secure Socket Layer (SSL) binary and related
ii ssl-cert 1.0.14 Simple debconf wrapper for openssl
slot-etch:/etc/apache2#

Para instalar os mesmos, caso já não estejam:

apt-get install openssl ssl-cert


Passo 1: Gerando um Certificado

 Para gerar o seu próprio certificado, é necessário utilizar o aplicativo


“openssl”, utilizando o comando (em uma única linha):

openssl req $@ -new -x509 -days 365 -nodes –out


/etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

 Será gerado um novo certificado em “/etc/apache2/apache.pem”, e


é recomendável protegê-lo por questões de segurança, utilizando a
permissão “600”:

chmod 600 /etc/apache2/apache.pem


Configurando o Certificado
 Ao executar o comando do slide anterior, para gerar o
certificado, será solicitado os dados do mesmo:

Country Name (2 letter code) [AU]:BR


State or Province Name (full name) [Some- State]:MinasGerais
Locality Name (eg, city) []:Belo Horizonte
Organization Name (eg, company) [Ltd]:Nome_empresa
Organizational Unit Name (eg, section) []:MyEmpresa
Common Name (eg, YOUR name) []:MeuNome
Email Address []:root@administrador.com.br
Testando o HTTPS e certificado

 Utilize o “Cliente do SSL”:

openssl s_client -connect servidor.meudominio:443

Coloque o seu FQDN ou seu IP

Se OK, irá aparecer a mensagem de conexão bem sucedida:


 SSL handshake has read 1278 bytes and written 340 bytes
Passo 2: Habilitando o Suporte SSL do
Apache2
 Habilite a porta 443/tcp no arquivos “ports.conf”, seguindo o mesmo
padrão já utilizado para a 80/tcp

 Listen 80
 Listen 443

 Execute o comando “a2enmod ssl” e reinicie o seu apache, para


habilitar o “módulo SSL” do Apache2

 a2enmod ssl
 /etc/init.d/apache2 restart
Passo 3: Configurando o VirtualHost para
trabalhar com HTTPS
 Por último, basta escolher quais “virtualhosts” irão trabalhar com o
HTTPS e adicionar os parâmetros desejados aos mesmos.

 Exemplo de configuração de um virtualhosts com o suporte ao


HTTPS habilitado:

<VirtualHost *:443> Principais


DocumentRoot "/var/www/site2" diferenças!
ServerName www.havaianadepau.com.br
ServerAdmin seu@email.com.br
SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
</VirtualHost>

 Reinicie o seu Apache2


Testando o HTTPS e certificado

 Agora o seu Servidor Apache esta


configurado para HTTP Seguro:

 https://nome.seudominio.com.br

Endereço configurado no seu “VirtualHost”


 Finish Him!

 Bibliografia:
 Douglas Comer – Tcp/IP
 Dominando RedHat Linux9
 Windows 2003 Server – A bíblia
 http://www.ppgia.pucpr.br

Anda mungkin juga menyukai