Apache2 prywatny centyfikat SSL

Podczas przesyłania danych pomiędzy przeglądarką klienta, a serwerem www czasem zachodzi potrzeba zaszyfrowania danych. Takie dane jak hasła, dane osobowe czy inne istotne informacje bezwzględnie należy szyfrować, gdyż bez szyfrowania mogą dostać się w niepowołane ręce.

Do szyfrowania danych potrzebny jest certyfikat. Można go wygenerować i wysłać do instytucji certyfikującego w celu jego podpisania lub możemy do wygenerować i podpisać sami (co i kiedy jest lepsze dla nas, w innym artykule).

Na początku instalujemy potrzebne pakiety:

root@server:# apt-get install openssl ssl-cert

Tworzymy w katalogu /etc/apache/ podkatalog ssl, a w nim kolejne podkatalogi certs (katalog do przetrzymywania certyfikatów) i private (katalog do przetrzymywania kluczy). W celu utworzenia i podpisania certyfikatu SSL własnym kluczem, w katalogu /etc/apach2/ssl wydajemy poniższe polecenie:

root@server:# openssl req -x509 -nodes -days 1864 -newkey rsa:2048 -keyout ./private/domena.pl.key -out ./certs/domena.pl.pem

zostaniemy zapytani o miasto, kraj, nazwę firmy, nazwę domeny, itp.

Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Wojewodztwo
Locality Name (eg, city) []:Miejscowosc
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nazwa firmy
Organizational Unit Name (eg, section) []:Dział firmy
Common Name (e.g. server FQDN or YOUR name) []:www.domena.pl
Email Address []:admin@domena.pl
A challenge password []:
An optional company name []:

Na pytania możemy nie odpowiadać naciskając Enter lub możemy wpisać odpowiednie dane, które później będą zawarte w certyfikacie.

Dla bezpieczeństwa należy pamiętać, aby nadać prawa odczytu do obydwu plików tylko dla roota.

chmod 600 /etc/apache2/ssl/private/domena.pl.key 
chmod 600 /etc/apache2/ssl/certs/domena.pl.pem

Poniższym poleceniem można sprawdzić poprawność

certyfikatu:

openssl x509 -noout -text -in /etc/apache2/ssl/certs/domena.pl.pem

i klucza:

openssl rsa -noout -text -in /etc/apache2/ssl/private/domena.pl.key

Należy pamiętać o dodaniu odpowiednich modułów do apacha w katalogu /etc/apache2/mods-enables ssl.conf i ssl.load. W przypadku wybrania innych portów niż domyślny port ssl 443 należy w pliku /etc/apache2/ports.conf dodać odpowiednie wpisy np.  Listen 444 dla portu 444.

Na koniec należy przeładować konfigurację apacha:

root@server:# /etc/init.d/apache2 reload

lub zrestartować apacha:

root@server:# /etc/init.d/apache2 restart

Po wpisaniu w przeglądarkę https://www.domena.pl połączenie z serwerem będzie szyfrowane (oczywiście należy zadbać jeszcze o odpowiednią konfigurację apacha).