<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://docbook.org/xml/4.1.2/docbookx.dtd">

<article lang="hu">

<articleinfo>

   <title>Apache-alapú WebDAV szerver, LDAP és SSL szolgáltatásokkal</title>

   <author>
      <firstname>Saqib</firstname>
      <surname>Ali</surname>
      <affiliation>
         <address>
            <email>saqib@seagate.com</email>
	 <otheraddr>
	  <ulink url="http://www.xml-dev.com">Offshore XML/XHTML Development</ulink>
	 </otheraddr>
         </address>
      </affiliation>
   </author>



   <revhistory>
      <revision>
       <revnumber>v4.1.2</revnumber>
         <date>2003.10.17</date>
         <authorinitials>sa</authorinitials>
	 <revremark>
		 Hozzáadva az SSL teljesítménybeállítási fejezet
         </revremark>
       </revision>



       <revision>
        <revnumber>v4.1.1</revnumber>
          <date>2003.09.29</date>
          <authorinitials>sa</authorinitials>
 	 <revremark>
 		 Frissítések az SSL részben, az olvasói visszajelzésekre alapozva.
          </revremark>
       </revision>

       <revision>
	<revnumber>v4.1.0</revnumber>
          <date>2003.09.02</date>
          <authorinitials>sa</authorinitials>
 	 <revremark>
 		 Frissítések az SSL részben, az olvasói visszajelzésekre alapozva.
          </revremark>
       </revision>

    <revision>
      <revnumber>v4.0.2</revnumber>
          <date>2003.08.01</date>
          <authorinitials>sa</authorinitials>
           <revremark>
             Kisebb frissítések az Apache-ot beállító parancssorban. /dev/random hivatkozás az SSL részben.
          </revremark>
       </revision>

      <revision>
      <revnumber>v4.0.1</revnumber>
          <date>2003.07.27</date>
          <authorinitials>sa</authorinitials>
           <revremark>
             Az SSL fejezet további információval bővítve.
          </revremark>
       </revision>

       <revision>
       <revnumber>v4.0</revnumber>
       <date>2002.06.29</date>
         <authorinitials>sa</authorinitials>
          <revremark>
               Frissítve a HOGYAN Apache 2.0.-ra. A doksi forráskódja XML formátumú.
         </revremark>
      </revision>


      <revision>
       <revnumber>v3.4</revnumber>
         <date>2002.06.29</date>
         <authorinitials>sa</authorinitials>
          <revremark>
               Hozzáadva a "Hogyan generáljunk CSR-t" fejezet.
         </revremark>
      </revision>

      <revision>
       <revnumber>v3.3</revnumber>
         <date>2002.04.14</date>
         <authorinitials>sa</authorinitials>
          <revremark>
		Hozzáadva a "WebDAV szerver üzemeltetése" fejezet.
         </revremark>
      </revision>



   </revhistory>

   <abstract>
      <para>
Ez a HOGYAN egy Apache-alapú WebDAV szerver 
telepítését írja le, LDAP-al az azonosításhoz, és SSL-el a titkosításhoz.</para>
   </abstract>
</articleinfo>

<sect1 id="intro"><title>Bevezetés</title>
<para>
Jelen dokumentum célja, hogy felépítsünk egy Apache + MySQL + PHP + WebDAV -alapú webes alkalmazásszervert, amely LDAP szerverek használatával végzi az azonosítást (authentication). A dokumentum felfedi a titkosított LDAP tranzakciókezelés egyes részleteit is. </para>
<note><title>Megjegyzés:</title><para> Ha bármilyen problémával találkozol az Apache 
vagy valamely modul telepítésénél, lépj kapcsolatba velem a  <email>saqib@seagate.com</email> e-mail címen.</para></note>

<sect2><title>Erről a dokumentumról</title>
<para>Ez a dokumentum eredetileg 2001-ben készült. Azóta számos frissítés és bővítés történt. Köszönet minden közreműködőnek a frissítésekért és javításokért.</para>
<para>Eme dokumentum XML kódja megtalálható a <ulink url="http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml">http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml</ulink> webhelyen.</para>
<para>A dokumentum utolsó változata a <ulink url="http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.html">http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.html</ulink> honlapon található.</para>

</sect2>
<sect2><title>Közreműködők</title>
<para>Ha szeretnél közreműködni a HOGYAN karbantartásában, letöltheted az XML kódot a <ulink url="http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml">http://www.xml-dev.com:8080/cocoon/mount/docbook/Apache-WebDAV-LDAP-HOWTO.xml</ulink> webhelyről, és elküldheted a frissített kódot a saqib@seagate.com e-mail címre A SZERZŐK LISTÁJÁBAN ÉS A VÁLTOZÁSOK TÖRTÉNETÉBEN A TE NEVEDDEL :).
Ez megkönnyíti számomra a kapcsolatfelvételt mindazokkal akik frissítették/javították a dokumentumot. Köszönöm.
</para>
</sect2>

<sect2><title>Mi az Apache?</title>
<para>Az Apache egy nyílt forráskódú http szerver modern operációs rendszerekre,  amilyen a UNIX és a Windows NT. Http szolgáltatásokat nyújt a jelenlegi  HTTP szabványoknak megfelelően. </para>
<para>Az Apache szabadon/ingyenesen letölthető a <ulink url="http://httpd.apache.org/">http://httpd.apache.org/</ulink> webhelyről.</para>
</sect2>



<sect2><title>Mi a WebDAV?</title>
<para>A WebDAV egy Web enabled Distributed Authoring and Versioning, vagyis Web
alapú Elosztott Szerzői és Változatnyilvántartó rendszer. Együttműködési környezetet
biztosít azoknak a felhasználóknak, akik szerkesztik/karbantartják egy webszerver fájljait. Technikailag a DAV a http protokoll kiterjesztése.</para>
<para>Íme egy rövid leírás a DAV által biztosított bővítésekről:</para>
<para><emphasis role="bold"> Felülírási védelem:</emphasis> Zárolási és
feloldási mechanizmus az "elveszett frissítés" probléma kiküszöbölésére. A DAV
protokoll mind a megosztott, mind a kizárólagos zárolásokat támogatja.</para>
<para><emphasis role="bold">Tulajdonságok:</emphasis> Meta-adatok (cím,
tárgy, készítő, stb.)</para>
<para><emphasis role="bold">Nevek karbantartása:</emphasis> Fájlok másolása,
átnevezése, mozgatása és törlése.</para>
<para><emphasis role="bold">Hozzáférés-szabályozás (Access Control; AC):</emphasis> A hozzáférés korlátozása bizonyos erőforrásokhoz. Jelenleg a DAV feltételezi az AC meglétét, és nem biztosít túl erős azonosítási mechanizmust.</para>
<para><emphasis role="bold">Változatnyilvántartás:</emphasis> Dokumentumok
revíziójának nyilvántartása. Még nem megvalósított.</para>
</sect2>

<sect2><title>Mi a PHP?</title>
<para>A PHP (rekurzív betűszó "PHP: Hypertext Preprocessor"; "PHP: Hiperszöveg Előfeldolgozó") széleskörűen használt, nyíl forráskódú, általános célú szkript-nyelv, amely különösen Web-es fejlesztéseknél alkalmazható és beágyazható a HTML-be.</para>
<para>A PHP megtalálható a <ulink url="http://www.php.net">http://www.php.net</ulink> webhelyen.</para>
</sect2>

<sect2><title>Mi a MySQL?</title>
<para>A MySQL a legnépszerűbb nyílt forráskódú SQL adatbázis-kezelő, a MySQL AB fejleszti, terjeszti és támogatja.</para>
<para>A MySQL adatbázismotor letölthető a <ulink url="http://www.MySQL.com/">http://www.MySQL.com/</ulink> webhelyről.</para>
</sect2>

<sect2><title>Mire van szükségünk?</title>
<para>
A cél eléréséhez szükséges eszközök:</para>

<orderedlist numeration="lowerroman">
	<listitem><para>C Compiler, például GCC</para></listitem>
	<listitem><para>Apache 2 Web szerver</para></listitem>
	<listitem><para>LDAP Module az Apache-hoz</para></listitem>
	<listitem><para>iPlanet LDAP lib fájlok</para></listitem>
	<listitem><para>SSL motor</para></listitem>
	<listitem><para>PHP</para></listitem>
	<listitem><para>MySQL adatbázismotor</para></listitem>
</orderedlist>

<note><title>Megjegyzés:</title><para>Mindezen csomagok szabadon
hozzáférhetők és letölthetők a Net-ről.</para></note>

</sect2>

<sect2><title>Feltételezések</title>
<para>A dokumentum feltételezi, hogy a következők már telepítve vannak a
rendszereden:</para>
<orderedlist numeration="lowerroman">
 <listitem><para>gzip vagy gunzip - megtalálható a <ulink url="http://www.gnu.org">http://www.gnu.org</ulink> webhelyen</para></listitem>
 <listitem><para>gcc és GNU make - megtalálható a <ulink url="http://www.gnu.org">http://www.gnu.org</ulink> webhelyen</para></listitem>
