A FreeBSD-hez adott OpenSSL az egyik olyan tényező, amit a legtöbb felhasználó figyelmen kívül hagy. Az OpenSSL egy titkosítási réteget nyújt a hagyományos kommunikációs csatorna felett, így rengeteg hálózati alkalmazásba és szolgáltatásba bele lehet szőni.
Az OpenSSL
felhasználható többek közt a levelező
kliensek titkosított hitelesítésére,
hitelkártyás fizetések weben keresztüli
lebonyolítására alkalmas, és
még sok minden másra. Sok port, köztük a
www/apache13-ssl
és a
mail/sylpheed-claws
is
felajánlja az OpenSSL
felhasználását.
A legtöbb esetben a Portgyűjtemény
megpróbálja lefordítani a security/openssl
portot, hacsak a
WITH_OPENSSL_BASE
változót
határozottan a „yes” értékre
nem állítjuk.
A FreeBSD-hez mellékelt OpenSSL ismeri a Secure Sockets Layer v2/v3 (SSLv2/SSLv3) és Transport Layer Security v1 (TLSv1) hálózatbiztonsági protokollokat, és általános célú titkosítási könyvtárként is alkalmazható.
Noha az OpenSSL ismeri az
IDEA algoritmusát is, az Egyesült
Államokban érvényben levő szabadalmak
miatt alapértelmezés szerint nem
engedélyezett. A használatához el kell
olvasni a hozzá tartozó licencet, és ha
elfogadjuk a benne foglaltakat, akkor állítsuk be
a MAKE_IDEA
változót a
make.conf
állományban.
Az OpenSSL-t leginkább a szoftverek tanúsítványainak elkészítéséhez használják. Ilyen tanúsítvánnyokkal lehet szavatolni, hogy az érte felelős cég vagy egyén valóban megbízható és nem szélhámos. Amennyiben a kérdéses tanúsítványt nem vizsgálta be valamelyik „tanúsítványok hitelesítésével foglalkozó hatóság” (Certificate Authority, vagy CA), akkor erről általában kap egy figyelmeztetést a felhasználó. A tanúsítványokat hitelesítő cégek, mint például a VeriSign, írják alá ezeket a tanúsítványokat és ezzel érvényesítik az egyes cégek vagy egyének megbízhatóságát. Ez ugyan pénzbe kerül, de használatuk egyáltalán nem is kötelező. Azonban az átlagosnál paranoidabb felhasználók számára megnyugvást jelenthet.
A tanúsítványok létrehozására a következő parancs áll rendelkezésre:
#
openssl req -new -nodes -out req.pem -keyout cert.pem
Generating a 1024 bit RSA private key
................++++++
.......................................++++++
writing new private key to 'cert.pem'
-----
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 enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:országnév (kétbetűs kóddal)
State or Province Name (full name) [Some-State]:állam vagy tartomány teljes neve
Locality Name (eg, city) []:település neve
Organization Name (eg, company) [Internet Widgits Pty Ltd]:szervezet neve
Organizational Unit Name (eg, section) []:szervezeti egység neve
Common Name (eg, YOUR name) []:általános név (hálózati név!)
Email Address []:e-mail cím
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:VALAMILYEN JELSZÓ
An optional company name []:egy másik szervezet neve
Az adatok bekérésére előtt megjelenő figyelmeztető üzenet fordítása:
A „Common Name” mezőnél ellenőrzési okokból egy hálózati nevet, tehát a szerverünk nevét kell megadnunk. Ha nem így járunk el, akkor lényegében egy használhatatlan tanúsítványt kapunk. További opciók is elérhetőek, mint például a lejárati idő (expire time) megadása, a titkosítási algoritmus megváltoztatása stb. Ezek teljes listája megtalálható az openssl(1) man oldalon.
Az előbbi parancs kiadása után két
állománynak kell létrejönnie az
aktuális könyvtárban. A
tanúsítványkérést, vagyis az
req.pem
állományt kell
eljuttatnunk a tanúsítványok
hitelesítésével foglakozó szervhez,
aki majd érvényesíti az imént
megadott adatainkat. A második,
cert.pem
nevű állomány a
tanúsítványhoz tartozó privát
kulcs, amit semmilyen körülmények
között sem szabad kiadnunk. Ha ez mások
kezébe kerül, akkor el tudnak játszani
bennünket (vagy a szerverünket).
Amikor a hitelesítő szerv aláírása nem feltétlenül szükséges, akkor készíthetünk egy saját magunk által aláírt tanúsítványt is. Ehhez először is generálnunk kell egy RSA-kulcsot:
#
openssl dsaparam -rand -genkey -out saját_RSA.kulcs
1024
Most pedig készítsünk el a hitelesítő szerv kulcsát is:
#
openssl gendsa -des3 -out hitelesítő.kulcs
saját_RSA.kulcs
Ezzel a kulccsal most gyártsunk le egy tanúsítványt:
#
openssl req -new -x509 -days 365 -key hitelesítő.kulcs
-out új.tanúsítvány
Ekkor két új állomány keletkezik
a könyvtárunkban: a hitelesítő szerv
aláírása, a
és maga a tanúsítvány, az
hitelesítő.kulcs
állomány. Ezeket tegyük az új.tanúsítvány
/etc
könyvtáron
belül egy olyan könyvtárba, amelyet csak a
root
tud olvasni. A
chmod
paranccsal állítsunk be
rá 0700-as kódú engedélyeket.
Mire is jók ezek az állományok? Például kitűnően alkalmazhatóak a Sendmail levelező szerverhez beérkező kapcsolatot titkosítására. Így lényegében felszámoljuk minden olyan felhasználó titkosítatlan módon zajló hitelesítését, aki a helyi levelező szerveren keresztül küldi a leveleit.
Ez általában nem a legjobb megoldás, mivel egyes levelező kliensek hibát jeleneznek a felhasználónak, ha nem rendelkezik a tanúsítvánnyal. A tanúsítványok telepítésével kapcsolatban olvassuk el a szoftverhez adott leírást.
A helyi .mc
állományba
ezeket a sorokat kell beletenni:
új.tanúsítvány
')dnl
define(`confSERVER_CERT',`/etc/certs/új.tanúsítvány
')dnl
define(`confSERVER_KEY',`/etc/certs/hitelesítő.kulcs
')dnl
define(`confTLS_SRV_OPTIONS', `V')dnlItt a /etc/certs/
az
a könyvtár, amit tanúsítványok
és kulcsok helyi tárolására
használunk. Végezetül még újra
kell generálnunk a helyi .cf
állományokat. Ezt a /etc/mail
könyvtárban a
make
parancs
kiadásával könnyen elvégezhetjük.
Miután ez megtörtént, akkor
Sendmailhoz tartozó
démont a install
make
paraméterével indíthatjuk
újra.restart
Ha minden jól ment, akkor a
/var/log/maillog
állományban
nem találunk egyetlen hibaüzenetet sem, és a
Sendmail is megjelenik a futó
programok között.
A telnet(1) segédprogrammal így probálhatjuk ki a levelező szervert:
#
telnet example.com
25
Trying 192.0.34.166...
Connected to example.com
.
Escape character is '^]'.
220 example.com
ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo example.com
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 example.com
closing connection
Connection closed by foreign host.Ha itt megjelenik a „STARTTLS” sor, akkor mindent sikerült beállítanunk.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.