2010-05-04 32 views
8

Używam protokołu SSL do komunikacji między dwoma komponentami napisanymi w Javie. Nie mogę użyć urzędu certyfikacji, więc muszę samodzielnie podpisać wszystko. Niestety oznacza to, że gdy próbuję się uzgadniać, otrzymuję wyjątek SunCertPathBuilderException. Mogę stworzyć własnego X509TrustManagera, który po prostu ufa wszystkim, ale ten rodzaj porażek ma cel posiadania podpisanego certyfikatu.Programowe dodawanie zaufanego certyfikatu w Javie

Chciałbym, po pierwszym nawiązaniu połączenia, zapytać użytkownika "Uzgadnianie SSL z nieważnym certyfikatem. Dodaj certyfikat do sklepu?" lub coś takiego, aby mogli je dodać do swojego magazynu certyfikatów, tak jak przeglądarki internetowe na stronach z nieprawidłowymi certyfikatami. W Internecie można znaleźć mnóstwo przykładów dodawania certyfikatu do sklepu za pomocą wiersza poleceń, ale nie mogę wymyślić, jak to zrobić programowo. Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

5

Tak, jest to możliwe.

Jest jakiś kod here, którego użyłem wcześniej. Musiałem go zmodyfikować, aby zrobił to, co chciałem, i podejrzewam, że ty też będziesz, ale to powinno cię przybliżyć - nie próbujesz importować klucza, więc teoretycznie powinieneś uprościć pewne rzeczy. W każdym razie możesz zorientować się, czego potrzebujesz.

JDK JavaDoc dla java.security.KeyStore jest również przydatny.

0

Dlaczego nie tworzysz własnego urzędu certyfikacji i nie podpisujesz zaświadczeń? Następnie wystarczy zainstalować własny certyfikat urzędu certyfikacji na komputerach i każdy certyfikat podpisany przez ten urząd certyfikacji zostanie zatwierdzony.

+0

Ponieważ każdy użytkownik będzie uruchamiał swój własny serwer i potrzebuje własnego certyfikatu do uwierzytelnienia (tak, że można go odróżnić od innego). Przypuszczam, że mógłbym utworzyć urząd certyfikacji, ale to by bardzo skomplikowało procedurę instalacji, wymagającą od użytkownika składania mi żądań produkcyjnych. – directedition

0

Po co to robić, nie sprawdzasz, czy klient jest tym, za kogo się podaje, że używasz tylko certyfikatów do szyfrowania komunikatorów, więc potrzebujesz tylko niestandardowego menedżera zaufania, który zezwala na wszystkie certyfikaty. To, o co prosisz, jest możliwe i z pamięci korzysta również z niestandardowego menedżera zaufania, który sprawdza certyfikaty i zapisuje je w magazynie kluczy. Nie pamiętam szczegółów, ale przynajmniej wiesz, że można to zrobić.

Powiązane problemy