Spis treści
WebSphere MQ - Konfiguracja połączenia szyfrowanego SSL
Autor: Marcin Kasiński
24.04.2012 12:59:49 +0200
WebSphere MQ ma możliwość za pomocą SSL zabezpieczyć komunikacje kliencka, jak również komunikacje pomiędzy menadżerami. Każdemu menadżerowi przypisana jest własna baza certyfikatów i tą bazę będzie on używał przy połączeniach szyfrowanych. Baza ta jest w standardowym formacie pliku kdb. Ważne tu jest, że w celu poinformowania menadżera jakiego klucza prywatnego ma używać alias tego klucza musi nosić odpowiednią nazwę.
Nazwa ta to webspheremq{QMGNNAME} , gdzie {QMGNNAME} , to nazwa menadżera pisana małymi literami. Po odpowiednim przygotowaniu bazy możemy przystąpić do konfiguracji kanału.
Parametry menadżera
Parametry menadżera odpowiadające za komunikacje SSL to:
SSLKEYR
Określa plik z bazą certyfikatów bez rozszerzenia. Standardowo parametr ten ustawiony jest na : {MQDIR}/qmgrs/{QMGR_NAME}/ssl/key Oznacza to, że plik ten będzie nazywał się {MQDIR}/qmgrs/{QMGR_NAME}/ssl/key.kdb
SSLCRLNL
Określa obiekt namelist zawierający listę definicji połączeń do serwera LDAP. Poprzez te połączenia menadżer będzie weryfikował listę certyfikatów, które zostały anulowane.
SSLEV
Określa, czy jest w przypadku błędu podczas negocjacji SSL będzie generowany odpowiedni komunikat EVENT.
SSLCRYP
Określa parametry związane ze urządzeniem kryptograficznym jeśli jest wykorzystywane.
SSLFIPS
Określa ...
SSLRKEYC
Określa ilość bajtów, jaka jest przesłana lub odebrana pomiędzy renegocjacjami klucza SSL. Parametry kanału odpowiadające za komunikacje SSL to:
SSLCIPH
Określa CipherSpecs ( sposób szyfrowania ) jaki będzie użyty przy komunikacji.
SSLPEER
Określa dn, jaki zostanie zaakceptowany podczas połączenia SSL. Można tu stosować paterny. W momencie negocjacji połączenia z duga strona, jeśli certyfikat drugiej strony nie będzie się zgadzał z tym paternem połączenie nie zostanie nawiązane.
SSLCAUTH
Określa, czy wymagane jest aby strona kliencka przedstawiła się certyfikatem w celu autentykacji. Poniżej znajduje się kod modyfikujący kanał poprzez ustawienie CipherSpecs, CN'a drugiej strony jaki będzie akceptowany oraz konieczności weryfikacji certyfikatu strony łączącej się.
alter chl('receiver') chltype(rcvr) + SSLCAUTH(REQUIRED) + SSLCIPH(RC4_MD5_US) + SSLPEER('CN=QM1, OU=Data Center, O=IT Company')
Konfiguracja aplikacji
Jeśli chodzi o część aplikacyjną, to aby połączyć się z kanałem kliencki skonfigurowanym do obsługi SSL należy ustawić statyczne pole sslCipherSuite klasy MQEnvironment określające CipherSuite połączenia, które MUSI być identyczne jak to samo pole kanału klienckiego, do którego aplikacja chce się łączyć oraz dodatkowo zmienne systemowe javax.net.ssl.keyStore i javax.net.ssl.trustStore określające plik z kluczem prywatnym oraz z zaufanymi certyfikatami wraz z hasłami do tych plików javax.net.ssl.keyStorePassword i javax.net.ssl.trustStorePassword .
MQEnvironment.sslCipherSuite = "SSL_RSA_WITH_NULL_MD5"; System.setProperty("javax.net.ssl.keyStore", "D:\\sec\\client.jks"); System.setProperty("javax.net.ssl.keyStorePassword","haslo"); System.setProperty("javax.net.ssl.trustStore","D:\\sec\\client.jks"); System.setProperty("javax.net.ssl.trustStorePassword","haslo"); powrót
Komentarze
Dodaj Komentarz
Newsletter
Jeżeli chcesz być na bieżąco informowany o aktualnościach i poradach IT zapisz się do naszego newslettera.