Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gsr:laboratoare:laborator-07 [2016/12/08 11:27]
alexandru.carp
gsr:laboratoare:laborator-07 [2016/12/08 20:39] (current)
alexandru.carp
Line 1: Line 1:
 ====== Laborator 07: Servicii web ====== ====== Laborator 07: Servicii web ======
  
-Documentatie:​ http://​httpd.apache.org/​docs/​2.2/​+<​note>​Documentatie:​ http://​httpd.apache.org/​docs/​2.2/​</​note>​
  
-==== Instalare Apache si configurari de baza ====+===== Instalare Apache si configurari de baza =====
  
   * Instalati serverul Apache (pachetul **apache2**).   * Instalati serverul Apache (pachetul **apache2**).
Line 9: Line 9:
   * Apoi, verificati functionarea acestuia folosind un browser web. Va veti conecta pe URL-ul http://​localhost   * Apoi, verificati functionarea acestuia folosind un browser web. Va veti conecta pe URL-ul http://​localhost
  
-=== Site default ===+==== Site default ​====
  
   * Asa cum ati observat anterior, serverul Apache serveste in mod implicit un fisier HTML.    * Asa cum ati observat anterior, serverul Apache serveste in mod implicit un fisier HTML. 
Line 19: Line 19:
   * Modificati fisierul gasit anterior astfel incat sa contina mesajul "GSR web services"​.   * Modificati fisierul gasit anterior astfel incat sa contina mesajul "GSR web services"​.
  
-=== Listening ports ===+==== Listening ports ====
  
   * Pe ce port asculta in mod implicit serverul Apache? Investigati folosind ''​netstat''​.   * Pe ce port asculta in mod implicit serverul Apache? Investigati folosind ''​netstat''​.
Line 25: Line 25:
   * Modificati portul astfel incat Apache sa asculte pe 8080.   * Modificati portul astfel incat Apache sa asculte pe 8080.
      * Hint: ''/​etc/​apache2/​ports.conf''​      * Hint: ''/​etc/​apache2/​ports.conf''​
-     * Hint: Nu uitati sa modificati si ''​NameVirtualHost''​+     * Hint: Nu uitati sa modificati si in ''​VirtualHost''​
  
   * Verificati folosind ''​netstat'',​ apoi un browser.   * Verificati folosind ''​netstat'',​ apoi un browser.
Line 32: Line 32:
  
  
-==== Alti clienti HTTP ====+===== Alti clienti HTTP =====
  
 Desi in majoritatea cazurilor folosim un browser in mod grafic pentru a naviga, putem folosi si clienti in mod text (interactiv sau non-interactiv). Acestia sunt utili mai ales in automatizare. Desi in majoritatea cazurilor folosim un browser in mod grafic pentru a naviga, putem folosi si clienti in mod text (interactiv sau non-interactiv). Acestia sunt utili mai ales in automatizare.
  
-=== wget ===+==== wget ====
  
 Un astfel de client in mod text, non-interactiv,​ este **wget**. Un astfel de client in mod text, non-interactiv,​ este **wget**.
Line 42: Line 42:
   * Folositi ''​wget''​ pentru a descarca fisierul ''​index.html''​ servit de Apache. Ca parametru pentru ''​wget''​ veti folosi acelasi URL ca si in browser.   * Folositi ''​wget''​ pentru a descarca fisierul ''​index.html''​ servit de Apache. Ca parametru pentru ''​wget''​ veti folosi acelasi URL ca si in browser.
  
-== Descarcare recursiva ==+=== Descarcare recursiva ​===
  
   * Creati urmatoarea ierarhie de fisiere in ''/​var/​www/​html'':​   * Creati urmatoarea ierarhie de fisiere in ''/​var/​www/​html'':​
Line 62: Line 62:
     * Specificati sa NU fie descarcate fisierele ale caror nume incepe cu ''​index.html''​. Hint: ''​man wget'',​ ''/​reject''​.     * Specificati sa NU fie descarcate fisierele ale caror nume incepe cu ''​index.html''​. Hint: ''​man wget'',​ ''/​reject''​.
  
-== Autentificare folosind wget ==+=== Autentificare folosind wget ===
  
   * Folosind ''​wget''​ incercati sa descarcati ce este la adresa ''​http://​repository.grid.pub.ro/​cs/​gsr/''​.   * Folosind ''​wget''​ incercati sa descarcati ce este la adresa ''​http://​repository.grid.pub.ro/​cs/​gsr/''​.
