SSL aneb bezpečí na dosah?

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: Genua_
Datum: 18.5.2007
Hodnocení/Hlasovalo: 0/0

O co se jedná? K čemu se využívá? Jak ho použít?

Úvod

Pro začátek bychom si měli vysvětlit, co to vůbec SSL je.
SSL (Secure Socket Layer)je protokol, který dovoluje odesílat pakety na internet zašifrované. SSL tedy můžeme "spojit" s námi již známým HTTP. Tímto spojením získáme HTTPS (HTTP Secure). Využívá se především na portálech, kde je riziko ztráty osobních dat, nebo e-shopech, kde se provádí denně mnoho transakcí.
SSL NEzabraňuje téměř žádným útokům zvenčí, pouze chrání komunikaci před sniffingem (odposloucháváním dat na síti).
Zároveň komunikace je relativně jednoduchá.
Server odešle při každém připojení klientovi veřejný klíč. Klient pak může otevřít informace pouze díky soukromému klíči.
Po výměně klíčů si prohlížeč zapamatuje spojení a zabrání tak útokům typu mimicking (man-in-the-middle attack).
Samozřejmě se tyto dva protokoly liší i portem na kterém běží.
Protokol HTTP se využívá na portech 80, ovšem protokol HTTPS na portech 443, tedy když se náš prohlížeč připojuje přes SSL, tak se automaticky připojuje na port 443.

Existuje mnoho způsobů, jak implementovat SSL do Apache. Jako napříkald projekt core teamu Apache-SSL nebo také komerční řešení. Ovšem nejznámějším řešením je využití modulu mod_ssl. Jedna z jeho mnohých výhod je především akceptace všech operačních systémů a stabilita.

Kompilace mod_ssl

Jedná se o nejznámější způsob použití HTTPS. Tento projekt vznikl v roku 1998 od Ralf S. Engelschall, který tento způsob vyvodil z již známého projektu Apache-SSL.
Projekt byl uvolněn pod licencí typu BSD-style, což znamená, že se může využívat zdarma i pro komerční způsoby a může být využit jako základ dalšího projektu.
Využívá se jako patch, z toho automaticy vyplívá, že musíme pro každou verzi Apache použít předem určený mod_ssl.
Napříkald pro již starý Apache 1.3.23 byl patch mod_ssl-2.8.6-1.3.23.

Instalace OpenSSL

Další možnost je využití OpenSSL, který dovolí využívat SSL v2/v3 a TLS v1 (Transport Layer Security).
Jedná se o projekt vytvořený na základech knihoven vytvořených Eric A. Young a Tim J. Hudson.
Tyto knihovny jsou také pod licencí volného využití. Jeho instalace probíhá jako každý jiný package.
- stáhneme zdrojáky z oficiálního webu a zkontrolujeme MD5Sum.
- dearchivujeme archiv
root@dido src# tar zxvf openssl-0.9.6g.tar.gz
- Spustíme skript configure s vlastním nastavením.
- adresář SSL je většinou /usr/local/ssl
- Můžeme znovu načíst nastavení zavoláním následujícího příkazu:
root@dido openssl-0.9.6g# ./config --help
- Skript config by měl automaticky pochopit pro jaký operační systém vytváří knihovny, kdyby tomu tak nebylo, tak můžeme zasáhnout ručně.

Klientské certifikáty

SSL může pracovat i s anonymními klienty, kteří podporují protokoly a ciphers označovány jako SSLProtocol a SSLCipherSuite.
Pro povolení serveru práci s nimi musíme ukázat serveru seznam, kde jsou jednotlivé certifikáty vypuštěné SSLCACertificatePath:
SSLCACertificatePath /usr/local/apache/conf/ssl/cacerts

Logování SSL

Adresář, kde se loguje SSLLog i TransferLog je totožná, jedná se o tenhle adresář:
SSLLog /logs/ssl.log
Dále můžete nastavit formát logování díky LogFormat, která je používána i v normalním logování.
Můžete navíc využít i těchto proměnných:
%{version}c je stejné jako %{SSL_PROTOCOL}x
%{cipher}c je stejné jako %{SSL_CIPHER}x
%{subjectdn}c je stejné jako %{SSL_CLIENT_S_DN}x
%{issuerdn}c je stejné jako %{SSL_CLIENT_I_DN}x
%{errcode}c certificate verification error code
%{errstr}c certificate verification error string

Použití si ukážeme na malém příkladu:
CustomLog logs/ssl_log "%h %t \"%r\" %{SSL_PRTOTOCOL}x %{SSL_CIPHER}x env=HTTPS"

Závěr

Snad vám tenhle poměrně "krátký" článek pomohl stejně hodně, jako mně.