</orderedlist>
</sect2>

<sect2>
<title>Magyar fordítás</title>
<para>
A magyar fordítást <ulink url="mailto:souly1@freemail.hu_NO_SPAM">Kilián Magdolna</ulink> készítette (2003.03.28). A lektorálást <ulink url="mailto:laca@janus.gimsz.sulinet.hu_NO_SPAM">Szijjártó László</ulink> végezte el (2003.07.09).
Utoljára <ulink url="mailto:dacas@freemail.hu_NO_SPAM">Daczi (dacas) László</ulink>  frissítette (2003.12.10).
A dokumentum legfrissebb változata megtalálható a <ulink url="http://tldp.fsf.hu/index.html">Magyar Linux Dokumentációs Projekt</ulink> honlapján.
</para>
</sect2>

</sect1>

<sect1><title>Követelmények</title>
<para>Le kell töltened és fordítanod (compile) néhány csomagot. Ez a HOGYAN elmagyarázza a 
fordítási folyamatot, de tudnod kell forráskódból telepíteni.</para>
<sect2><title>Alapok</title>
<para>Szükséged van Solarisra/Linuxra és GNU CC fordítóra a gépen. A GNU gnzip és GNU tar szintén szükséges.</para>
</sect2>
<sect2><title>Apache 2.0.46</title>
<para>Az Apache egy HTTP szerver, Web-es alkalmazások kiszolgálására használjuk. Töltsd le az Apache 2.0.46 forráskódot a <ulink url="http://www.apache.org/dist/httpd/">http://www.apache.org/dist/httpd/</ulink> webhelyről.</para>
</sect2>
<sect2><title>OpenSSL</title>
<para>Töltsd le az OpenSSL csomagot a <ulink url="http://www.openssl.org/source/">http://www.openssl.org/source/</ulink> webhelyről. A legutolsó verziót töltsd le. Az OpenSSL telepítést az SSL könyvtárak mod_ssl fordítására használjuk Apache-csal, valamint SSL bizonyítványok karbantartására a webszerveren. Töltsd le az OpenSSL forráskódot gzippelt fájlként a /tmp/downloads könyvtárba.</para>
</sect2>
<sect2><title>iPlanet LDAP programkönyvtár</title>
<para>
Töltsd le az iPlanet LDAP SDK csomagot a <ulink url="http://wwws.sun.com/software/download/products/3ec28dbd.html">http://wwws.sun.com/software/download/products/3ec28dbd.html</ulink> honlapról. Az iPlanet LDAP SDK csomagot fogjuk használni, mert ez tartalmazza az ldaps-hoz szükséges programkönyvtárakat (LDAP az SSL felett).
</para>
</sect2>
<sect2><title>mod_auth_ldap</title>
<para>Az mod_auth_ldap csomagot az LDAP támogatás Apache-ba fordítására fogjuk használni. Töltsd le a <ulink url="http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html">http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html</ulink> honlapról.
</para>
</sect2>
<sect2><title>MySQL adatbázismotor</title>
<para>Töltsd le a soron következő MySQL csomagot a <ulink url="http://www.MySQL.com/downloads/index.html">http://www.MySQL.com/downloads/index.html</ulink> honlapról.</para>
</sect2>

<sect2><title>PHP</title>
<para>Töltsd le a PHP forráskódját a <ulink url="http://www.php.net/downloads.php">http://www.php.net/downloads.php</ulink> webhelyről.</para>
</sect2>

</sect1>

<sect1><title>Telepítés</title>

<para>Először ellenőrizd le néhány telepítési feltétel meglétét, majd kezdd meg a telepítést.</para>

<sect2><title>Telepítési feltételek</title>
<para>Az alkalmazásszerver tervünk szerinti telepítéséhez szükségesek az SSL és LDAP programkönyvtárak. Az SSL motorra is szüksége van az Apach 2.x-nek, az SSL tanúsítványok kezeléséhez/használatához.
</para>
<sect3><title>iPlanet LDAP SDK</title>
<para>Jelentkezz be root felhasználóként, a su parancs használatával:</para>
<screen><command>$ su -</command></screen>
<para>Hozzd létre az <filename class="directory">/usr/local/iplanet-ldap-sdk.5</filename> könyvtárat. Másold az <filename>ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar.gz</filename> fájlt a <filename class="directory">/tmp/downloads</filename> könyvtárból az <filename class="directory">/usr/local/iplanet-ldap-sdk.5</filename> könyvtárba.</para>
<screen>
<command># mkdir /usr/local/iplanet-ldap-sdk.5</command>
<command># cp /tmp/downloads/ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar /usr/local/iplanet-ldap-sdk.5</command>
<command># cd /usr/local/iplanet-ldap-sdk.5</command>
<command># tar -xvf ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar</command>
</screen>
<para>Most az összes szükséges iPlanet LDAP lib fájlnak a megfelelő könyvtárban kell lennie.</para>

</sect3>

<sect3><title>OpenSSL motor</title>
<para>Ezután az OpenSSL motort kell telepítened.</para>
<para>Az OpenSSL az SSL/TLS protokoll nyílt forráskódú megvalósítása. Az OpenSSL szükséges az SSL tanúsítványok létrehozásához és kezeléséhez a webszerveren. A telepítés a lib fájlokhoz is szükséges, ezeket az SSL modul az Apache kiszolgálására használja.</para>
<para>Lépj be abba a könyvtárba, ahova az OpenSSL forráskódjának fájljait tetted.</para>
<screen> <command># cd /tmp/download</command>
<command># gzip -d openssl.x.x.tar.gz</command>
<command># tar -xvf openssl.x.x.tar</command>
<command># cd openssl.x.x</command>
<command># make</command>
<command># make test</command>
<command># make install</command>
</screen>
<para>A  <command>make install</command> lefutása után az openssl futtatható fájljai az <filename class="directory">/usr/local/ssl</filename> könyvtárban lesznek.</para>
</sect3>

</sect2>
<sect2><title>MySQL</title>
<para>A MySQL telepítése elég egyszerű. A letöltött futtatható állományokat a megfelelő könyvtárba kell tenni.</para>
<para>Kezdetként hozz létre egy user:group csoportot a MySQL démon számára, majd másold be a fájlokat a megfelelő könyvtárakba.</para>
<screen> <command># groupadd MySQL</command>
<command># useradd -g MySQL MySQL</command>
<command># cd /usr/local</command>
<command># gunzip &lt; /path/to/MySQL-VERSION-OS.tar.gz | tar xvf - </command>
<command># ln -s full-path-to-MySQL-VERSION-OS MySQL</command>
</screen>
<para>Ezután futtasd az install_db szkriptet, és állítsd be a fájlok jogosultságait.</para>
<screen> <command># cd MySQL</command>
<command># scripts/MySQL_install_db</command>
<command># chown -R MySQL .</command>
</screen>
<sect3><title>A MySQL indítása</title>
<para>Most indítsd el a MySQL kiszolgálót a telepítés ellenőrzéséhez.</para>
<screen> <command># bin/MySQLd_safe --user=MySQL &amp;</command>
</screen>
<para>Ellenőrizd a MySQL démon futását, a ps -ef parancs használatával. A következő kimenetnek kell megjelennie:</para>
<screen><command># ps -ef | grep MySQL</command>
root      3237     1  0 May29 ?        00:00:00 /bin/sh bin/safe_MySQLd
MySQL     3256  3237  0 May29 ?        00:06:58 /usr/local/MySQL/bin/MySQLd --defaults-extra-file=/usr/local/MySQL/data/my.cnf --basedir=/usr/local/MySQL --datadir=/usr/local/MySQL/data --user=MySQL --pid-file=/usr/local/MySQL/data/downloa
</screen>
</sect3>
<sect3><title>A MySQL leállítása</title>
<para>A MySQL kiszolgáló leállításához kövesd az alábbi útmutatást:</para>
<screen><command># cd /usr/local/MySQL</command>
<command># ./bin/MySQLadmin -u root -p shutdown</command>
</screen>
</sect3>
<sect3><title>A Data Directory helyének meghatározása</title>
<para>A MySQL démon minden információt egy "Data Directory" nevű könyvtárban tárol. Ha követted a fenti útmutatást, a Data Directory megtalálható az <filename class="directory">/usr/local/MySQL/data</filename> könyvtár alatt.</para>
<para>A Data Directory helyének meghatározásához használd a <command>MySQLadmin</command> segédprogramot, az alábbi módon:</para>
<screen>
<command># /usr/local/MySQL/bin/MySQLadmin variables -u root --password={your_password} | grep datadir</command>
</screen>

</sect3>
</sect2>

