java_06.pdf

(216 KB) Pobierz
351969195 UNPDF
Java, bazy danych i SSL
1. MySQL:
własności połączenia,
transmisja z wykorzystaniem SSL.
2. Własne programy wykorzystujące SSL.
3. RMI i SSL
- implementacja własnych wersji klas ServerSocket i Socket .
- wykorzystanie własnych gniazd w ramach RMI
- implementacja własnej klasy RMIClientSocketFactory .
- implementacja własnej klasy RMIServerSocketFactory .
- szyfrowanie SSL w RMI
1
MySQL i JDBC
Dokumentacja: http://dev.mysql.com/doc/refman/5.0/en/java-connector.html .
Nawiązanie połączenia:
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/test?user=monty&password=");
Ogólnie "connectString" ma postać:
jdbc:mysql://[host][,failoverhost...][:port]/[database]
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
Domyślny adres host'a to '127.0.0.1'. Domyślny port to '3306'.
jdbc:mysql://[host:port],[host:port].../[database]
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
Jeśli nie zostanie podana nazwa bazy danych, w przyszłości należy ją ustawić
metodą setCatalog() na rzecz obiektu Connection lub w zapytaniach przesyłać
pełne nazwy tabel: (np. SELECT dbname.tablename.colname FROM
dbname.tablename ). 2
Wybrane własności połączenia
user – nazwa użytkownika (domyślnie '' ),
password - hasło ( '' ),
useCompression – czy używać kompresji podczas komunikacji z serwerem
( false ),
autoReconnect – czy odtwarzać nieaktywne połączenia ( false ),
useSSL – czy używać SSL'a podczas komunikacji ( false ),
requireSSL – wymagać SSL'a gdy useSSL=true ? ( false ),
logger – nazwa klasy logującej implementującej com.mysql.jdbc.log.Log ,
używanej do logowania zdarzeń ( com.mysql.jdbc.log.StandardLogger ),
zeroDateTimeBehavior – jak obsługiwać daty wypełnione zerami, opcje:
exception , round oraz convertToNull ( exception ). 3
Kodowanie znaków
Wszystkie teksty wysyłane przez sterownik do bazy danych są automatycznie
konwertowane z Unikodu (natywne kodowanie w Javie) do kodowania używanego
przez komputer klienta.
Kodowanie znaków między klientem i serwerem jest wykrywane automatycznie
podczas nawiązania połączenia. Kodowanie używane przez sterownik jest ustawiane
po stronie serwera poprzez character_set (przed 4.1.0) lub
character_set_server (od 4.1.0). Aby zmienić automatyczne kodowanie należy
ustawić własność characterEncoding w connectString'u .
Najczęstsze kodowania nazwa MySQL (nazwa Java):
usa7 (US-ASCII), latin1 (ISO8859_1), latin2 (ISO8859_2), win1250ch (Cp1250),
utf8 (UTF-8), ucs2 (UnicodeBig).
4
Używanie SSL'a
SSL szyfruje wszystkie przesyłane dane. Wydajność komunikacji spada o 35-50%.
Konfiguracja serwera:
http://dev.mysql.com/doc/refman/5.0/en/secure-connections.html.
W skrócie:
konfiguracja kompilacji:
SHOW VARIABLES LIKE 'have_openssl';
wygenerowanie certyfikatów SSL:
zmiany w pliku my.cnf ,
uruchomienie serwera.
5
Zgłoś jeśli naruszono regulamin