Исходный код JDK / JRE с соответствующим исходным кодом JSSE (SSL) и соответствующим выполняемым JDK / JRE? - PullRequest
10 голосов
/ 02 октября 2008

Я видел Где найти исходный код Java 6 JSSE / JCE? и задал вопрос сам Как получить JRE / JDK с совпадающим источником? но я не знаю, какой из них был достаточно конкретным, чтобы получить ответ, который я действительно получил, поэтому я собираюсь попробовать более конкретную версию вопрос.

В основном проблема, которую я пытаюсь решить, заключается в том, что я хотел бы иметь возможность использовать мой отладчик Eclipse в Windows и перейти к классам Java SSL (JSSE), чтобы помочь мне отладить проблемы SSL, а также просто понять SSL-процесс лучше. Кстати, я знаком (и использую) системное свойство javax.net.debug = ssl | all, чтобы получить трассировку SSL, и, хотя это очень полезно, я все же хотел бы иметь возможность пошагово пройти через этот надоедливый код.

Так что я думаю, что мне конкретно нужно это:

  1. Исполняемая реализация JRE / JDK (не желающая ее создавать) ...
  2. Это работает на моей платформе Windows (XP) ...
  3. Это включает в себя источник ...
  4. И этот источник включает «биты» SSL (JSSE и т. Д.) ...
  5. И в идеале реализация SSL - это версия Sun или OpenJDK.

Я думаю, что наиболее близкой вещью (как отмечается в ответе PW StackOverflow: 87106 ) является источник OpenJDK openjdk-6-src-b12-28_aug_2008.tar.gz, найденный в OpenJDK 6 Source Release , но я не уверен, что есть подходящий исполняемый файл JDK / JRE, который будет работать в Windows.

Ответы [ 8 ]

7 голосов
/ 30 мая 2016

Исходный код JSSE lib (реализация Open JDK) вы можете получить здесь - http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/4d6c03fb1039/src/share/classes/sun/security/ssl

Действия по созданию исходного файла JAR для присоединения к IDE для отладки.

  1. Перейдите немного выше в структуре каталогов, то есть к http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/4d6c03fb1039/src/share/classes/ репо.
  2. Загрузите исходный пакет, нажав на ссылки "zip" или "gz", которые вы видите на левой панели.
  3. Но этот пакет огромен и содержит тысячи * .java файлов. Обычно вы не хотите, чтобы все они просто отлаживали код jsse.jar.
  4. Так что лучше скопируйте только sun.security.rsa , sun.security.ssl , sun.security.provider & com.sun .net.ssl ​​ упаковывает в новую папку (скажем, jsse-код) на вашем компьютере.
  5. Перейдите в эту папку из командной строки и создайте Jar-файл самостоятельно.
    Например. jar -cvf jsse-src.jar *
  6. Вы сделали. Теперь у вас есть исходная библиотека jsse, которую вы можете присоединить к предпочитаемой IDE (например, Eclipse) для отладки кода JSSE.

Спасибо
Аяс

1 голос
/ 26 июля 2018

Исходный код JSSE lib (реализация Open JDK) можно получить из его ртутного репозитория, выполнив следующие действия, чтобы создать исходный zip-файл для присоединения к IDE для отладки.

  1. Получите версию сборки Java (в моем случае это сборка 1.8.0_181-b13)

    java -version
    

    Возможно, вы получите такой результат:

    java version "1.8.0_181"
    Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
    
  2. Теперь мы можем найти узел для нашей версии в в этом хранилище . В моем случае мой тег будет jdk8u181-b13 , потому что моя сборка 1.8.0_181-b13 , а его узел будет 0cb452d66676 , помните, что версия Java jdk8u . Мы можем загрузить исходный пакет, нажав на ссылки «zip» или «gz», которые вы видите на левой панели, и вручную упаковать его в виде zip. Или выберите только те пакеты, которые вам нужны.

  3. В этом примере я скачаю все пакеты в каталоге classes. Для этого замените версию jdk8u и узел 0cb452d66676 в этом сценарии, чтобы загрузить исходный код, и упакуйте его как src zip-файл.

    version=jdk8u
    node=0cb452d66676
    mkdir ~/temp
    cd ~/temp
    wget http://hg.openjdk.java.net/$version/$version/jdk/archive/$node.zip/src/share/classes/
    unzip $node.zip -d $version-$node
    cd jdk-$node/src/share/classes/
    zip -r $version-$node-src.zip .
    
  4. Добавьте источник в вашу среду IDE и удачное кодирование.