<sect2><title>Apache 2.0</title>
<para>Kezdetnek állíts be néhány FLAGS-et a fordító számára.</para>
<screen><command># export LDFLAGS="-L/usr/local/iplanet-ldap-sdk.5/lib/ -R/usr/local/iplanet-ldap-sdk.5/lib/:/usr/local/lib"</command>
<command># export CPPFLAGS="-I/usr/local/iplanet-ldap-sdk.5/include"</command>
</screen>
<para>Ezután csomagold ki az Apache 2.0 forrásfájljait, és futtasd a <filename>configure</filename> szkriptet.</para>
<screen><command># cd /tmp/download</command>
<command># gzip -d httpd-2.0.46.tar.gz </command>
<command># tar -xvf httpd-2.0.46.tar</command>
<command># cd httpd-2.0.46</command>
<command>#./configure --enable-so --with-ssl --enable-ssl --enable-rewrite --enable-dav</command>
</screen>
<para>Ezután add ki a make parancsot</para>
<screen><command># make</command>
<command># make install</command>
</screen>
<sect3><title>Az Apache indítása</title>
<screen><command># /usr/local/apache2/bin/apachectl start</command>
</screen>
</sect3>
<sect3><title>Az Apache leállítása</title>
<screen><command># /usr/local/apache2/bin/apachectl stop</command>
</screen>
</sect3>
</sect2>

<sect2><title>mod_auth_ldap</title>
<para>Csomagold ki a modauthldap_apache2.tar.gz fájlt.</para>
<screen><command>cd /tmp/download</command>
<command># gzip -d modauthldap_apache2.tar.gz</command>
<command># tar -xvf modauthldap_apache2.tar</command>
<command># cd modauthldap_apache2</command>
</screen>
<para>Most állítsd be és telepítsd a mod_auth_ldap csomagot.</para>
<screen><command># ./configure --with-apxs=/usr/local/apache2/bin/apxs  --with-ldap-dir=/usr/local/iplanet-ldap-sdk.5/</command>
<command># make</command>
<command># make install</command>
</screen>
</sect2>

<sect2><title>Tanúsítvány adatbázis az LDAPS:// részére</title>
<para>Le kell töltened a cert7.db és key7.db adatbázisokat a <ulink url="http://www.xml-dev.com/xml/key3.db">http://www.xml-dev.com/xml/key3.db</ulink> és <ulink url="http://www.xml-dev.com/xml/cert7.db">http://www.xml-dev.com/xml/cert7.db</ulink> webhelyről és el kell helyezned az <filename>/usr/local/apache2/sslcert/</filename> könyvtárban.</para>
</sect2>

<sect2><title>PHP</title>
<para>Csomagold ki a PHP forrásfájlokat.</para>
<screen><command>gzip -d php-xxx.tar.gz</command>
<command>tar -xvf php-xxx.tar</command>
</screen>

<para>Állítsd be, majd futtasd a make parancsot.</para>
<screen><command>cd php-xxx</command>
<command>./configure --with-MySQL --with-apxs=/usr/local/apache2/bin/apxs</command>
</screen>
<para>Fordítsd le a forráskódot.</para>
<screen><command># make </command>
<command># make install</command>
</screen>

<para>Másold a php.ini fájlt a megfelelő könyvtárba.</para>
<screen><command>cp php.ini-dist /usr/local/lib/php.ini</command>
</screen></sect2>

</sect1>

<sect1 id="config-webdav"><title>A WebDAV szolgáltatások telepítése és beállítása</title>

<para>Ez egy könnyű rész. Ebben a fejezetben engedélyezni fogjuk a WebDAV szolgáltatást az Apache egy főkönyvtárában.</para>

<sect2><title>Módosítások az
<filename>/usr/local/apache/conf/httpd.conf</filename> fájlban</title>

<para>
Ellenőrizd a következő Apache direktívák meglétét az
<filename>/usr/local/apache/conf/httpd.conf</filename> fájlban:</para>

<para><screen>
  Addmodule mod_dav.c
</screen></para>

<para> Amennyiben nincs benne, add hozzá. Ez jelzi az Apache számára a DAV képesség meglétét. A direktívát mindenképp konténeren (container) kívül kell elhelyezni.  </para>

<para>
Ezt követően meg kell adnod azt, hogy az Apache hol tárolja a DAVLockDB fájlt. Ez egy zárolási adatbázis a WebDAV-hoz, ezt írhatóvá kell tenned a  httpd  processz számára.
</para>

<para>
A DAVLock fájlt én az <filename>/usr/local/apache/var</filename> könyvtárban tárolom.
Én ezt a könyvtárat más célokra is használom. Add hozzá a következő sort az
<filename>/usr/local/apache/conf/httpd.conf</filename> fájlhoz, annak meghatározásához, hogy a DAVLockDB fájl az
<filename>/usr/local/apache/var</filename> könyvtárban van: </para>

<para><screen>
  DAVLockDB      /usr/local/apache/var/DAVLock 
</screen></para>

<para>Az utasítást a tárolón kívül helyezd el.</para>
</sect2>

<sect2><title>Egy DAVLockDB könyvtár létrehozása</title>

<para> Mint fent említettem, egy könyvtárat kell létrehoznod a DAVLockDB fájl számára, majd írhatóvá kell tenned a webszerver folyamat számára. Általában a webszerver folyamat "<emphasis>nobody</emphasis>" felhasználói néven fut. Ellenőrizd ezt a következő parancs használatával:
<screen><command>ps -ef | grep httpd</command></screen>
Az <filename>/usr/local/apache</filename> alatt hozz létre egy könyvtárat, és állítsd be a hozzáférési jogokat, a következő parancsok használatával:  </para>

<para><screen>
  <command># cd /usr/local/apache</command>
  <command># mkdir var</command>
  <command># chmod -R 755 var/</command>
  <command># chown -R nobody var/</command>
  <command># chgrp -R nobody var/</command>
</screen></para>

</sect2>

<sect2><title>A DAV engedélyezése</title>

<para> A DAV engedélyezése pofonegyszerű. Az Apache főkönyvtára alatti könyvtár DAV engedélyezéséhez, add hozzá annak a bizonyos könyvtárnak a tárolójához a következő direktívát: </para>

<para><screen>
  DAV On
</screen></para>

<para> Ez engedélyezi a DAV-ot arra a könyvtárra és alkönyvtáraira.  </para>

<para>A következő példa beállítás engedélyezi a DAV és LDAP azonosítást/hitelesítést az <filename>/usr/local/apache/htdocs/DAVtest</filename> könyvtárra. Rakd be az  <filename>/usr/local/apache/conf/httpd.conf</filename> fájlba.
</para>

<screen>
 DavLockDB /tmp/DavLock
&lt;Directory "/usr/local/apache2/htdocs/DAVtest"&gt;
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "SMA Development server"
AuthType Basic
LDAP_Debug On
#LDAP_Protocol_Version 3
#LDAP_Deref NEVER
#LDAP_StartTLS On
LDAP_Server you.ldap.server.com 
#LDAP_Port 389
# Ha az SSL aktív, meg kell adnod az LDAP SSL portot, ez általában 636
LDAP_Port 636
LDAP_CertDbDir /usr/local/apache2/sslcert
Base_DN "o=SDS"
UID_Attr uid
DAV On
#require valid-user
require valid-user
#require roomnumber "123 Center Building"
#require filter "(&amp;(telephonenumber=1234)(roomnumber=123))"
#require group cn=rcs,ou=Groups
&lt;/Directory&gt;
</screen>

</sect2>

<sect2><title>Egy "DAVtest" nevű könyvtár létrehozása</title>

<para> Mint egy korábbi részben említettem, minden DAV könyvtárnak írhatónak 
kell lennie a webszerver folyamat által. Ebben a példában feltételezzük, hogy a 
webszerver "<emphasis>nobody</emphasis>" név alatt fut. Ez az általános. A felhasználó megtekintéséhez (akinek neve alatt a webszerver fut) használd a </para>
<screen><command># ps -ef | grep httpd</command></screen>
<para>parancsot.</para>

<para>Hozz létre egy tesztkönyvtárat "<filename>DAVtest</filename>" néven az
 <filename>/usr/local/apache2/htdocs</filename> könyvtár alatt:</para>

<para><command># mkdir /usr/local/apache/htdocs/DAVtest</command></para>

<para>Változtasd meg a hozzáférési jogokat a könyvtárban, az legyen írható-olvasható a httpd folyamat számára. Feltételezve, hogy a httpd "<emphasis>nobody</emphasis>" felhasználónév alatt fut, használd a következő parancsokat:</para>

<screen>
  # cd /usr/local/apache/htdocs
  # chmod -R 755 DAVtest/
  # chown -R nobody DAVtest/
  # chgrp -R nobody DAVtest/
</screen>
</sect2>

<sect2><title>Az Apache újraindítása</title>

<para>Végül le kell futtatnod az Apache-hoz mellékelt konfigurációs tesztrutint, a <filename>httpd.conf</filename> fájl szintaxisának ellenőrzéséhez:
</para>

<screen><command># /usr/local/apache/bin/apachectl configtest</command></screen>

