czwartek, 20 września 2007

SSL w Tomcat 5.5 i wyżej

Jak 'w miarę' szybko włączyć SSL-a w Tomcat-cie 5.5?

1. Potrzebujemy certyfikatu klucza publicznego i klucza prywatnego dla naszego serwera, można uzyskać darmowy np. od Thawte na 30-90 dni lub generujemy go sobie na próbę sami przy pomocy keytool z Java JDK.
Należy pamiętać, że CN w nazwie certyfikatu (Common Name) musi odpowiadać adresowi IP lub nazwie naszego serwera.
Docelowo dla publicznego serwera na którym mamy nasz będziemy musieli sobie go kupić, ale nie jest to duży wydatek.
Teraz, jeżeli otrzymaliśmy od CA plik P12 to lecimy do punktu 2.

2 a)
Jeżeli nie posiadamy certyfikatu i klucza prywatnego w postaci pliku P12/PFX, ale mamy klucz prywatny (np. server.key) i związany z nim certyfikat klucza publicznego (server.crt) to musimy z nich zrobić PFX-a.
Robimy to kopiując zawartość klucza i certyfikatu do jednego pliku w notatniku lub innym edytorze tekstowym i zapisujemy do pliku server.pem.
Teraz wystarczy jedna linijka polecenia za pomocą OpenSSLa:
openssl pkcs12 -export -in server.pem -out server.p12
i podajemy hasło do naszego pliku pfx, np. 'password' :)

2. Kopiujemy server.p12 do CATALINA_HOME, czyli np. c:\Program Files\Apache Software Foundation\Tomcat 5.5

3. Modyfikujemy plik CATALINA_HOME\conf\server.xml,
dodajemy nowy konektor za innym tagiem o tej samej nazwie:
< port="443" protocol="HTTP/1.1" maxthreads="150" keystorefile="server.p12" keystorepass="password" keystoretype="PKCS12" sslenabled="true" scheme="https" secure="true" clientauth="false" sslprotocol="SSL">

Jeżeli chcemy, żeby tylko za pośrednictwem SSL-a można było łączyć się z serwerem, to musimy jeszcze zakomentować tag z drugim konektorem, do portu 8080.

4. Restartujemy serwer, i próbujemy połączyć się z nim za pośrednictwem https, np. u mnie to jest taki adres: https://192.168.128.123/aplikacja/login.jsp

Jeżeli wszystko dobrze zrobiliśmy, to już możemy używać bezpiecznego połączenia z serwerem!

SCJP

We wtorek 18. zostałem Javczakiem. Z certyfikatem od Suna.
Konkretnie to zdałem egzamin "Sun Certified Java Programmer" 310-055 i strasznie się z tego cieszę :)
Zabierałem się do tego od wiosny, ale zawsze miałem wrażenia że za mało umiem.