SSLServerSocket i import certyfikatów

0

Panowie,
Pracuję właśnie nad programem umożliwiającym komunikację pomiędzy kompami z wykorzystaniem SSLa. Google znajduje wiele przykładów na ten temat ale wszystkie z nich wymagają specjalnego uruchomienia programu podając keyStore w którym znajduje się certyfikat. Pytanie jest takie: Czy jest możliwość (jeśli jest to jak to zrobić) żeby podawać plik z certyfikatem który będzie używany w komunikacji po SSL np jako parametr wywołania programu

0

Pomijając to ze to ma związek z SSLem itd, to możesz podać ścieżkę do owego pliku jako parametr wywołania i dostać się do niej normalnie w main(String[] argv) jako argv[0]. Tylko śmiem wątpić że w tym tkwi problem ;]

0

wiem że mogę taki plik certyfikatu zaimportować ale jak wskazać JVM żeby akurat ten certyfikat był używany do komunikacji?

0

Hmm, jak to jak wskazac? Importujesz caly lancuch certyfikatow do bazy kluczy i powinno smigac bez problemu.

Narzdzie standardowe z JDK: keytool

Pozniej mozesz wykorzystac System Properties do wskazania, gdzie znajduja sie bazy kluczy:

np.

javax.net.ssl.keyStore
javax.net.ssl.trustStore
javax.net.ssl.keyStoreType
javax.net.ssl.keyStorePassword

Aplkacje pozniej urachamiasz:

java -Djavax.net.sslKeystore....

pozdrawiam,
yarel

0

No właśnie na tym polega problem że ja nie chce najpierw bawić się w zakładanie bazy kluczy a później uruchamianie programu z jakimiś kosmicznymi przełącznikami. Cel jest prosty: użytkownik uruchamia sobie najzwyczajniej mój program klika sobie przycisk przeglądaj i wskazuje plik *.crt który później będzie używany podczas bezpiecznej komunikacji z innym hostem.

0
maverick84 napisał(a)

No właśnie na tym polega problem że ja nie chce najpierw bawić się w zakładanie bazy kluczy a później uruchamianie programu z jakimiś kosmicznymi przełącznikami. Cel jest prosty: użytkownik uruchamia sobie najzwyczajniej mój program klika sobie przycisk przeglądaj i wskazuje plik *.crt który później będzie używany podczas bezpiecznej komunikacji z innym hostem.

Co prawda nie napisales, ktora strona legitymuje sie certyfikatem.

  • klient
  • serwer

... ale w przypadku, gdy serwer przedstawia cert, to pozostaje:

  1. napisac wlasna implementacje interfejsu TrustManager.
  2. utworzyc SSLContext i zaincjalizowac tym wlasnym TrustManagerem
  3. Z SSLContext pobrac SSLSocketFactory
  4. Uzyc SSLSocketFactory do utworzenia socketa

pozdrawiam,
yarel

0

Moja nieuwaga :) W temacie jak byk SSLServerSocket, ale to nie szkodzi, bo mechanizm ten sam. Z tym, że pobierasz getServerSocketFactory().

A SSLContext inicjalizujesz:
init(KeyManager[] km, TrustManager[] tm, SecureRandom random)

pozdr,
yarel

1 użytkowników online, w tym zalogowanych: 0, gości: 1