<para>
Ha hibaüzenetet kapsz, akkor ellenőrizd le, hogy minden utasítást helyesen követtél-e. 
Ha nem tudod kitalálni a hiba okát, írj nekem (a hibaüzenetet is írd meg) a  <ulink url="mailto:saqib@seagate.com">saqib@seagate.com</ulink> e-mail címre.
</para>

<para> Ha a konfiguráció tesztje sikeres, indítsd el az Apache webszervert: </para>

<para><command># /usr/local/apache/bin/apachectl restart</command></para>

<para>Most van egy WebDAV engedélyezett Apache szervered LDAP hitelesítéssel és
SSL titkosítással.</para>

</sect2>

<sect2><title>A WebDAV protokoll tesztelése</title>
<para>Nagyon fontos, hogy a most telepített WebDAV teljesen összhangban legyen a WebDAV-2 protokollal. Ha nem teljesen kompatibilis, akkor a WebDAV
alkalmazások kliens oldala nem fog rendesen működni.</para>

<para>A kompatibilitás teszteléséhez a Litmus nevű eszközt használjuk. A
Litmus a WebDAV protokoll tesztelője, amely azt vizsgálja, hogy
összhangban van-e egy szerver az RFC2518-ben leírt WebDAV protokollal.</para>

<para>Töltsd le a Litmus forráskódját a <ulink url="http://www.webdav.org/neon/litmus/">http://www.webdav.org/neon/litmus/</ulink> webhelyről, majd másold be a /tmp/downloads könyvtárba.</para>

<para>Használd a  gzip és tar programokat a kicsomagoláshoz:</para>
<screen>
<command># cd /tmp/downloads</command>
<command># gzip -d litmus-0.6.x.tar.gz</command>
<command># tar -xvf litmus-0.6.x.tar</command>
<command># cd litmus-0.6.x</command>
</screen>

<para>A Litmus fordítása és telepítése egyszerű:</para>

<screen>
<command># ./configure</command>
<command># make</command>
<command># make install</command>
</screen>

<para>A <command>make install</command> parancs a bináris fájlokat az <filename>/usr/local/bin</filename>, a súgó fájljait pedig az <filename>/usr/local/man</filename> könyvtárba teszi.</para>


<para>A most telepített WebDAV szerver teszteléséhez használd a </para>
<screen>
<command># /usr/local/bin/litmus http://you.dav.server/DAVtest userid passwd</command>
</screen>
<para>parancsot.</para>
</sect2>

</sect1>

<sect1><title>A WebDAV szerver üzemeltetése</title>
<para>Ebben a részben megvitatjuk a különböző kezelési feladatokat - például LDAP belépés ellenőrzése, és hogyan dolgozunk Apache-on DAV módszerrel.</para>
<para>A legtöbb konfigurációs változást a DAV-hoz a <filename>
httpd.conf</filename> fájl használatával tesszük. Ez a fájl az <filename>
/usr/local/apache/conf/httpd.conf</filename> könyvtárban található.</para>

<para> A <filename>httpd.conf</filename> egy szöveges konfigurációs fájl,
amelyet az Apache használ. Szerkesztéséhez bármely szövegszerkesztőt
használhatsz, én leginkább a vi-t szoktam. Készíts egy másolatot erről
a fájlról, mielőtt megváltoztatod. </para>

<para>Miután a <filename>httpd.conf</filename> fájlban elvégezted a
változtatásokat, az Apache szervert újra kell indítanod az <command>/usr/local/apache/bin/apachectl restart</command> paranccsal. Mielőtt
újraindítanád, teszteld a httpd.conf érvényességét az <command>
/usr/local/apache/bin/apachectl configtest </command> paranccsal. </para>  

<sect2><title>A DAV megosztott hozzáférésének korlátozása</title>
<para>Az előző részben, amikor létrehoztuk a DAVtest megosztást, az LDAP-ot 
hitelesítési célból használtuk. Azonban bárki, aki hitelesíti magát, az LDAP-
ot használva a felhasználói azonosítójával/jelszavával, hozzáférhet ahhoz a 
mappához.</para>
<para>A <command>require</command> direktíva használatával a httpd.conf fájlban
limitálhatod adott egyének vagy csoportok hozzáférését.</para>

<para>Ha megnézed a DAVtest konfigurációt az előző részből :
<screen>
  &lt;Directory /usr/local/apache/htdocs/DAVtest&gt;
  Dav On
  #Options Indexes FollowSymLinks

  AllowOverride None
  order allow,deny
  allow from all
  AuthName "LDAP_userid_password_required"
  AuthType Basic
  &lt;Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK&gt;
  Require valid-user
  &lt;/Limit&gt;
  LDAP_Server ldap.server.com
  LDAP_Port 389
  Base_DN "o=ROOT"

  UID_Attr uid
  &lt;/Directory&gt;
</screen>
Láthatod, hogy a <command>require</command> direktíva értéke  <command>valid-user</command>. Ami azt jelenti, hogy bármely hitelesített felhasználónak hozzáférése van ahhoz a mappához.
</para>

<sect3><title>Hozzáférés korlátozása egyéni UID alapján</title>
<para>LDAP UID-t is használhatjuk a DAV mappa hozzáférésének korlátozására.</para>
<para>A <command>require valid-user</command> direktíva megváltoztatható <command>require user 334455 445566</command> értékre.</para>
<para>Ez a 334455 és 445566 UID-vel rendelkező felhasználókra korlátozza a hozzáférést. Senki másnak nem lesz hozzáférése ehhez a mappához.</para> 
</sect3>

<sect3><title>Hozzáférés korlátozása csoportok tagjai számára</title>
<para> A <command>require</command> direktívát használhatod csoportok tagjai 
hozzáférésének korlátozására. Ezt megteheted az LDAP csoportok vagy 
az LDAP szűrők használatával. A szűrőt az LDAP filter szintaxis szerint kell felépíteni. </para>  
</sect3>
</sect2>

<sect2><title>Írás jog korlátozása DAV megosztás alatt</title>
<para> Lehetséges a DAV megosztások forrásainak szerkesztését bizonyos 
személyekre korlátozni, mindemellett bárki megnézheti ezeket az erőforrásokat (például fájlokat - dacas). Ezt könnyen teheted a <command> &lt;Limit&gt;</command> címke használatával a <filename>httpd.conf</filename> fájlban. </para>  
<para> 
<screen>
  &lt;Directory /usr/local/apache/htdocs/DAVtest&gt;
  Dav On
  #Options Indexes FollowSymLinks

  AllowOverride None
  order allow,deny
  allow from all
  AuthName "LDAP_userid_password_required"
  AuthType Basic
  &lt;Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK&gt;
  Require valid-user
  &lt;/Limit&gt;
  LDAP_Server ldap.server.com
  LDAP_Port 389
  Base_DN "o=ROOT"

  UID_Attr uid
  &lt;/Directory&gt;
</screen>
</para>
<para>A <command>&lt;limit&gt;</command> megváltoztatásával korlátozhatod adott személy írási jogát:
<screen>
  &lt;Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK&gt;
  Require 334455
  &lt;/Limit&gt;
</screen>
</para>
<para>Alapvetően korlátozzuk a 334455 UID-vel rendelkező felhasználó PUT POST DELETE PROPPATH MKCOL COPY MOVE LOCK és 
az UNLOCK jogát. Mindenki más képes lesz használni a GET és PROPFIND módszert a forrásokon, de mást nem.</para>
</sect2>

</sect1>

<sect1 id="ssl"><title>Az SSL megvalósítása és használata a HTTP forgalom biztonságossá tételére</title>
<para>Manapság a fájlszerveren tárolt adatok biztonsága nagyon fontos. A 
kompromittált adatok több ezer dollárba is kerülhetnek egy társaságnak. Az 
utolsó részben LDAP hitelesítési modult fordítottunk az Apache-ba, hogy 
biztosítsuk a hitelesítési mechanizmust. Bár a HTTP forgalom nem igazán 
biztonságos, és minden adat tiszta szövegként jelenik meg - ez azt jelenti, hogy 
az LDAP hitelesítés (userid/passwd) ugyancsak tiszta szövegként megy át. Ez 
problémát okozhat. Bárki kutathat ezen userid/passwd párosok után és hozzáférhet  
a DAV állományhoz. Ennek megelőzéséhez titkosítanunk kell a HTTP forgalmat, 
valójában a HTTP+SSL vagy HTTPS segítségével. Bármi, ami átmegy a HTTPS-en,
titkosított lesz, így az LDAP userid/passwd-ben nem kutakodhatnak. A HTTPS a 
443-as porton fut. Az előző rész fordítási folyamatának eredményeként az Apache 
mindkét porton, a 80-ason (normál HTTP) és 443-ason (HTTPS) is fut. Ha csak a 
DAV-hoz használod majd a szervert, akkor nagyon ajánlott bezárni a 80-as portot. 
A HOGYAN ezen  részében néhány információt nyújtok az SSL-ről és annak üzemeltetéséről egy Apache HTTP szerveren. 
</para>

