F
) / / & ) / + !
'F '$
U F )
) 0 ) & / ! $
* F 30
30 0 &30 + !'F F3D%)3<% '$
+ 30
0 !30 F38R%*S;F20 ) $
/ + & / + ! "=#1' '$
/ & / ! "=#$
"# & "V#
7 F .
0 !! & ! $$B=$
(0 0 0
"# &0 / ! 2=2 $
! $
C
!$
!$
C
0!FG G$
G * !$
C
C
C
$)*%
Chociaż rozszerzenia JCE umożliwiają zaszyfrowanie i odszyfrowanie dowolnych danych, protokół SSL (Secure Sockets Layer) daje możliwość przesyłania zaszyfrowanych danych za pośrednictwem połączenia sieciowego. SSL posiada zasadniczą zaletę —
uwalnia od konieczności samodzielnego szyfrowania danych. Dane są przesyłane za pośrednictwem zabezpieczonego gniazda w taki sam sposób, jak za pomocą zwykłego gniazda. Do szyfrowana służy implementacja SSL. Gniazda zabezpieczone działają tak samo jak zwykłe, a zatem współpracują ze wszystkimi klasami wbudowanymi Javy ob-sługującymi połączenia sieciowe. Można na przykład wykorzystać klasy -! oraz -!
do komunikacji z adresami ##" — wystarczy, że stosowany pakiet JDK
obsługuje SSL.
!
$
Rozszerzenie JSSE (Java Secure Sockets Extension), wbudowane w pakiet JDK 1.4 ob-sługuje gniazda zabezpieczone z poziomu Javy. Aby zastosować narzędzia JSSE z pa-kietami JDK w wersjach 1.2 lub 1.3, trzeba je samodzielnie pobrać i zainstalować. Niestety, instalacja jest utrudniona w podobny sposób, jak w przypadku JCE. Należy pobrać JSSE spod adresu http://java.sun.com/products/jsse i zdekompresować pakiet instalacyjny. Następnie pliki jse.jar, jcer.jar oraz jnet.jar z katalogu JSSE lib należy skopiować do katalogu JDK jre/lib.ext. Na końcu należy zmodyfikować plik jre/lib/security/java.
security, tak samo jak w przypadku instalacji JCE. Wiersz konfiguracji JSSE będzie wy-glądał następująco:
<& %
Podobnie, numer wiersza konfiguracji obsługi oprogramowania zabezpieczającego na-leży dopasować do aktualnego kształtu pliku java.security (powinien być on o jeden większy od bieżącego najwyższego numeru). Podobnie jak w przypadku JCE — JDK
w wersji 1.4 obejmuje rozszerzenia JSSE.
Zazwyczaj implementacja SOAP opiera się na mechanizmie obsługi SSL po stronie serwera WWW. Chcąc stosować SSL z SOAP, należy wyposażyć serwer WWW w obsłu-
gę tego protokołu. Wiele komercyjnych serwerów WWW obsługuje SSL automatycznie.
Jeżeli są zainstalowane rozszerzenia JSSE, także Apache Tomcat 4.0 obsługuje ten protokół. Wystarczy zmodyfikować plik server.xml w katalogu conf. Domyślnie w pliku tym sekcja sterująca obsługą SSL jest ujęta w znaki komentarza. Wygląda ona następująco: JWHH
J3 P &' 0 0X3 '
&'V??K'% &'<' G% &'T<'
4&' '
3&'M=' &'='0 &'0' &' 'B
J/ P &' 0 4 / '
(0&' '&'*4'B
J3 B
HHB
Do aktywacji SSL wystarczy usunąć znaczniki komentarza ./ 0. Jednak zanim serwer Tomcat będzie mógł obsługiwać SSL, trzeba mu zapewnić własny klucz szyfru-
jący. Klucz ten można utworzyć specjalnie dla tego serwera za pomocą następującego polecenia:
H H H 8(
Domyślnym ustawieniem serwera Tomcat jest, że zarówno baza , jak i sam klucz
są zabezpieczane hasłem . Po wygenerowaniu klucza i ponownym uruchomie-
niu serwera obsługa SSL powinna działać. Aby sprawdzić, czy tak jest rzeczywiście, wystarczy w przeglądarce wpisać adres URL https://tomcathostname:8443. Domyślna konfiguracja SSL dla serwera Tomcat wykorzystuje port 8443. Ustawienie to można zmienić na standardowy port 443 przez edytowanie pliku server.xml — numer portu znajduje się w sekcji sterującej obsługą SSL. Trzeba jednak pamiętać, że w przypadku systemów Unix czy Linux w celu uruchomienia serwera na porcie o numerze niższym niż 1024 trzeba mieć najwyższe uprawnienia.
$"
Na listingu 17.5 pokazano kod bardzo prostej klasy Java, którą można wywołać za pomocą SOAP.
Kod źródłowy ZłóżZamówienie.java
E69.E 9
E69.E 9 !$
C
69.! ) 2 2 3-Y2
YL2 ) ) 2
) ) $
7 -6 9 P 6
Y Y
!'E 9 Z'1 ) $
! $
!'3-YL''1 3-Y$
!'7 YL 9 Z'1 YL$
!') Z'
1 ) ) 1 ) ) $
'E 9 6. '
C
C
Z powyższego wynika, że klasa ta nie zawiera żadnego kodu obsługi SSL. Całość obsłu-gi tego protokołu jest zadaniem serwera WWW. Na listingu 17.6 pokazano kod klienta Apache SOAP, który korzystając z adresu URL wywołuje obiekt SOAP za po-
średnictwem SSL.
Kod źródłowy WyślijZamówienie.java
0 G
7YE 9
!"# $
* >84 (% 0 6 0
>84&
& >84!'0 0ZV??K '$
C
0!FG G$
G * !$
!
$#
G!=$
C
* 6
3 & 3 !$
7 (%29 .L
* >8+!'Z ('$
7 (%295 - 6 L
; 0P !'69.'$
% (%
F >8+!3 PS>8+S(%SFP3$
> 29 5
I & I !$
> 9
F ! % !' ) '2 2
') 7: '2$$
F ! % !' '2 2
'% K2<=HF ! % !' 3-Y'2 2
'DH=M<'2$$
F ! % !' YL'2+ 2
+ !V$2$$
F ! % !' ) ) '2 2
' 3 '2$$
F ! % !' ) ) '2 2
'?=MNKH<> 9.5
% ! $
8 &
76
& !2''$
C
0(%FG G$
G * !$
G!$
C
2 : 6-
!W / !$$
, . 2 9 Y
% I & 8 I !$
! I I !$$
C
/ & / !$
&%
!'75665Z'$
!')6-&'1 / 3 !$$
!') 6-&' / !$$
C
C
C
Istotne jest, że w przypadku klasy 1234 56 klasa -! stosuje oparty na SSL
prefiks zamiast . Program ten bez problemów powinien działać w środowisku JDK 1.4, ale w przypadku wersji 1.2 lub 1.3 należy przekazać do platformy Java odpowiednią informację o zastosowaniu protokołu SSL (prefiks ) i podać specjalny parametr systemowy (za pomocą opcji ). Program ten można uruchomić za pomocą na-stępującego polecenia:
H 0 &
7YE 9
Klasy Java -! i -! w rzeczywistości nie implementują żadnego z popular-