Line 71: Line 71:
     * Sa faceti ca ''​wget''​ sa va ceara parola. Hint: ''​man wget'',​ ''/​ask-password''​.     * Sa faceti ca ''​wget''​ sa va ceara parola. Hint: ''​man wget'',​ ''/​ask-password''​.
  
-=== netcat (nc) ===+==== netcat (nc) ====
  
 De multe ori, in debugging, este util sa observati sau sa interveniti direct asupra datelor schimbate intre client si server. Un utilitar care ne ajuta in acest scop este **netcat** (comanda ''​nc''​). ​ De multe ori, in debugging, este util sa observati sau sa interveniti direct asupra datelor schimbate intre client si server. Un utilitar care ne ajuta in acest scop este **netcat** (comanda ''​nc''​). ​
Line 87: Line 87:
     * Hint: ''​echo'',​ pipe     * Hint: ''​echo'',​ pipe
  
-==== Userdir ====+===== Userdir ​=====
  
 Server-ul Apache permite utilizatorilor sa serveasca fisiere din propriile directoare home. Fisierele trebuie stocate in ''/​home/​username/​public_html'',​ iar acestea vor fi accesate folosind un URL de forma ''​http://​server/​~username''​. Server-ul Apache permite utilizatorilor sa serveasca fisiere din propriile directoare home. Fisierele trebuie stocate in ''/​home/​username/​public_html'',​ iar acestea vor fi accesate folosind un URL de forma ''​http://​server/​~username''​.
Line 100: Line 100:
     * Incercati din nou sa accesati URL-ul.     * Incercati din nou sa accesati URL-ul.
  
-==== PHP ===+===== PHP ====
  
   * Creati in ''/​var/​www/​html''​ un fisier cu numele ''​index.php''​ care sa contina un cod PHP simplu (de exemplu, sa afiseze un mesaj):   * Creati in ''/​var/​www/​html''​ un fisier cu numele ''​index.php''​ care sa contina un cod PHP simplu (de exemplu, sa afiseze un mesaj):
Line 109: Line 109:
   * Apoi, dintr-un browser in mod grafic incercati sa accesati fisierul ''​index.php''​ de pe server. Ce observati? Script-ul PHP se ruleaza pe server? De ce?   * Apoi, dintr-un browser in mod grafic incercati sa accesati fisierul ''​index.php''​ de pe server. Ce observati? Script-ul PHP se ruleaza pe server? De ce?
  
-  * Instalati pachetul corespunzator modulului PHP pentru Apache (''​libapache2-mod-php5''​).+  * Instalati pachetul corespunzator modulului PHP pentru Apache (''​libapache2-mod-php''​).
   * Verificati ca modulul a fost activat. Hint: ''/​etc/​apache2/​mods-enabled''​.   * Verificati ca modulul a fost activat. Hint: ''/​etc/​apache2/​mods-enabled''​.
   * Accesati din nou fisierul ''​index.php''​. Ce observati acum?   * Accesati din nou fisierul ''​index.php''​. Ce observati acum?
  
-==== Autentificare basic ====+===== Autentificare basic =====
  
 In anumite cazuri, este util sa restrictionam accesul catre anumite directoare ale site-ului. O modalitate este folosind feature-ul de autentificare din protocolul HTTP. In anumite cazuri, este util sa restrictionam accesul catre anumite directoare ale site-ului. O modalitate este folosind feature-ul de autentificare din protocolul HTTP.
Line 129: Line 129:
   * Restartati serviciul Apache si verificati ca incercand sa accesati, din browser, directorul ''​secret'',​ se cere autentificare.   * Restartati serviciul Apache si verificati ca incercand sa accesati, din browser, directorul ''​secret'',​ se cere autentificare.
  
-==== Virtual Hosts ====+===== Virtual Hosts =====
  
-=== Configurare de baza === +==== Configurare de baza ====
- +
-  * Instalati serverul Apache.+
  
   * In ''/​etc/​hosts'',​ adaugati 2 alias-uri, astfel incat host-urile ''​gsr.ro''​ si ''​www.gsr.ro''​ sa fie mapate pe adresa IP ''​127.0.0.1''​   * In ''/​etc/​hosts'',​ adaugati 2 alias-uri, astfel incat host-urile ''​gsr.ro''​ si ''​www.gsr.ro''​ sa fie mapate pe adresa IP ''​127.0.0.1''​
Line 154: Line 152:
     * Fisierele de log pentru acest site vor fi in ''/​var/​log/​apache2/​gsr.ro.log''​ si ''/​var/​log/​apache2/​gsr.ro.err.log'' ​     * Fisierele de log pentru acest site vor fi in ''/​var/​log/​apache2/​gsr.ro.log''​ si ''/​var/​log/​apache2/​gsr.ro.err.log'' ​
  