<sect2><title>Az SSL bemutatása</title>
<para>
Az SSL (Secure Socket Layer; Biztonsági Alréteg) egy protokoll réteg, amely a hálózati (Network layer) és az alkalmazási rétegek (Application layer) között van. Mint neve is sugallja, az SSL mindenféle forgalom titkosítására használható - LDAP, POP, IMAP és legfőképp HTTP.
</para>
<para>
Íme egy végletekig leegyszerűsített ábra az SSL-el kapcsolatban álló rétegekről.
<screen>

	+-------------------------------------------+
	|   LDAP   |    HTTP    |   POP   |   IMAP  |
	+-------------------------------------------+
	|                   SSL                     |
	+-------------------------------------------+
	|      Hálózati réteg (Network Layer)       |
	+-------------------------------------------+
	
</screen>
</para>
<sect3><title>Az SSL-ben használt titkosító algoritmusok</title>
<para>Háromféle titkosítási technológiát használnak az SSL-ben: "nyilvános-titkos kulcs" (Public-Private Key), "szimmetrikus kulcs" (Symmetric Key), és <link linkend="digitsign">"digitális aláírás"</link> (Digital Signature).
</para>
<para>
<emphasis role="strong">"Nyilvános-titkos kulcs" titkosítás - SSL kapcsolat indítása: </emphasis> Ebben az algoritmusban a titkosítás és a visszafejtés nyilvános-titkos kulcspárral történik. A webszerveré a titkos kulcs, a nyilvános kulcsot pedig a tanúsítványban küldi el a kliensnek.
</para>

<orderedlist>
	<listitem>
		<para>A kliens kéri a HTTPS-t használó Web szervertől a tartalmat.</para>
	</listitem>
	<listitem>
		<para>A web szerver válaszol egy Digitális Tanúsítvánnyal (Digital Certificate), amiben benne van a szerver nyilvános kulcsa.</para>
	</listitem>
	<listitem>
		<para>A kliens ellenőrzi, hogy lejárt-e a tanúsítvány.</para>
	</listitem>
	<listitem>
		<para>Ezután a kliens ellenőrzi, hogy a tanúsítvány hatóság (Certificate Authority; továbbiakban CA), amely aláírta a tanúsítványt, megbízott hatóság-e a böngésző listáján. Ez a magyarázata annak, miért van szükségünk egy megbízott CA-tól kapott tanúsítványra.</para>
	</listitem>
	<listitem>
		<para>A kliens ellenőrzi, hogy a webszerver teljes domain neve (Fully Qualified Domain Name) megegyezik-e a tanúsítványon lévő közönséges névvel (Common Name).</para>
	</listitem>
	<listitem>
		<para>Ha minden megfelelő, létrejön az SSL kapcsolat.</para>
	</listitem>
</orderedlist>
<note><title>Megjegyzés:</title><para>Bármi, amit titkos kulccsal titkosítottak, kizárólag a nyilvános kulccsal fejthető vissza. Ennek megfelelően, bármilyen nyilvános kulccsal titkosított dolog, kizárólag a titkos kulccsal fejthető vissza. Elterjedt az a tévhit, miszerint kizárólag nyilvános kulccsal lehet titkosítani és titkos kulccsal visszafejteni. Ez nem így van. Bármelyik kulcs használható titkosításra és visszafejtésre egyaránt (ha annak párját használják visszafejtésre és titkosításra - dacas). Végül is, ha az egyik kulcsot használták titkosításra, a másikat kell használni a visszafejtésre stb. Egy üzenet nem titkosítható és visszafejthető kizárólag a nyilvános kulcs használatával.</para>
<para><emphasis>A titkos kulccsal történő titkosítás és a nyilvános kulccsal
történő visszafejtés biztosíték a címzetteknek arról, hogy a küldeményt a küldő (a titkos kulcs tulajdonosa) adta fel (mivel a titkos kulcs használatához szükséges jelmondatot csak Ő ismeri - dacas).
A nyilvános kulccsal történő titkosítás és titkos kulccsal visszafejtés biztosítja azt,
hogy a küldeményt csak a meghatározott címzett (a titkos kulcs tulajdonosa) képes visszafejteni.</emphasis>
</para></note>
<para><emphasis role="strong">Szimmetrikus titkosítás -  az adatok
tulajdonképpeni átvitele</emphasis>: Miután az SSL kapcsolat létrejött,
szimmetrikus titkosítást használ az adatok titkosítására, kevesebb CPU ciklust felhasználva (tehát kevésbé erőforrásigényes - a lektor). Szimmetrikus titkosításkor az adat ugyanazzal a kulccsal titkosítható és visszafejthető. A szimmetrikus titkosítás kulcsa a kapcsolat indításakor kerül átadásra, a nyilvános-titkos kulcspárral történő titkosítás alatt. </para>

