<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Servizo_HTTP</id>
	<title>Servizo HTTP - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Servizo_HTTP"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Servizo_HTTP&amp;action=history"/>
	<updated>2026-10-21T09:44:11Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Servizo_HTTP&amp;diff=18185&amp;oldid=prev</id>
		<title>Arribi: /* Protocolo HTTP */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Servizo_HTTP&amp;diff=18185&amp;oldid=prev"/>
		<updated>2010-05-24T16:59:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Protocolo HTTP&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Características xerais dun servidor web=&lt;br /&gt;
O protocolo HTTP (&amp;#039;&amp;#039;Hypertext Transfer Protocol&amp;#039;&amp;#039;) permite a transferencia de páxinas web entre un servidor web (servidor HTTP) e un navegador (cliente HTTP). É o método máis común de intercambio de información polo que os neófitos, frecuentemente, confúndeno coa totalidade da rede, é dicir, úsano como sinónimo de Internet.&lt;br /&gt;
&lt;br /&gt;
Este protocolo está descrito no RFC 1945 e foi ampliado e modificado po outros, como o RFC 2068, RFC 2069, RFC 2109, RFC 2145, RFC 2169, RFC 2227, RFC 2295, RFC 2296, RFC 2518 e RFC 2585 (entre outros).&lt;br /&gt;
&lt;br /&gt;
O HTTP naceu no 1989 no CERN (Centro Europeo de Investigación Nuclear). A Web xurdiu pola necesidade de lograr que os equipos de investigadores dispersos internacionalmente colaborasen, usando un conxunto sempre cambiante de informes, planos, debuxos, fotos e outros documentos.&lt;br /&gt;
&lt;br /&gt;
A proposta inicial dunha rede (web) de documentos vinculados xurdiu do físico do CERN &amp;#039;&amp;#039;&amp;#039;Tim Berners-Le&amp;#039;&amp;#039;&amp;#039;. O primeiro prototipo estaba baseado só en texto. En decembro de 1991 fíxose unha demostración pública e o desenvolvemento continuou durante o seguinte ano, culminando coa liberación dunha interface gráfica, Mosaic, no ano 1993. Mosaic tivo tanto éxito que, un ano despois, o seu autor, Marc Andreeseen formou a compañía, Netscape Communications Corp.&lt;br /&gt;
&lt;br /&gt;
En 1994, o CERN e o M.I.T. asinaron un acordo para establecer o [http://www.w3c.org World Wide Web Consortium], unha organización adicada ao desenvolvemento da Web, a estandarización de protocolos e o fomento da interoperabilidade entre as instalacións. Berners-Le converteuse no director.&lt;br /&gt;
&lt;br /&gt;
==Funcionamento==&lt;br /&gt;
[[Image:aplicacion6.jpg|right]]O HTTP é un protocolo do nivel de aplicación para a Web. Segue o modelo ou &amp;#039;&amp;#039;&amp;#039;arquitectura cliente/servidor&amp;#039;&amp;#039;&amp;#039;, tal e como se ve na figura. O cliente é un navegador (&amp;#039;&amp;#039;browser&amp;#039;&amp;#039;) que solicita, recibe, e mostra obxectos Web. O servidor Web envía obxectos como resposta ás peticións do cliente. Hai dúas versións do protocolo, o HTTP 1.0, especificada no RFC 1945, e o HTTP 1.1, especificado no RFC 2068.&lt;br /&gt;
&lt;br /&gt;
HTTP &amp;#039;&amp;#039;&amp;#039;utiliza TCP como protocolo de transporte&amp;#039;&amp;#039;&amp;#039;. Os clientes inician conexións TCP (crean un socket) co servidor, no porto 80. Os servidores aceptan conexións TCP dos clientes. Unha vez establecida a conexión intercámbianse mensaxes HTTP (mensaxes do protocolo do nivel de aplicación) entre o cliente (cliente HTTP) e o servidor Web (servidor HTTP). Finalmente, péchase a conexión TCP.&lt;br /&gt;
&lt;br /&gt;
HTTP non ten &amp;#039;&amp;#039;&amp;#039;“estados”&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;stateless&amp;#039;&amp;#039;). Isto quere dicir que o servidor non mantén información sobre solicitudes anteriores dos clientes. Deseñouse así porque os protocolos que manteñen o estado son complexos, xa que hai que manter un histórico do que acontece (estado). Se o cliente ou o servidor fallan pode haber inconsistencias e deberán volver ao estado anterior, co correspondente consumo de recursos.&lt;br /&gt;
&lt;br /&gt;
==Os &amp;#039;&amp;#039;Uniform Resource Locators&amp;#039;&amp;#039;==&lt;br /&gt;
As &amp;#039;&amp;#039;&amp;#039;páxinas Web&amp;#039;&amp;#039;&amp;#039; conteñen &amp;#039;&amp;#039;&amp;#039;obxectos&amp;#039;&amp;#039;&amp;#039;. Os obxectos poden ser ficheiros HTML, imaxes, ficheiros de audio, vídeo, etc. Unha páxina web é un &amp;#039;&amp;#039;&amp;#039;ficheiro HTML base&amp;#039;&amp;#039;&amp;#039; que inclúe varias referencias aos obxectos. A cada obxecto accédese mediante un &amp;#039;&amp;#039;&amp;#039;URL&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;Uniform Resource Locator&amp;#039;&amp;#039;) que ten a seguinte forma:&lt;br /&gt;
[[Image:aplicacion5.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Diante do nome da máquina, normalmente inclúese o protocolo que permite o acceso ao recurso, como por exemplo, &amp;lt;code&amp;gt;http://&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ftp://&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;smb://&amp;lt;/code&amp;gt;, etc.&lt;br /&gt;
&lt;br /&gt;
==Conexións simples ou múltiples==&lt;br /&gt;
As conexións HTTP poden ser de dous tipos:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Conexión non persistentes&amp;#039;&amp;#039;&amp;#039;. Nelas, envíase un obxecto como máximo en cada conexión TCP. Para cada nova petición do cliente precísase unha nova conexión TCP. HTTP/1.0 utiliza HTTP non persistente. Por exemplo, se unha páxina Web ten referencias a 10 obxectos, abriranse 10 conexións TCP.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Conexións persistentes&amp;#039;&amp;#039;&amp;#039;. Envíanse varios obxectos nunha única conexión TCP entre o cliente e o servidor. HTTP/1.1 utiliza conexións persistentes por defecto. As conexións persistentes supoñen menos sobrecarga para o SO xa que os navegadores non abren varias conexións TCP paralelas para conseguir os obxectos referenciados. O servidor deixa a conexión TCP aberta despois de enviar unha resposta, xa que logo, as mensaxes HTTP entre o mesmo cliente e servidor usan a mesma conexión TCP.&lt;br /&gt;
&lt;br /&gt;
=Protocolo HTTP=&lt;br /&gt;
En HTTP hai mensaxes de &amp;#039;&amp;#039;&amp;#039;solicitude&amp;#039;&amp;#039;&amp;#039; e mensaxes &amp;#039;&amp;#039;&amp;#039;resposta&amp;#039;&amp;#039;&amp;#039;. Ambas as dúas mensaxes están en formato ASCII, polo que poden verse e lerse se capturamos unha sesión HTTP cun analizador de rede como, por exemplo, o [http://www.wireshark.org Wireshark].&lt;br /&gt;
==Solicitudes==&lt;br /&gt;
Unha mensaxe HTTP de solicitude ten o seguinte formato:&lt;br /&gt;
[[Image:aplicacion7.jpg|center]]&lt;br /&gt;
Se queremos facer unha solicitude de envío de datos (por exemplo, cando facemos unha consulta nun buscador enviámoslle ao servidor a palabra a buscar, ou cando enviamos un formulario) podemos usar dous métodos:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Método POST&amp;#039;&amp;#039;&amp;#039;, no que os datos se envían ao servidor dentro da mensaxe de solicitude HTTP.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Método URL&amp;#039;&amp;#039;&amp;#039;, tamén chamado método GET, no que os datos se envía na URL da liña de solicitude, por exemplo &amp;lt;code&amp;gt;www.unsite.com/buscaAnimal?mono&amp;amp;banana&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dependendo da versión do protocolo que se use están soportadas distintas mensaxes HTTP (tamén coñecidas como métodos):&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Para HTTP 1.0&amp;#039;&amp;#039;&amp;#039;: están soportadas as mensaxes &amp;#039;&amp;#039;&amp;#039;GET&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;POST&amp;#039;&amp;#039;&amp;#039; xa vistas. Tamén está soportada a mensaxe &amp;#039;&amp;#039;&amp;#039;HEAD&amp;#039;&amp;#039;&amp;#039; que só devolve a cabeceira, non o obxecto referenciado&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Para HTTP 1.1&amp;#039;&amp;#039;&amp;#039;: están soportadas as tres mensaxes anteriores e tamén &amp;#039;&amp;#039;&amp;#039;PUT&amp;#039;&amp;#039;&amp;#039;, que permite subir o ficheiro especificado no URL ao servidor, e &amp;#039;&amp;#039;&amp;#039;DELETE&amp;#039;&amp;#039;&amp;#039;, que permite borrar o ficheiro especificado no  URL.&lt;br /&gt;
&lt;br /&gt;
==Respostas==&lt;br /&gt;
As mensaxes HTTP de resposta teñen un formato similar ás de solicitude:&lt;br /&gt;
[[Image:aplicacion8.jpg|center]]&lt;br /&gt;
As mensaxes de resposta inclúen un código dependendo do significado da mesma. Dito código vai na primeira liña da mensaxe (liña de estado). Algúns exemplos son os seguintes:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
200 OK&lt;br /&gt;
  Solicitude correcta, envíarase o obxecto solicitado nesta mensaxe&lt;br /&gt;
&lt;br /&gt;
301 Moved Permanently&lt;br /&gt;
  Obxecto solicitado noutro URL, especifícase a nova localización nesta mensaxe (Location:)&lt;br /&gt;
&lt;br /&gt;
400 Bad Request&lt;br /&gt;
  Mensaxe non entendida polo servidor&lt;br /&gt;
&lt;br /&gt;
404 Not Found&lt;br /&gt;
  Obxecto solicitado non atopado no servidor&lt;br /&gt;
&lt;br /&gt;
505 HTTP Version Not Supported&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==As cookies==&lt;br /&gt;
[[Image:aplicacion9.jpg|right]]Dixemos que HTTP é un protocolo sen estado. Isto, ás veces, pode non ser o desexado. Por exemplo, supoñamos que temos unha web na que as súas páxinas están restrinxidas a determinados usuarios. Se non mantemos o estado do cliente teremos que estar solicitándolle para cada páxina que queira ver o seu nome de usuario e clave. HTTP resolve este escenario coas cookies.&lt;br /&gt;
&lt;br /&gt;
As cookies están definidas no RFC 2109 e permiten monitorizar a navegación do usuario. Moitos sites usan cookies. Son útiles, por exemplo, para validar un usuario, escoller opcións personalizadas (idioma, etc.), rexistrar hábitos de navegación, etc. Están formadas por catro compoñentes:&lt;br /&gt;
#Liña de cabeceira da cookie na resposta HTTP.&lt;br /&gt;
#Liña de cabeceira da cookie na solicitude HTTP.&lt;br /&gt;
#Ficheiro que se mantén no computador do cliente, xestionado polo navegador.&lt;br /&gt;
#Base de datos no servidor.&lt;br /&gt;
Un exemplo de funcionamento das cookies podémolo ver na figura.&lt;br /&gt;
&lt;br /&gt;
=Instalación e configuración do cliente HTTP=&lt;br /&gt;
=Instalación e configuración do servidor Web=&lt;br /&gt;
Apache, dispoñible tanto para Linux como para Windows, é o servidor web mais utilizado hoxe en día. Actualmente, o servidor Apache está na versión 2.0 (paquete apache2) . En GNU/Linux, o servidor apache correspóndese co servizo httpd. Está deseñado cunha estrutura baseada en módulos, de tal xeito que ademais do servidor existen diferentes módulos que lle engaden diversas capacidades.&lt;br /&gt;
&lt;br /&gt;
==Instalación==&lt;br /&gt;
Para instalar Apache hai que teclear o seguinte (hai que ter configurada correctamente a rede para poder acceder aos repositorios):&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install apache2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para verificar que o servizo se está executando (de momento, coas opcións por defecto) pódese teclear:&lt;br /&gt;
&amp;lt;pre&amp;gt;netstat -tl&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ou ben:&lt;br /&gt;
&amp;lt;pre&amp;gt;ps aux | grep apache&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tamén se pode abrir un navegador e teclear na barra de direccións &amp;lt;code&amp;gt;http://localhost&amp;lt;/code&amp;gt; para ver a páxina de proba do servidor. As páxinas que se mostran no servidor por defecto atópanse no directorio &amp;lt;code&amp;gt;/var/www/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Configuración xeral==&lt;br /&gt;
Igual que o vsFTPD crea un usuario FTP, Apache crea un usuario por defecto que é o www-data.  &lt;br /&gt;
&lt;br /&gt;
O ficheiro principal de configuración do servidor Apache é &amp;lt;code&amp;gt;/etc/apache2/apache2.conf&amp;lt;/code&amp;gt; e contén moitas directivas que determinan o seu comportamento. A información de cada unha está explicada no propio ficheiro de configuración. Se non se entende algún parámetro existe abundante [http://httpd.apache.org/docs/2.2/ documentación en liña]. Outros ficheiros importantes de configuración son:&lt;br /&gt;
&lt;br /&gt;
* /etc/apache2/httpd.conf&lt;br /&gt;
* /etc/apache2/sites-available/default (permite crear hosts virtuais)&lt;br /&gt;
* /etc/apache2/ports.conf (permite cambiar os portos de escoita do Apache)&lt;br /&gt;
&lt;br /&gt;
Antes de modificar un ficheiro de configuración convén facer unha copia de seguridade. Para que cada un dos cambios que se fagan nos parámetros hai que reiniciar o servidor, ou mellor aínda, en lugar de reinicialo, simplemente indicarlle que relea a nova configuración mediante o seguinte comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo /etc/init.d/apache2 force-reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hosts virtuais==&lt;br /&gt;
Tal e como está configurado por defecto o Apache servirá un único sitio Web de xeito anónimo. Isto non é o habitual, xa que teríamos que ter un servidor para cada Web que quixeramos servir. Existen dúas formas de configurar Apache coa finalidade de servir diferentes sitios Web:&lt;br /&gt;
&lt;br /&gt;
*Hosts virtuais baseados en direccións IP&lt;br /&gt;
*Hosts virtuais baseados en nomes&lt;br /&gt;
===Hosts virtuais baseados en direccións IP===&lt;br /&gt;
A directiva &amp;lt;code&amp;gt;&amp;lt;VirtualHost&amp;gt;&amp;lt;/VirtualHost&amp;gt;&amp;lt;/code&amp;gt;, no ficheiro &amp;lt;code&amp;gt;/etc/apache2/sites-available&amp;lt;/code&amp;gt; fai crer ao usuario que se conecta a unha Web mediante unha dirección IP (ou un nome de dominio) co navegador que accede a diferentes servidores pero realmente están todos nunha única máquina. Por exemplo, para incluír tres sitios Web servidos a través de tres direccións IP distintas incluiríamos no ficheiro anterior a seguinte información:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# www.web1.gal &lt;br /&gt;
&amp;lt;VirtualHost 192.168.1.100&amp;gt; &lt;br /&gt;
	DocumentRoot /var/www/web1/ &lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
# www.web2.gal &lt;br /&gt;
&amp;lt;VirtualHost 192.168.1.101&amp;gt; &lt;br /&gt;
	DocumentRoot /var/www/web2/ &lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
# www.web3.gal &lt;br /&gt;
&amp;lt;VirtualHost 192.168.1.102&amp;gt; &lt;br /&gt;
	DocumentRoot /var/www/web3/ &lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así teriamos os tres sitios Web executándose no porto 80 pero se o que se quere é que a primeira das Webs estea accesible nos portos 80 e 2000, a segunda nos portos 80 e 2001 e a terceira nos portos 80 e 2002, habería que modificar o ficheiro &amp;lt;code&amp;gt;/etc/apache2/ports.conf&amp;lt;/code&amp;gt; para que a directiva &amp;lt;code&amp;gt;listen&amp;lt;/code&amp;gt; teña os seguintes valores:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 192.168.1.100:80 &lt;br /&gt;
Listen 192.168.1.100:2000&lt;br /&gt;
&lt;br /&gt;
Listen 192.168.1.101:80 &lt;br /&gt;
Listen 192.168.1.101:2001 &lt;br /&gt;
&lt;br /&gt;
Listen 192.168.1.102:80 &lt;br /&gt;
Listen 192.168.1.102:2002 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Hosts virtuais baseados en nomes===&lt;br /&gt;
Unha alternativa á práctica anterior é a configuración de hosts virtuais baseados en nome. Esta opción permite a Apache servir diferentes sitios Web cunha única dirección IP, distinguindo entre eles mediante un nome de dominio diferente. Para iso, úsase a directiva &amp;lt;code&amp;gt;NameVirtualHost dirección IP&amp;lt;/code&amp;gt; para facer crer ao usuario que teclea un nome de dominio no navegador que accede a diferentes servidores, pero realmente están todos nunha única IP.&lt;br /&gt;
&lt;br /&gt;
Para incluír a directiva hai que editar o ficheiro de configuración &amp;lt;code&amp;gt;/etc/apache2/sites-available/default&amp;lt;/code&amp;gt;. O seguinte é un exemplo para tres sitios web:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Páxina de inicio por defecto&lt;br /&gt;
DirectoryIndex  inicio.html &lt;br /&gt;
&lt;br /&gt;
#Dirección IP do host virtual (virtualización por nome)&lt;br /&gt;
NameVirtualHost 192.168.1.200 &lt;br /&gt;
&lt;br /&gt;
#www.meusitioweb1.gal&lt;br /&gt;
&amp;lt;VirtualHost 192.168.1.200&amp;gt; &lt;br /&gt;
        DocumentRoot    /var/www/meusitioweb1/ &lt;br /&gt;
        ServerName      www.meusitioweb1.gal &lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#www.meusitioweb2.gal&lt;br /&gt;
&amp;lt;VirtualHost 192.168.1.200&amp;gt; &lt;br /&gt;
        DocumentRoot    /var/www/meusitioweb2/ &lt;br /&gt;
        ServerName      www.meusitioweb2.gal &lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#www.meusitioweb3.gal&lt;br /&gt;
&amp;lt;VirtualHost 192.168.1.200&amp;gt; &lt;br /&gt;
        DocumentRoot /var/www/meusitioweb3/ &lt;br /&gt;
        ServerName      www.meusitioweb3.gal &lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Acceso mediante clave==&lt;br /&gt;
En ocasións pode interesarnos restrinxir o acceso a un sitio Web (ou a unha determinada carpeta do sitio Web). &lt;br /&gt;
&lt;br /&gt;
Hai que ter en conta que a funcionalidade do servidor Apache depende dos módulos que teña cargados. Os módulos básicos relacionados co control de acceso son &amp;lt;code&amp;gt;mod_auth&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;mod_access&amp;lt;/code&amp;gt;, ambos cargados por defecto co servidor.&lt;br /&gt;
&lt;br /&gt;
===Restrición de acceso a usuarios===&lt;br /&gt;
As restricións de acceso se realizan sobre o contido de directorios. Por iso, existe unha directiva chamada &amp;lt;code&amp;gt;Directory&amp;lt;/code&amp;gt; que conterá outras directivas que afectarán ao acceso ao contido dese directorio. A sintaxe da directiva é a seguinte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Directory ruta do directorio afectado&amp;gt;&lt;br /&gt;
  #Directivas de configuración que afectan ao directorio especificado&lt;br /&gt;
  AuthType        Basic			#Tipo autenticación&lt;br /&gt;
  AuthName        &amp;quot;Acceso restrinxido&amp;quot;	#Mensaxe informativa&lt;br /&gt;
  AuthUserFile    seguridade/usuarios	#Ruta relativa ao ficheiro&lt;br /&gt;
  Require user    alum1 alum2 alum3	#Lista usuarios permitidos&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para poder facer referencia aos usuarios alum1, alum2 e alum3, do exemplo anterior primeiro hai que crealos e asignarlles unha clave co comando &amp;lt;code&amp;gt;htpasswd&amp;lt;/code&amp;gt;. Para iso pódese teclear o seguinte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo htpasswd -c /etc/apache2/seguridade/usuarios alum1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
O parámetro &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; crea o ficheiro &amp;lt;code&amp;gt;AuthUserFile&amp;lt;/code&amp;gt; onde se almacenan os usuarios autorizados. Polo tanto, só é necesario utilizar ese parámetro a primeira vez. Para crear o resto de usuarios habería que teclear o seguinte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo htpasswd /etc/apache2/seguridade/usuarios alum2&lt;br /&gt;
sudo htpasswd /etc/apache2/seguridade/usuarios alum3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A ruta relativa ao ficheiro &amp;lt;code&amp;gt;seguridade/usuarios&amp;lt;/code&amp;gt; ten en conta a directiva &amp;lt;code&amp;gt;ServerRoot&amp;lt;/code&amp;gt; do ficheiro de configuración do servidor.&lt;br /&gt;
&lt;br /&gt;
Apache tamén ten módulos para validar os usuarios contra unha base de datos ou mediante un servizo de directorio como LDAP, pero hai que ter os módulos correspondentes cargados.&lt;br /&gt;
&lt;br /&gt;
===Restrición de acceso a máquinas===&lt;br /&gt;
Se se quere restrinxir o acceso a unha máquina (ou conxunto de máquinas) utilizaranse as directivas allow e deny. Por exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Allow from 192.168.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tamén se poden usar nomes de dominio:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Allow from iessanclemente.net&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ou unha subrede completa:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Allow from 192.168.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A sintaxe de deny é análoga.&lt;br /&gt;
&lt;br /&gt;
A directiva Order permite combinar as dúas directivas anteriores para que non se interfiran, por exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Order allow deny&lt;br /&gt;
Allow from 192.168.1.100 192.168.1.200&lt;br /&gt;
Deny from all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==HTTP seguro==&lt;br /&gt;
Ata agora, a interacción entre o cliente e o servidor faise en texto claro ou plano. Xa que logo, calquera que analice a rede pode roubar eses datos e entrar no sitio web. Para evitalo podemos establecer comunicacións seguras entre o cliente e o servidor seguindo tres pasos:&lt;br /&gt;
&lt;br /&gt;
#Habilitar o módulo mod_ssl&lt;br /&gt;
#Crear un certificado para o servidor&lt;br /&gt;
#Configurar o HTTPS para que soporte o certificado&lt;br /&gt;
&lt;br /&gt;
===Habilitar o módulo mod_ssl===&lt;br /&gt;
O módulo mod_ssl de Apache2 (vén instalado por defecto pero hai que habilitalo) proporciona a capacidade de encriptar os datos mediante SSL (&amp;#039;&amp;#039;Secure Socket Layer&amp;#039;&amp;#039;). Cando nos queremos conectar a un sitio web con estas características hai que usar o prefixo https:// ao principio do URL, na barra de direccións do navegador. SSL está baseado en criptografía de [http://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica clave pública] ou asimétrica. &lt;br /&gt;
&lt;br /&gt;
En xeral, para habilitar un módulo úsase o comando &amp;lt;code&amp;gt;a2enmod&amp;lt;/code&amp;gt; (&amp;#039;&amp;#039;Apache2 Enable Module&amp;#039;&amp;#039;). Polo tanto, hai que teclear o seguinte para habilitar o módulo mod_ssl:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo a2enmod ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Para que os cambios se apliquen hai que recargar a configuración do Apache2 ou reinicialo.&lt;br /&gt;
&lt;br /&gt;
Nota.- Para instalar calquera módulo de Apache2 úsase a ferramenta apt-get.&lt;br /&gt;
&lt;br /&gt;
===Creación dun certificado===&lt;br /&gt;
Para que HTTPS funcione hai que crear un certificado no servidor. Seguindo os seguinte pasos:&lt;br /&gt;
*Xeneración dunha clave privada para o servidor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo openssl genrsa -des3 -out server.key 1024&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Obterase unha saída similar á seguinte e pedirá unha clave:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Generating RSA private key, 1024 bit long modulus&lt;br /&gt;
&lt;br /&gt;
.++++++&lt;br /&gt;
&lt;br /&gt;
......................++++++&lt;br /&gt;
&lt;br /&gt;
e is 65537 (0x10001)&lt;br /&gt;
&lt;br /&gt;
Enter pass phrase for server.key:&lt;br /&gt;
&lt;br /&gt;
Verifying - Enter pass phrase for server.key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A clave que almacénase no ficheiro server.key.&lt;br /&gt;
&lt;br /&gt;
*Xeneración do ficheiro &amp;#039;&amp;#039;Certificate Signing Request&amp;#039;&amp;#039;, tecleando: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo openssl req -new -key server.key -out server.csr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O ficheiro CSR contén información sobre a entidade que posúe o certificado. Hai que cubrir os datos necesarios.  Se o certificado está asinado por unha entidade de certificación (CA) envíase a esta para que comprobe que os datos son correctos. Neste caso isto non sucederá porque o certificado está asinado por nós mesmos.&lt;br /&gt;
&lt;br /&gt;
*Xeneración do certificado tecleando o seguinte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
O certificado almacenarase no ficheiro server.crt.  &lt;br /&gt;
&lt;br /&gt;
===Configuración do HTTPS===&lt;br /&gt;
Hai que seguir os seguinte pasos:&lt;br /&gt;
#Crear un cartafol, por exemplo,  /etc/apache2/ssl, para almacenar o certificado e a clave.&lt;br /&gt;
#Copiar os ficheiros server.key e server.crt que se xeneraron anteriormente nese cartafol.&lt;br /&gt;
#Engadir as seguintes liñas ao ficheiro /etc/apache2/sites-available/default. Teñen que estar incluídas na sercción VirtualHost de www.esi2.gal, xusto baixo a directiva DocumentRoot.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SSLEngine on&lt;br /&gt;
&lt;br /&gt;
SSLOptions +StrictRequire&lt;br /&gt;
&lt;br /&gt;
SSLCertificateFile /etc/apache2/ssl/server.crt&lt;br /&gt;
SSLCertificateKeyFile /etc/apache2/ssl/server.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Outras configuracións==&lt;br /&gt;
===Soporte para PHP===&lt;br /&gt;
PHP (&amp;#039;&amp;#039;PHP Hypertext Pre-processor&amp;#039;&amp;#039;) é unha linguaxe de programación interpretada, deseñada para a creación de páxinas web dinámicas. Para que Apache sexa capaz de xestionar páxinas web creadas mediante PHP hai que instalar o módulo correspondente tecleando o seguinte: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install php5 libapache2-mod-php5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O módulo PHP5 habilítase automaticamente no Apache2 ao instalalo. Pódese ver comprobando que existen os ficheiros /etc/apache2/mods-enabled/php5.conf e /etc/apache2/mods-enabled/php5.load. Se non fose hai que habilitar o módulo co comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo a2enmod php5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para comprobar a configuración pódese crear un script index.php como o seguinte e configurar Apache2 para que o lea:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print_r (phpinfo());&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===Listado do contido dun directorio===&lt;br /&gt;
Cando se tenta acceder a un directorio, en ausencia dun ficheiro de índice, Apache mostra por defecto o contido do directorio. Se queremos impedir ao usuario ver o contido dun directorio, (bastaría con crear un ficheiro de índice, por exemplo index.html) hai que crear un ficheiro .htaccess no raíz do sitio web que conteña a liña:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Options -Indexes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tamén poderiamos utilizar a directiva DirectoryIndex, que especifica que ficheiros actúan como índice por defecto, e que ficheiro mostrar no caso de que estes non se atopen. Por exemplo a liña:&lt;br /&gt;
&lt;br /&gt;
DirectoryIndex index.php index.html index.htm /prohibido.php&lt;br /&gt;
&lt;br /&gt;
Indicaría ao servidor que debe buscar os ficheiros index.php, index.html ou index.htm, nesa orde, e no caso de non atopar ningún deles, cargar o arquivo prohibido.php.&lt;br /&gt;
===Personalizar as mensaxes de Apache===&lt;br /&gt;
Pódense personalizar as mensaxes do Apache2, xa que están no ficheiro /etc/apache2/apache2.conf. Só hai que descomentar a liña correspondete, por exemplo, a liña ErrorDocument 404 /missing.html para que poña ErrorDocument 404 “Erro: Páxina non localizada neste servidor”.&lt;br /&gt;
&lt;br /&gt;
===XAMMP===&lt;br /&gt;
É un paquete libre que permite instalar o Apache, mysql, phpmyadmin e proftpd de forma fácil. Convén desinstalar os servizos que teñamos dispoñibles antes de instalalo. Máis información no seu sitio web: http://www.apachefriends.org/&lt;br /&gt;
&lt;br /&gt;
-- &amp;#039;&amp;#039;Arribi, novembro 2008&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>Arribi</name></author>
	</entry>
</feed>