-<​solution -hidden -en><​code>​+<​code>​
 root@mjolnir:​~#​ mkdir /​var/​www/​html/​gsr.ro root@mjolnir:​~#​ mkdir /​var/​www/​html/​gsr.ro
  
Line 184: Line 182:
         CustomLog /​var/​log/​apache2/​gsr.log combined         CustomLog /​var/​log/​apache2/​gsr.log combined
 </​VirtualHost>​ </​VirtualHost>​
-</code></​solution>+</​code>​
  
   * Activati site-ul ''​gsr.ro''​   * Activati site-ul ''​gsr.ro''​
Line 202: Line 200:
   * Testati accesand adresa ''​http://​gsr.ro''​ intr-un browser.   * Testati accesand adresa ''​http://​gsr.ro''​ intr-un browser.
  
-=== Alias-uri ===+==== Alias-uri ​====
  
   *Vom configura 2 tipuri de alias-uri:   *Vom configura 2 tipuri de alias-uri:
     * Alias-uri pentru partea de domeniu din URL.     * Alias-uri pentru partea de domeniu din URL.
     * Alias-uri pentru partea de cale (path) din URL.     * Alias-uri pentru partea de cale (path) din URL.
 +
 +=== Alias pentru domeniu ===
  
   * Pentru primul tip de alias-uri, configurati Virtual Host-ul ''​gsr.ro''​ astfel incat sa raspunda si la cereri pentru ''​www.gsr.ro''​   * Pentru primul tip de alias-uri, configurati Virtual Host-ul ''​gsr.ro''​ astfel incat sa raspunda si la cereri pentru ''​www.gsr.ro''​
     * Hint: ''​ServerAlias''​     * Hint: ''​ServerAlias''​
   * Testati accesand adresa ''​http://​www.gsr.ro''​ intr-un browser.   * Testati accesand adresa ''​http://​www.gsr.ro''​ intr-un browser.
 +  ​
 +=== Alias pentru URL path ===  ​
   ​   ​
   * Pentru al doilea tip de alias-uri, configurati Virtual Host-ul ''​gsr.ro''​ astfel incat la accesarea adresei ''​http://​gsr.ro/​config''​ sa fie afisat continutul directorului ''/​var/​www/​html/​gsr.ro/​configfiles''​.   * Pentru al doilea tip de alias-uri, configurati Virtual Host-ul ''​gsr.ro''​ astfel incat la accesarea adresei ''​http://​gsr.ro/​config''​ sa fie afisat continutul directorului ''/​var/​www/​html/​gsr.ro/​configfiles''​.
Line 217: Line 219:
   * Testati accesand adresa ''​http://​gsr.ro/​config''​ intr-un browser.   * Testati accesand adresa ''​http://​gsr.ro/​config''​ intr-un browser.
  
-<​solution -hidden -en><​code>​+<​code>​
 root@mjolnir:​~#​ mkdir /​var/​www/​html/​gsr.ro/​configfiles root@mjolnir:​~#​ mkdir /​var/​www/​html/​gsr.ro/​configfiles
  