<para><emphasis role="strong">Üzenet ellenőrzés</emphasis> A szerver kivonatot készít az üzenetről valamilyen algoritmus szerint, mint például <link linkend="hmac">HMAC</link>, <link linkend="sha1">SHA</link>, <link linkend="md5">MD5</link>, majd ezek alapján ellenőrzi az adatok sértetlenségét.</para>
</sect3>
<sect3><title>A hitelesség és sértetlenség ellenőrzése</title>
	<para>Titkosítási folyamat</para>
	<screen>
             Feladó                  Címzett
          titkos kulcsa          nyilvános kulcsa
          ,-.                     ,-.
         (   )..........         (   )..........
          `-' ''''|'|'||          `-' ''''''''||
                  | |                    |
                  | |                    |
   .-----------.  | |    .-----------.   |     .-----------.
   |           |  V |    |Titkosított|   V     |Titkosított|
   |Sima szöveg|-------->|  szöveg   |-------->|  szöveg   |
   |           |1. lépés |    1      |2. lépés |    2      |\
   `-----------'    |    `-----------'          `----------' \    __
         |          |                                         \   [_'
         |          |                                  5. lépés\   |
         |3. lépés  |                                       __   --|--
         |          |                                  _.--'       |
         V          |                            _..-''           / \
    .----------.    |                      _..-''               Címzett
    |  SHA 1   |    V    .---------._..-''
    | Üzenet   |-------->|Digitális|
    | kivonat  | 4. lépés| aláírás |             _
    `----------'         `---------'         _  (_)
        _____ ____   ____  ____ _   _ ____ _| |_ _  ___  ____
       | ___ |  _ \ / ___)/ ___) | | |  _ (_   _) |/ _ \|  _ \
       | ____| | | ( (___| |   | |_| | |_| || |_| | |_| | | | |
       |_____)_| |_|\____)_|    \__  |  __/  \__)_|\___/|_| |_|
                               (____/|_|
	</screen>
<itemizedlist mark='opencircle'>
	<listitem><para>1. lépés: az eredeti "sima szöveg" titkosítása a feladó titkos kulcsának használatával, ennek eredménye a "titkosított szöveg 1". Ez biztosítja a feladó hitelességét.</para></listitem>
		<listitem><para>2. lépés: a "titkosított szöveg 1" titkosítása a címzett nyilvános kulcsával, ennek eredménye a "titkosított szöveg 2". Ez biztosítja a címzett hitelességét (értsd: csak a címzett tudja visszafejteni a szöveget a saját titkos kulcsával).</para></listitem>
		<listitem><para>3. lépés: az SHA1 üzenet kivonat (ellenőrző összeg - dacas) készítése a "sima szöveg" alapján.</para></listitem>
		<listitem><para>4. lépés: SHA1 üzenet kivonat titkosítása a feladó titkos kulcsával, ennek eredménye a "sima szöveg" digitális aláírása. Ezt a digitális aláírást a címzett felhasználhatja az üzenet sértetlenségének és a feladó hitelességének ellenőrzésére.</para></listitem>
		<listitem><para>5. lépés: a "digitális aláírás" és a "titkosított szöveg 2" elküldése a címzettnek.</para></listitem>
	</itemizedlist>
<para>Visszafejtési folyamat</para>
<screen>
           Címzett                   Feladó
        titkos kulcsa            nyilvános kulcsa
         ,-.                     ,-.
        (   )..........         (   )..........
         `-' ''''''''||          `-' '''''''|||
                |                      |    |
                |                      |    |
  .-----------. |      .-----------.   |    | .-----------.        .----#1----.
  |Titkosított| V      |Titkosított|   V    | |           |        |  SHA 1   |
  |  szöveg   |------->|  szöveg   |--------->|Sima szöveg|------->| Üzenet   |
  |    2      |1. lépés|     1     |2. lépés| |           |3. lépés|  kivonat |
  `-----------'        `-----------'        | `-----------'        `----------'
                                            |                        ||
                                            |                        ||5. lépés
                                            |                        ||
                                            |                        ||
                               .---------.  |                    .----------.
                               |Digitális|  V                    |  SHA 1   |
                               | aláírás |---------------------->| Üzenet   |
                 _             `---------'  4. lépés  _          | kivonat  |
                | |                               _  (_)         `----#2----'
              __| |_____  ____  ____ _   _ ____ _| |_ _  ___  ____
             / _  | ___ |/ ___)/ ___) | | |  _ (_   _) |/ _ \|  _ \
            ( (_| | ____( (___| |   | |_| | |_| || |_| | |_| | | | |
             \____|_____)\____)_|    \__  |  __/  \__)_|\___/|_| |_|
                                    (____/|_|
 </screen>

 <itemizedlist mark='opencircle'>
 	<listitem><para>1. lépés: a "titkosított szöveg 2" visszafejtése a címzett titkos kulcsának használatával, ennek eredménye a "titkosított szöveg 1".</para></listitem>
 	<listitem><para>2. lépés: a "titkosított szöveg 1" visszafejtése a feladó nyilvános kulcsának használatával, ennek eredménye a "sima szöveg".</para></listitem>
 	<listitem><para>3. lépés: SHA1 üzenet kivonat (ellenőrző összeg - dacas) elkészítése, az előző 2 lépés eredményeként kapott "sima szöveg" alapján.</para></listitem>
 	<listitem><para>4. lépés: a "digitális aláírás" visszafejtése a feladó nyilvános kulcsának használatával, ennek eredménye az "SHA1 üzenet kivonat".</para></listitem>
 	<listitem><para>5. lépés: az "SHA üzenet kivonat #1" és "SHA üzenet kivonat #2" összehasonlítása. Amennyiben a kettő egyezik, úgy az üzenet nem módosult az átvitel alatt, így az eredeti "sima szöveg" sértetlen.</para></listitem>
 </itemizedlist>
</sect3>


</sect2>

<sect2><title>Teszt tanúsítványok</title>
<para>Az Apache fordítása közben létrehoztunk egy teszt tanúsítványt. A mod-ssl
csomagban lévő makefile programot használtuk az egyéni Tanúsítvány
létrehozásához. Erre a
<screen><command># make certificate TYPE=custom</command></screen>
parancsot használtuk.
</para>

<para>Ezt a tanúsítványt tesztelési célokra használhatjuk.</para>
</sect2>

<sect2><title>Tanúsítványok "üzemi" használatra</title>
<para>"Üzemi" használathoz szükségünk lesz egy tanúsítványra valamely Certificate Authority-tól (tanúsítvány hatóság) (ezentúl CA). A CA-k a tanúsítványt áruba bocsátók, akik egy megbízható CA listán vannak a felhasználó böngésző kliensében. Mint azt az algoritmus titkosítás részben említettem, ha a CA nincs a megbízott hatóságok listáján, a felhasználó figyelmeztető üzenetet kap, amikor megpróbál kapcsolódni egy biztosított/biztonságos helyhez.</para>
<para>
Hasonlóan a teszt tanúsítványokhoz, ez is küld egy figyelmeztető üzenetet
a felhasználó böngészőjének.
</para>

</sect2>

<sect2><title>Hogyan generálhatsz a CSR-t?</title>
<para>
A CSR (TAK) vagy Certificate Signing Request-et (tanúsítvány aláírási kérelem) el kell küldeni egy megbízott CA-nak aláírásra. Ez a rész foglalkozik azzal, hogyan generálhatsz CSR-t és küldheted el egy általad kiválasztott CA-nak.
Az <command># openssl req</command> parancs használható erre, az alábbiak szerint:
</para>

<screen>
<command># cd /usr/local/apache/conf/</command>
<command># /usr/local/ssl/bin/openssl req -new -nodes -keyout private.key -out public.csr</command>
Generating a 1024 bit RSA private key
............++++++
....++++++
writing new private key to 'private.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
Locality Name (eg, city) []:San Jose
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Seagate
Organizational Unit Name (eg, section) []:Global Client Server
Common Name (eg, YOUR name) []:xml.seagate.com
Email Address []:saqib@seagate.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:badpassword
An optional company name []:

</screen>

<note><title>"PRNG not seeded" üzenet</title><para>Ha nincs <filename>/dev/random</filename> könyvtár a rendszerünkön, <emphasis>"PRNG not seeded" </emphasis> hibaüzenetet kapsz. Ebben az esetben add ki a következő parancsot:</para>

<screen><command># /usr/local/ssl/bin/openssl req -rand <filename>some_file.ext</filename> -new -nodes -keyout private.key -out public.csr </command>
</screen>
<para>A "some_file.ext" részt cseréljük ki egy rendszerünkön létező fájl nevére. Bármilyen fájlt megadhatunk. Az Openssl ezt fogja véletlen szám generáláshoz használni.</para>
<para>A Solaris 9 rendszer részeként adnak <filename>/dev/random</filename> fájlt. Amennyiben Solaris rendszert használsz, elképzelhető, hogy telepítened kell a <ulink url="http://sunsolve.sun.com/pub-cgi/findPatch.pl?patchId=112438">112438</ulink> foltot a /dev/random fájl használatához.</para>
</note>

<para>
Ezen a ponton pár kérdést tesz fel a szerver helyéről, hogy generálhassa
a Certificate Signing Request-et.
</para>

<para>
Megjegyzés: A közönséges neved (Common Name) a teljes DNS neve (Fully Qualified DNS) a webszerverednek, például
dav.server.com. Ha mást írsz oda, akkor NEM fog működni. Jegyezd meg a használt jelszót, a jövőbeli használat érdekében.
</para>

<para>Mihelyst befejeződött a folyamat, lesz egy <filename>private.key</filename> és egy <filename>public.csr</filename> fájlod.
Szükséged lesz a <filename>public.csr</filename> fájlt bemutatnunk a CA-nak.
Ekkor a public.key fájl még nem titkosított. A titkosításhoz használd az
</para>

<screen> <command># mv private.key private.key.unecrpyted</command>
<command># /usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key</command>
</screen>
<para>parancsokat.</para>

</sect2>
<sect2 id="InstallingServerCert"><title>A szerver titkos kulcsának és tanúsítványának telepítése</title>
	<para>Miután a CA feldolgozta a kérésed, visszaküldenek egy kódolt tanúsítványt. A Digitális Tanúsítvány formátumát az  X.509 v3 szabvány határozza meg. A következőkben látható egy tipikus, X509 v3 szabvány szerinti Digitális Tanúsítvány felépítése:</para>
	<itemizedlist mark='opencircle'>
 		<listitem><para>Certificate
 			<itemizedlist mark='opencircle'><listitem><para>Version</para></listitem><listitem><para>Serial Number</para></listitem><listitem><para>Algorithm ID</para></listitem><listitem><para>Issuer</para></listitem></itemizedlist>
 			<itemizedlist mark='opencircle'>
 				<listitem><para>Validity</para></listitem>
 				<listitem><itemizedlist mark='opencircle'><listitem><para>Not Before</para></listitem><listitem><para>Not After</para></listitem></itemizedlist></listitem>
 			</itemizedlist>
 			<itemizedlist mark='opencircle'><listitem><para>Subject</para></listitem></itemizedlist>
 			<itemizedlist mark='opencircle'>
 				<listitem><para>Subject Public Key Info</para></listitem>
 				<listitem><itemizedlist mark='opencircle'><listitem><para>Public Key Algorithm</para></listitem><listitem><para>RSA Public Key</para></listitem></itemizedlist></listitem>
 			</itemizedlist>
 			<itemizedlist mark='opencircle'><listitem><para>Extensions</para></listitem></itemizedlist>
 		</para></listitem>
 		<listitem><para>Certificate Signature Algorithm</para></listitem>
 		<listitem><para>Certificate Signature</para></listitem>

 	</itemizedlist>

 <sect3><title>Egy Digitális Tanúsítvány ellenőrzése</title>
 		<para>Egy X.509 Tanúsítvány ellenőrzésére használd a következő parancsot: </para>
 <screen><command># openssl verify <filename>server.crt</filename></command>
 server.crt: OK </screen>
 	<para>Ahol a <filename>server.crt</filename> a Digitális Tanúsítványt tartalmazó fájl neve.</para>

 </sect3>
 <sect3 id="viewingdigitcertcontent"><title>Egy Digitális Tanúsítvány tartalmának megtekintése</title>
 	<para>Egy Digitális Tanúsítvány tartalma megtekinthető a <command># openssl x509</command> parancs használatával, az alábbiak szerint:</para>
 	<screen><command># openssl x509 -text -in <filename>server.crt</filename></command>
 Certificate:
     Data:
         Version: 3 (0x2)
         Serial Number: 312312312 (0x0)
         Signature Algorithm: md5WithRSAEncryption
 	Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root
         Validity
             Not Before: Feb  8 03:25:50 2000 GMT
             Not After : Feb  8 03:25:50 2001 GMT
 	    Subject: C=US, ST=New York, L=Pelham, O=xml-dev, OU=web, CN=www.xml-dev.com/Email=saqib@xml-dev.com
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
             RSA Public Key: (1024 bit)
                 Modulus (1024 bit):
 		............
 		............
                 Exponent: 65537 (0x10001)
     Signature Algorithm: md5WithRSAEncryption
     	............
 	............

 	</screen>
</sect3>	
 	<sect3><title>A httpd.conf fájl módosítása a tanúsítványok telepítéséhez</title>

 	<para>Ezt kell elhelyezned a szerveren, és beállítanod az Apache-ban ennek helyét.</para>
	<para>Például a titkos kulcsot az <filename>/usr/local/apache2/conf/ssl.key/</filename> könyvtárba, a tanúsítványt pedig az <filename>/usr/local/apache2/conf/ssl.crt/</filename> könyvtárba.</para>
	<para>Másold le a tanúsítványt egy <filename>server.crt</filename> nevű fájlba, az <filename>/usr/local/apache2/conf/ssl.crt/</filename> könyvtárba.</para>
	<para>Az előző lépésben generált private.key fájlt helyezd az <filename>/usr/local/apache2/conf/ssl.key/</filename> könyvtárba</para>
	<para>Ezután módosítsd az <filename>/usr/local/apache2/conf/ssl.conf</filename> fájlt, hogy a megfelelő titkos kulcsra és tanúsítványra mutasson:</para>

<screen>
#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
<emphasis role="strong">SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt</emphasis>
#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
<emphasis role="strong">SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/private.key</emphasis>
#SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server-dsa.key
</screen>
</sect3>
</sect2>


<sect2><title>A jelmondat (passphrase) eltávolítása az RSA titkos kulcsból</title>
<para>A webszerveren tárolt RSA titkos kulcs általában titkosított, ezért szükséged van egy jelmondatra a használatához. Ezért kér jelmondatot, 
mikor az Apache-ot modssl-el indítod:</para>

<para>
<screen>
<command># apachectl startssl</command>
<command>Apache/1.3.23 mod_ssl/2.8.6 (Pass Phrase Dialog)</command>
<command>Some of your private key files are encrypted for security reasons.</command>
<command>In order to read them you have to provide us with the pass phrases.</command>
<command>Server your.server.dom:443 (RSA)</command>
<command>Enter pass phrase:</command>
</screen>
</para>

<para>Az RSA titkos kulcs titkosítása nagyon fontos. Ha valaki megkaparintja a
"titkosítatlan RSA titkos kulcsot", akkor könnyen eltulajdoníthatja a  webszervert. Ha a kulcs titkosított, az illető nem tud semmit tenni a jelmondat
nélkül, hacsak "nyers erővel" (brute force) fel nem töri. Használj erős (értsd: hosszú és értelmetlen) jelmondatot erre a célra. </para>

<para>A kulcs titkosítása néha kellemetlenség forrása is lehet, mivel a webszerver minden indításakor kéri a jelmondatot. Különösen ha rc
szkripteket használunk, a webszerver rendszerindításkor történő betöltéséhez. A jelmondat bekérése problémát okozhat, mivel megállítja a folyamatot, bemenetre vár.</para>

<para>Könnyen megszabadulhatsz a jelmondattól, ha visszafejted (decrypt) a kulcsot. Bizonyosodj meg arról, hogy senki se szerezheti meg a kulcsot. Vedd figyelembe a biztonsági és védelmi ajánlásokat, mielőtt visszafejted a kulcsot a webszerveren.</para>

<para>A kulcs visszafejtésének módja:</para>
<para>Először készíts másolatot a titkosított kulcsról</para>
<para><screen><command># cp server.key server.key.cryp</command></screen></para>
<para>aztán írd újra a kulcsot titkosítással. Kérni fogja tőled az eredeti
titkosított kulcs jelmondatát:</para>
<para><screen><command># /usr/local/ssl/bin/openssl rsa -in server.key.cryp -out server.key</command>
read RSA key
Enter PEM pass phrase:
writing RSA key
</screen>
</para>

<para>
Íme egy módja annak, miként biztosíthatod a visszafejtett titkos kulcsot. Így csak a root felhasználó olvashatja:
<screen>
<command># chmod 400 server.key</command>
</screen>
</para>
</sect2>

<sect2><title>SSL teljesítménybeállítás</title>
	<sect3><title>Munkafolyamatok közötti SSL részfolyamat-gyorstár  (Inter Process SSL Session Cache)</title>
		<para> Az Apache többfolyamatos modellt használ, amelyben NEM ugyanaz a munkafolyamat foglalkozik az összes kéréssel. Ennek eredményeként az SSL részfolyamat adatai (Session Information) elvesznek, mikor a kliens többszörös kéréssel fordul a szerverhez. A többszörös kapcsolódás nagy többletterhelést jelent a webszervernek és a kliensnek. Ennek elkerülésére az SSL részfolyamatok adatai egy munkafolyamatok közötti részfolyamat-tárban tárolódnak, ez lehetővé teszi a munkafolyamatok számára a kapcsolódási adatokhoz való hozzáférést. Az SSLSessionCache kapcsoló az <filename>/usr/local/apache2/conf/ssl.conf</filename> fájlban van, itt határozhatod meg az SSL részfolyamat-gyorstár helyét:</para>
	<screen>
SSLSessionCache        shmht:logs/ssl_scache(512000)
#SSLSessionCache        shmcb:logs/ssl_scache(512000)
#SSLSessionCache         dbm:logs/ssl_scache
SSLSessionCacheTimeout  300
</screen>

<para>A dbm használata: a logs/ssl_scache DBF hash-fájlt készít gyorstárként a helyi lemezeden.</para>
<para>A shmht használata: a logs/ssl_scache(512000) a gyorstárat a megosztott memóriában hozza létre.</para>

<note><title>shmht vs shmcb</title>
	<para>shmht: egy hash táblát használ az SSL kapcsolódási adatok gyorstárazására a megosztott memóriában.</para>
	<para>shmht: egy ciklikus buffert használ az SSL kapcsolódási adatok gyorstárazására a megosztott memóriában.</para>
</note>

<note><title>Megjegyzés:</title>
	<para>Nem minden platform/operációs rendszer támogatja hash tábla létrehozását a megosztott memóriában. Ekkor a "dbm:logs/ssl_scache"-t kell használnod helyette.</para>
</note>
</sect3>

<sect3><title>Az SSLSession gyorstár ellenőrzése</title>
<para>Az SSLSessionCache megfelelő működésének ellenőrzésére az <command>openssl</command> segédprogramot használhatod a <command>-reconnect</command> kapcsolóval, mint azt a következőkben láthatod:</para>
<screen>
<command># openssl s_client -connect your.server.dom:443 -state  -reconnect</command>

CONNECTED(00000003)
.......
.......
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
</screen>
<para>A <command>-reconnect</command> kapcsoló kényszeríti az "s_client"-et arra, hogy ötször ugyanazzal a SSL munkafolyamat-azonosítóval (SSL session ID) kapcsolódjon a szerverhez. Ötször ugyanannak az SSL munkafolyamat-azonosítónak az újrahasználatát kell látnod, mint a fenti példában.</para>
</sect3>
</sect2>
      
</sect1>

<appendix><title>HTTP/HTTPS teljesítménybeállító programok</title>
	<para>Íme egy lista, a Web szerverekhez használható, nyílt forrású teljesítménybeállító programokról:</para>
<orderedlist numeration="lowerroman">
	<listitem>
		<para><ulink url="http://distcache.sourceforge.net/">SSLswamp</ulink> - 
		egy SSL-t használó szerverhez csatlakozni képes terhelhetőségi teszt/teljesítménymérő program</para>
	</listitem>
	<listitem>
		<para><ulink url="http://www.hpl.hp.com/personal/David_Mosberger/httperf.html">HTTPERF</ulink> - Egy eszköz a Web szerver teljesítményének beméréséhez</para>
	</listitem>
	<listitem>
		<para><ulink url="http://httpd.apache.org/docs-2.1/en/programs/ab.html">ab</ulink> - Apache HTTP szerver teljesítménybeállító program</para>
	</listitem>
</orderedlist>
</appendix>

<appendix><title>Hardveres SSL titkosítási megoldások</title>
	<para>A következő hardveres SSL titkosítási megoldások érhetők el:</para>
<orderedlist numeration="lowerroman">
	<listitem>
		<para><ulink url="http://www.ncipher.com">CHIL (Cryptographic Hardware Interface Library; titkosító hardverek csatolófelületeinek programkönyvtára)</ulink>  az nCipher-től</para>
	</listitem>
	<listitem>
		<para><ulink url="http://httpd.apache.org/docs-2.1/en/programs/ab.html">ab</ulink> - Apache HTTP szerver teljesítménybeállító program</para>
	</listitem>
</orderedlist>
</appendix>

<appendix><title>Megbízott tanúsítvány hatóságok (Trusted Certificate Authorities)</title>
<para>Íme a tanúsítvány hatóságok (Certificate Authorities) listája, amelyeket a különböző böngészők megbízhatónak minősítenek:</para>
<orderedlist numeration="lowerroman">
	<listitem>
		<para><ulink url="http://www.baltimore.com/">Baltimore</ulink></para>
	</listitem>
	<listitem>
		<para><ulink url="http://www.entrust.com/">Entrust</ulink></para>
	</listitem>
        <listitem>
 		<para><ulink url="http://www.globalsign.net/">GeoTrust</ulink></para>
 	</listitem>
	<listitem>
		<para><ulink url="http://www.thawte.com">Thawte</ulink></para>
	</listitem>
	<listitem>
		<para><ulink url="http://www.trustcenter.de/">TrustCenter</ulink></para>
	</listitem>
</orderedlist>
 </appendix>

<glossary id="glossary"><title>A nyilvános kulcsú titkosítással kapcsolatos szavak gyűjteménye</title>

<glossdiv><title>A</title>

	<glossentry id="asymmetric_crypt"><glossterm>Asymmetric Cryptography (aszimmetrikus titkosítás)</glossterm>
<glossdef>
	<para>Ez a titkosítás egy kulcspárt - titkos (Private) és nyilvános (Public) kulcsot használ. A titkos kulcsot (Private Key) biztonságos helyen kell tartani, a nyilvános kulcsot (Public Key) pedig széles körben terjeszteni.</para>
</glossdef>
</glossentry>
</glossdiv>


<glossdiv><title>C</title>

<glossentry id="certificate"><glossterm>Certificate (tanúsítvány)</glossterm>
<glossdef>
	<para>Egy adatjegyzék, amely az <link linkend="InstallingServerCert">X.509 Format</link>-ban szereplő információkat tartalmazza. </para>

</glossdef>
</glossentry>

<glossentry id="ca"><glossterm>Certificate Authority (CA) (tanúsítvány hatóság; TH)</glossterm>
	<acronym>CA</acronym>
<glossdef>
	<para>A digitális tanúsítvány (Digital Certificate) kibocsátója. Azon végfelhasználó (End-Entity) azonosságát is hitelesíti, amelynek birtokában van a digitális tanúsítvány.</para>
</glossdef>
</glossentry>

<glossentry id="csr"><glossterm>Certificate Signing Request (CSR) (tanúsítvány aláírási kérelem; TAK)</glossterm>
	<acronym>CSR</acronym>
<glossdef>
	<para>A tanúsítvány aláírási kérelem (Certificate Signing Request; CSR) az, ami elküldésre kerül a tanúsítvány hatóságnak (Certifiate Authority; CA) bejegyzésre. Az aláírási kérelem tartalmazza a végfelhasználó (End-Entity) nyílvános kulcsát (Public Key), amelyre a digitális tanúsítványt kérelmezik.</para>
</glossdef>
</glossentry>

<glossentry id="cn"><glossterm>Common Name (CN) (közönséges név)</glossterm>
	<acronym>CN</acronym>
<glossdef>
	<para>A közönséges név (Common Name) a végfelhasználó (End-Entity) neve, például Saqib Ali. Ha a végfelhasználó egy webszerver, akkor ez a webszerver "teljesen képzett domain neve" (Fully Qualified Domain Name; FQDN).</para>
</glossdef>
</glossentry>


</glossdiv>

<glossdiv><title>D</title>

	<glossentry id="digitcert"><glossterm>Digital Certificate (digitális tanúsítvány)</glossterm>

<glossdef>
	<para>Egy tanúsítvány kapcsolja a nyilvános kulcsot (Public Key) egy személyhez (Subject; end-entity). Ez a tanúsítvány az <link linkend="InstallingServerCert">X.509 Format</link>-ban meghatározott egyéb azonosító információkat is tartalmaz a személyről. A kibocsátó CA (tanúsítvány hatóság; TH) aláírásával van ellátva, annak titkos kulcsát használva ehhez a művelethez. Íme egy <link linkend="viewingdigitcertcontent">digitális tanúsítvány</link>.</para>
</glossdef>
</glossentry>

<glossentry id="digitsign"><glossterm>Digital Signature (digitális aláírás)</glossterm>
<glossdef>
	<para>Egy digitális aláírás (Digital Signature) az üzenetkivonat (Message Digest) titkos kulccsal történő aláírásával készíthető el.  Biztosít a küldő (Sender) (személy)azonosságáról (Identity) és az adat sértetlenségéről (Integrity of the Data).</para>
</glossdef>
</glossentry>
</glossdiv>

<glossdiv><title>E</title>
<glossentry id="end_entity"><glossterm>End-Entity (végfelhasználó)</glossterm>
<glossdef>
	<para>Egy felhasználó, aki részt vesz a nyilvános kulcsú titkosításban. Általában szerver, szolgáltatás (Service), útválasztó (Router) vagy személy. A tanúsítvány hatóság (Certificate Authority; CA) nem végfelhasználó.</para>
</glossdef>
</glossentry>
</glossdiv>

<glossdiv><title>H</title>
<glossentry id="hash"><glossterm>Hash (a titkosítás eredménye)</glossterm>
<glossdef>
	<para>A titkosítás eredménye egy hexadecimális szám, amely egy szöveg karakterláncából lett generálva, ezért két különböző karakterlánc nem képes ugyanazt a titkosított eredményt produkálni.</para>
</glossdef>
</glossentry>

<glossentry id="hmac"><glossterm>HMAC: Keyed Hashing for Message Authentication (kulcsos titkosítás üzenethitelesítéshez)</glossterm>
		<acronym>HMAC</acronym>
<glossdef>
	<para>A HMAC egy megvalósítása az üzenethitelesítő-kód algoritmusnak (Message Authentication Code Algorithm).</para>
</glossdef>
</glossentry>


</glossdiv>

<glossdiv><title>M</title>
	<glossentry id="mac"><glossterm>Message Authentication Code (üzenethitelesítő-kód)</glossterm>
		<acronym>MAC</acronym>
<glossdef>
	<para>Hasonló az üzenetkivonathoz (Message Digest; Hash/Fingerprint), azzal a különbséggel, hogy a titkosított eredmény kiszámításához a megosztott rejtett kulcs (Shared Secret Key) lett felhasználva. Mivel a rejtett kulcs lett felhasználva, ezért egy támadó nem tudja megváltoztatni az üzenetkivonatot. Mindezek mellett a rejtett kulcsok kell először közölni a partnerekkel, ellentétben a digitális aláírással, amelynél az üzenetkivonat a titkos kulccsal (Private Key) van aláírva. A HMAC egy példája az üzenethitelesítő-kód algoritmusnak.</para>
</glossdef>
</glossentry>

<glossentry id="md5"><glossterm>Message Digest 5 - MD5 (üzenetkivonat 5)</glossterm>
	<acronym>MD5</acronym>
<glossdef>
	<para>Az üzenetkivonat 5 (Message Digest 5; MD5) egy 128 bites egyirányú titkosító függvény.</para>
</glossdef>
</glossentry>


</glossdiv>

<glossdiv><title>P</title>

<glossentry id="private_key"><glossterm>Private Key (titkos kulcs)</glossterm>
<glossdef>
	<para>A titkos kulcsot - az aszimmetrikus titkosítási rendszerben - a tulajdonosa (End-Entity) biztonságos helyen tartja. Titkosításra és visszafejtésre használható.</para>
</glossdef>
</glossentry>

<glossentry id="public_key"><glossterm>Public Key (nyilvános kulcs)</glossterm>
<glossdef>
	<para>Az aszimmetrikus titkosítás nyilvános kulcsát széles körben terjesztik. Titkosításra és visszafejtésre használható.</para>
</glossdef>
</glossentry>
	<glossentry id="pki"><glossterm>Public Key Infrastructure (PKI) (nyilvános kulcsos rendszer; NYKR)</glossterm>
		<acronym>PKI</acronym>
<glossdef>
	<para>Nyilvános kulcsos rendszer.</para>
</glossdef>
</glossentry>
</glossdiv>


<glossdiv><title>S</title>

<glossentry id="sha1"><glossterm>SHA-1: Secure Hash Algorithm (biztonságos titkosító algoritmus)</glossterm>
	<acronym>MD5</acronym>
<glossdef>
	<para>A biztonságos titkosító algoritmus (Secure Hash Algorithm; SHA-1) egy 160 bites egyirányú titkosító függvény. Az üzenet maximális hossza 2^64 bit.</para>
</glossdef>
</glossentry>
	<glossentry id="sslayer"><glossterm>Secure Socket Layer (SSL) (Biztonsági Alréteg)</glossterm>
	<acronym>SSL</acronym>
<glossdef>
	<para>Az SSL egy biztonsági protokoll, amely hitelességet (digitális aláírás), megbízhatóságot (titkosítás) és adatsértetlenséget (üzenet ellenőrzés - MD5, SHA, stb.) biztosít</para>
</glossdef>
</glossentry>
<glossentry id="symmetric_crypt"><glossterm>Symmetric Cryptography (Szimmetrikus Titkosítás)</glossterm>
<glossdef>
	<para>Ebben a rendszerben az üzenet ugyanazzal a kulccsal titkosítható és visszafejthető. (((n^2-n))/2) számú kulcsra van szüksége n felhasználónak, ha ezen módszer szerint akarnak titkosítani.
	</para>
</glossdef>
</glossentry>

</glossdiv>


</glossary>

</article>

