Исходный код JDK/JRE с совпадающим исходным кодом JSSE (SSL) и совпадающим исполняемым JDK/JRE?

Я видел, где найти 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 qaru.site/info/196262/...) является исходный код OpenJDK openjdk-6-src-b12-28_aug_2008.tar.gz, найденный в исходной версии OpenJDK 6, но я не уверен, что существует соответствующий исполняемый файл JDK/JRE для того, что будет работать в Windows.

Ответ 1

Вы можете получить исходный код библиотеки JSSE (реализация 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/ repo.
  2. Загрузите исходный пакет, нажав на ссылки "zip" или "gz", которые вы видите на левой панели.
  3. Но этот пакет огромен и содержит тысячи *.java файлов. Обычно вы не хотите, чтобы все они просто отлаживали код jsse.jar.
  4. Поэтому лучше скопировать только пакеты sun.security.rsa, sun.security.ssl, sun.security.provider & com.sun.net.ssl в новую папку (скажем, jsse-code) на вашем компьютере.
  5. Перейдите в эту папку из командной строки и создайте jar файл самостоятельно.
    например, jar -cvf jsse-src.jar *
  6. Вы сделали. Теперь у вас есть исходная библиотека jsse, которую вы можете присоединить к предпочитаемой IDE (например, Eclipse) для отладки кода JSSE.

Спасибо
Аяс

Ответ 2

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

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

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

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

  • Переименовал класс SunJSSE в SSLProvider и заменил все ссылки на "SunJSSE" в коде.
  • Реализовано sun.security.ssl и sun.security.ec в 2 новых пакета: javaxt.ssl ​​ и javaxt. ec
  • Найти/Заменить все ссылки на исходные имена пакетов в коде. Например, в классе 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

Ответ 3

Вы можете получить исходный код 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 и счастливое кодирование.

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

В итоге я сделал следующее на 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 на компьютер Mac по адресу /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/ и указал на это затмение.

Ответ 8

После этого вы можете загрузить OpenJDK:

https://adoptopenjdk.net/

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

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

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