2008-10-02 14 views
6

Widziałem Where to find Java 6 JSSE/JCE Source Code? i zadał pytanie sobie How to get JRE/JDK with matching source? ale nie mam żadnej z nich był na tyle specyficzne, aby uzyskać odpowiedź Byłem naprawdę po, więc mam zamiar wypróbować sposób bardziej konkretny wersję pytanie.Kod źródłowy JDK/JRE z pasującym kodem źródłowym JSSE (SSL) i pasującym działającym JDK/JRE?

Zasadniczo problem, który próbuję rozwiązać, polega na tym, że chciałbym móc korzystać z mojego debuggera Eclipse w systemie Windows i przejść do klas Java SSL (JSSE), aby pomóc mi w debugowaniu problemów z SSL, a także po prostu zrozumieć proces SSL jest lepszy. BTW Jestem zaznajomiony z (i używam) javax.net.debug = ssl | all system właściwości, aby uzyskać śledzenie SSL i, chociaż jest to bardzo pomocne, nadal chciałbym móc przejść przez ten nieznośny kod.

Więc co myślę konkretnie potrzebujesz to:

  1. wykonywalny realizacja JRE/JDK (nie chcąc zbudować jeden) ...
  2. , który działa na mojej platformie Windows (XP) ...
  3. obejmuje źródło ...
  4. i to źródło zawiera SSL "bity" (JSSE, etc.) ...
  5. i idealnie implementacja SSL firmy Sun lub wersja OpenJDK.

myślę najbliższą rzeczą (jak wspomniano w PW za odpowiedź StackOverflow: 87106) jest źródłem OpenJDK openjdk-6-src-b12-28_aug_2008.tar.gz znaleźć na OpenJDK 6 Source Release, ale nie jestem pewien, że to dopasowanie wykonywalny JDK/JRE dla tego, który działałby w systemie Windows.

+0

Zadałem sobie to pytanie kilka razy. Dobrze, że ktoś zapytał o to na forum. To jest równie dobry czas jak każdy inny. – anjanb

Odpowiedz

0

Implementacja Sun nie jest open source, o ile wiem. Można pobrać open source JCE tutaj:

http://www.bouncycastle.org/java.html

+0

Mówimy tutaj o JSSE, a nie o JCE, co nie jest tym samym. Bouncycastle nie może zastąpić zintegrowanego JSSE w JDK. Części BC mogą zostać użyte (np. RSA Cipher, itp.) –

0

W rzeczywistości wdrożenie SSL jest zawarte w źródłach openjdk, ale z jakiegoś powodu nie w standardowym źródłowego pliku ZIP. Nie mam pojęcia dlaczego.

nie wiem gdzie można by normalnie pobrać źródła OpenJDK; Mam je na Debianie przez apt-get source openjdk-6. Źródła implementacji protokołu SSL są w wersji jdk/src/share/classes/javax/net/ssl.

+0

Dzięki za tę wskazówkę.Rzeczywiście widzę źródła, które zauważyłeś. Druga część mojego pierwotnego pytania brzmiała: "czy istnieje pasujące JRE lub JDK VM, które pasują do źródła?". Czy nie jesteś już zaznajomiony z OpenJDK, czy możesz uzyskać gotowe maszyny wirtualne dla różnych wersji OpenJDK? –

1

użyłem OpenJDK pobrania dla Javy 6:

http://download.java.net/openjdk/jdk6/

Aby debugować JSSE kod/SSL, używałem klas znalezione w sun.security.ssl i sun.security. ec pakiety i utworzył nową bibliotekę. Niestety, posiadanie biblioteki ze wszystkimi źródłami było dla mnie niewystarczające. Nie mogłem wymyślić, jak sprawić, aby mój IDE (Netbeans) wkroczył do kodu JSSE. Zamiast tego wywoływał JSSE w pakiecie z moim JDK.

Jako obejście, skończyło się refactoring SSL oraz pakiety WE do nowego „usługodawca”. Oto co zrobiłem:

  1. przemianowany SunJSSE klasę SSLProvider i zastępuje wszelkie odniesienia do „SunJSSE” w kodzie.
  2. refactored sun.security.ssl i sun.security.ec na 2 nowe pakiety: javaxt.ssl ​​ i javaxt.ec
  3. Znajdź/Zamień wszystkie odniesienia do oryginalnych nazw pakietów w kod. Na przykład w klasie SSLProvider.java zastąp "sun.security.ssl.SSLContextImpl" słowem "javaxt.ssl.SSLContextImpl".

Kiedy miałem nowego dostawcę zabezpieczeń, mogłem podać go wprost w moim kodzie. Przykład:

java.security.Provider provider = new javaxt.ssl.SSLProvider(); 
    java.security.Security.addProvider(provider); 
    SSLContext sslc = SSLContext.getInstance("TLS", "SSLProvider"); 

jawnie ustawieniem dostawcy zabezpieczeń, mogę teraz upuścić punkty przerwania i wyrzucić oświadczenia drukowania do mojego serca zawartości :-)

Jeśli ktoś jest zainteresowany, mogę napisali archiwum zip z następujących "SSLProvider" źródło tutaj:

http://www.javaxt.com/download/?/jsse/SSLProvider.zip

+0

Nie odpowiada _ gdzie można znaleźć_ źródło: -1 –

+0

@ try-catch-finally W rzeczywistości oryginalne pytanie zawiera linki do źródeł. Ponadto OP pyta, jak debugować klasy Java SSL. Stąd moja odpowiedź. Proszę ponownie rozważyć -1. – Peter

3

można uzyskać kod źródłowy JSSE lib (otwarta implementacja JDK) tutaj - http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/4d6c03fb1039/src/share/classes/sun/security/ssl

Kroki tworzenia pliku JAR źródłowego w celu dołączenia do IDE w celu debugowania.

  1. Przejdź nieco wyżej w strukturze katalogów, to jest do http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/4d6c03fb1039/src/share/classes/ repo.
  2. Pobierz pakiet źródłowy, klikając linki "zip" lub "gz" widoczne na lewym panelu.
  3. Ale ten pakiet jest ogromny i zawiera tysiące plików * .java. Zazwyczaj nie chcesz, aby wszystkie z nich służyły do ​​debugowania kodu jsse.jar.
  4. Więc lepiej kopia tylko sun.security.rsa, sun.security.ssl, sun.security.provider & com.sun.net.ssl ​​ pakiety do nowego folderu (powiedzmy JSSE -code) na twoim komputerze.
  5. Przejdź do tego folderu z wiersza polecenia & utwórz słoik źródłowy na własną rękę.
    np. jar -cvf jsse-src.jar *
  6. Skończyłeś. Masz teraz bibliotekę źródłową jsse, którą możesz dołączyć do preferowanego IDE (np. Eclipse) w celu debugowania kodu JSSE.

Dzięki
Ayas

0

Kod źródłowy JSSE dla uwolnień Sun Java było dawniej dostępne poprzez Sun Community Source License Program. Od czasu przejęcia Oracle wydaje się, że zniknął, ale mam nadzieję, że się mylę.