Примечание: В этом хранилище доступны следующие версии:

1 голос
/ 10 марта 2012

Я использовал загрузку OpenJDK для Java 6:

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

Для отладки кода JSSE / SSL я использовал классы из пакетов sun.security.ssl и sun.security.ec и создал новую библиотеку. К сожалению, просто иметь библиотеку со всеми источниками было недостаточно для меня. Я не мог понять, как заставить мою IDE (Netbeans) войти в код JSSE. Вместо этого он вызывал JSSE в комплекте с моим JDK.

В качестве обходного пути я закончил рефакторинг пакетов ssl и ec в нового «провайдера». Вот что я сделал:

  1. Переименован класс SunJSSE в SSLProvider и заменены все ссылки на "SunJSSE" в коде.
  2. Рефакторирован sun.security.ssl и sun.security.ec в 2 новых пакета: javaxt.ssl ​​ и javaxt.ec
  3. Найти / заменить все ссылки на исходные имена пакетов в коде. Например, в классе SSLProvider.java замените «sun.security.ssl.SSLContextImpl» на «javaxt.ssl.SSLContextImpl».

После того, как у меня появился новый поставщик безопасности, я мог явно ссылаться на него в своем коде. Пример: * * тысяча тридцать четыре

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

Явно установив поставщика безопасности, я теперь могу отбросить точки останова и выбросить операторы печати в свое удовольствие: -)

Если кому-то интересно, я разместил zip-архив источника "SSLProvider" здесь:

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

0 голосов
/ 23 июля 2018

После этого вы можете скачать OpenJDK:

https://adoptopenjdk.net/

и точно сопоставить его с исходным кодом из

https://github.com/AdoptOpenJDK/openjdk-jdk8u

В настоящее время u172-b11 является последней версией, но они синхронизированы и будут работать на всех платформах.

0 голосов
/ 07 июня 2018

Я закончил тем, что делал на Mac OS X High Sierra 10.13.4 под управлением eclipse luna и javac 1.8.0_171

На машине с Ubuntu, также работающей с открытыми jdk и javac 1.8.0_171

apt-get install openjdk-8-source

cd tmp

unzip /usr/lib/jvm/openjdk-8/src.zip "sun/security/*"

zip -r jsse-src sun 

Я не включил материал com / sun / net / ssl, но был достаточно хорош в моем случае.

Затем я скопировал jsse-src.zip на мак в /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/ и указал на него затмение.

0 голосов
/ 30 мая 2016

Исходный код JSSE для выпусков Sun Java ранее был доступен через Программу исходной лицензии Sun Community . После захвата Oracle, похоже, он исчез, но я надеюсь, что ошибаюсь.

0 голосов
/ 30 марта 2011

На самом деле реализация SSL включена в исходные коды OpenJDK, но по какой-то причине не входит в стандартный исходный Zip-файл. Понятия не имею, почему.

Я не знаю, где можно было бы получить источники OpenJDK; Я получил их на Debian через apt-get source openjdk-6. Источники реализации SSL находятся в jdk/src/share/classes/javax/net/ssl.

0 голосов
/ 10 октября 2008

Насколько я знаю, реализация Sun не является открытым исходным кодом. Вы можете скачать JCE с открытым исходным кодом здесь:

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

...