Line 246: Line 248:
  ... waiting [Fri Jan 27 18:32:58 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts  ... waiting [Fri Jan 27 18:32:58 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts
 . .
-</code></​solution>+</​code>​
  
-=== Redirect ===+==== Redirect ​====
  
   * Configurati site-ul ''​gsr.ro''​ astfel incat la accesarea adresei ''​http://​gsr.ro/​redirect''​ sa fiti redirectati catre ''​http://​ocw.cs.pub.ro/​courses/​gsr''​.   * Configurati site-ul ''​gsr.ro''​ astfel incat la accesarea adresei ''​http://​gsr.ro/​redirect''​ sa fiti redirectati catre ''​http://​ocw.cs.pub.ro/​courses/​gsr''​.
Line 256: Line 258:
   * Testati accesand adresa ''​http://​gsr.ro/​redirect''​ intr-un browser.   * Testati accesand adresa ''​http://​gsr.ro/​redirect''​ intr-un browser.
  
-<​solution -hidden -en><​code>​+<​code>​
 root@mjolnir:​~#​ mkdir /​var/​www/​html/​gsr.ro/​redirect root@mjolnir:​~#​ mkdir /​var/​www/​html/​gsr.ro/​redirect
 root@mjolnir:​~#​ echo "​redirect"​ > /​var/​www/​html/​gsr.ro/​redirect/​index.html root@mjolnir:​~#​ echo "​redirect"​ > /​var/​www/​html/​gsr.ro/​redirect/​index.html
Line 269: Line 271:
  ... waiting [Fri Jan 27 18:41:55 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts  ... waiting [Fri Jan 27 18:41:55 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts
 . .
-</code></​solution>+</​code>​
  
-=== Restrictionarea accesului pe baza adresei IP ===+==== Restrictionarea accesului pe baza adresei IP ====
  
   * Configurati Virtual Host-ul ''​gsr.ro''​ pentru a se permite accesul la acesta **doar** de la adresa ''​127.0.0.1''​.   * Configurati Virtual Host-ul ''​gsr.ro''​ pentru a se permite accesul la acesta **doar** de la adresa ''​127.0.0.1''​.
Line 282: Line 284:
     * Pe sistemul colegului, adaugati o intrare in ''/​etc/​hosts''​ pentru ''​restricted.gsr.ro'',​ care sa se mapeze cu adresa IP a sistemului vostru.     * Pe sistemul colegului, adaugati o intrare in ''/​etc/​hosts''​ pentru ''​restricted.gsr.ro'',​ care sa se mapeze cu adresa IP a sistemului vostru.
  
-<​solution -hidden -en><​code>​ +<​code>​
 root@mjolnir:​~#​ cat /​etc/​apache2/​sites-available/​gsr.ro.conf root@mjolnir:​~#​ cat /​etc/​apache2/​sites-available/​gsr.ro.conf
 <​VirtualHost *:80> <​VirtualHost *:80>
Line 308: Line 309:
  ... waiting [Fri Jan 27 19:27:56 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts  ... waiting [Fri Jan 27 19:27:56 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts
 . .
-</​code></​solution>​ 
-==== SSL / TLS ==== 
- 
-  * Activati modulul SSL pentru Apache. 
-    * Hint: ''​a2enmod''​ 
- 
-  * Pe ce port asculta serverul Apache pentru conexiuni SSL? Inspectati folosind ''​netstat''​. 
-<​solution -hidden -en><​code>​ 
-root@mjolnir:​~#​ netstat -lntp | grep apache 
-tcp        0      0 172.16.7.133:​8080 ​      ​0.0.0.0:​* ​              ​LISTEN ​     7747/​apache2 ​   ​ 
-tcp6       ​0 ​     0 :::80                   :::​* ​                   LISTEN ​     7747/​apache2 ​   ​ 
-tcp6       ​0 ​     0 :::​443 ​                 :::*                    LISTEN ​     7747/​apache2 ​ 
-</​code></​solution>​ 
- 
-  * Activati site-ul default Apache care are suport pentru SSL. 
-    * Hint: ''​ls /​etc/​apache2/​sites-available'',​ ''​a2ensite''​ 
-  * Testati accesand adresa ''​https://​localhost''​ intr-un browser. 
- 
-<​solution -hidden -en><​code>​ 
-root@mjolnir:​~#​ ls /​etc/​apache2/​sites-available/​ 
-default ​ default-ssl ​ gsr.ro ​ sric.ro 
- 
-root@mjolnir:​~#​ a2ensite default-ssl 
-Enabling site default-ssl. 
-To activate the new configuration,​ you need to run: 
-  service apache2 reload 
-</​code></​solution>​ 
- 
-  * In continuare, vom general un certificat self-signed pentru domeniul ''​gsr.ro''​. Vom folosi o cheie pe 2048 de biti. 
-    * Creati directorul ''/​etc/​apache2/​ssl-certs/''​. 
-    * Generati perechea de chei RSA: 
-<​code>​ 
-openssl genrsa -out gsr.ro.key 2048 
 </​code>​ </​code>​
-    * Generati un certificate signing request (CSR), pe baza cheii: 
-<​code>​ 
-openssl req -new -key gsr.ro.key -out gsr.ro.csr 
-</​code>​ 
-    * Creati un certificat self-signed pe baza CSR-ului generat anterior: 
-<​code>​ 
-openssl x509 -req -days 365 -in gsr.ro.csr -signkey gsr.ro.key -out gsr.ro.crt 
-</​code>​ 
-    * Copiati fisierele generate in ''/​etc/​apache2/​ssl-certs/''​ 
- 
-  * Creati un nou Virtual Host pentru domeniul ''​gsr.ro'',​ dar care sa serveasca peste HTTPS. 
-    * Fisierul de configurare va fi ''/​etc/​apache2/​sites-available/​gsr.ro-ssl.conf''​ 
-    * Site-ul va folosi certificatele generate anterior. 
-    * Ca model, puteti folosi fisierul de configurare pentru site-ul default SSL. 
- 
-  * Activati site-ul ''​gsr.ro-ssl''​. 
-  * Testati accesand adresa ''​https://​gsr.ro''​ intr-un browser. 
-    * In browser, inspectati certificatul primit de la server. 
- 
-<​solution -hidden -en><​code>​ 
-root@mjolnir:/​etc/​apache2/​sites-available#​ cat gsr.ro-ssl.conf | grep -v '​^.*#'​ | grep -v '​^$'​ 
-<​IfModule mod_ssl.c>​ 
-<​VirtualHost _default_:​443>​ 
- ServerAdmin webmaster@localhost 
-        ServerName gsr.ro 
-        ServerAlias www.gsr.ro 
- DocumentRoot /​var/​www/​html/​gsr.ro 
- <​Directory /> 
- Options FollowSymLinks 
- AllowOverride None 
- </​Directory>​ 
- <​Directory /​var/​www/​html/​gsr.ro/>​ 
- Options Indexes FollowSymLinks MultiViews 
- AllowOverride None 
- Order allow,deny 
- allow from all 
- </​Directory>​ 
- ScriptAlias /cgi-bin/ /​usr/​lib/​cgi-bin/​ 
- <​Directory "/​usr/​lib/​cgi-bin">​ 
- AllowOverride None 
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch 
- Order allow,deny 
- Allow from all 
- </​Directory>​ 
- ErrorLog ${APACHE_LOG_DIR}/​error.log 
- LogLevel warn 
- CustomLog ${APACHE_LOG_DIR}/​ssl_access.log combined 
- Alias /doc/ "/​usr/​share/​doc/"​ 
- <​Directory "/​usr/​share/​doc/">​ 
- Options Indexes MultiViews FollowSymLinks 
- AllowOverride None 
- Order deny,allow 
- Deny from all 
- Allow from 127.0.0.0/​255.0.0.0 ::1/128 
- </​Directory>​ 
- SSLEngine on 
- SSLCertificateFile ​   /​etc/​apache2/​ssl-certs/​gsr.ro.crt 
- SSLCertificateKeyFile /​etc/​apache2/​ssl-certs/​gsr.ro.key 
- <​FilesMatch "​\.(cgi|shtml|phtml|php)$">​ 
- SSLOptions +StdEnvVars 
- </​FilesMatch>​ 
- <​Directory /​usr/​lib/​cgi-bin>​ 
- SSLOptions +StdEnvVars 
- </​Directory>​ 
- BrowserMatch "MSIE [2-6]" \ 
- nokeepalive ssl-unclean-shutdown \ 
- downgrade-1.0 force-response-1.0 
- BrowserMatch "MSIE [17-9]"​ ssl-unclean-shutdown 
-</​VirtualHost>​ 
-</​IfModule>​ 
- 
- 
-root@mjolnir:/​etc/​apache2/​sites-available#​ a2ensite gsr.ro-ssl 
-Enabling site gsr.ro-ssl. 
-To activate the new configuration,​ you need to run: 
-  service apache2 reload 
- 
-root@mjolnir:/​etc/​apache2/​sites-available#​ /​etc/​init.d/​apache2 restart 
-Restarting web server: apache2[Fri Jan 27 21:13:02 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts 
-[Fri Jan 27 21:13:02 2012] [warn] NameVirtualHost *:443 has no VirtualHosts 
-[Fri Jan 27 21:13:02 2012] [warn] NameVirtualHost *:80 has no VirtualHosts 
- ... waiting [Fri Jan 27 21:13:03 2012] [warn] NameVirtualHost 172.16.7.133:​8080 has no VirtualHosts 
-[Fri Jan 27 21:13:03 2012] [warn] NameVirtualHost *:443 has no VirtualHosts 
-[Fri Jan 27 21:13:03 2012] [warn] NameVirtualHost *:80 has no VirtualHosts 
-. 
-</​code></​solution>​ 
  
-==== mod_rewrite ====+===== mod_rewrite ​=====
  
 Modulul ''​rewrite''​ din Apache permite rescrierea URL-urilor din request-urile HTTP, dupa anumite reguli. Modulul ''​rewrite''​ din Apache permite rescrierea URL-urilor din request-urile HTTP, dupa anumite reguli.
gsr/laboratoare/laborator-07.1481189224.txt.gz · Last modified: 2016/12/08 11:27 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0