Исходный код 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, и, хотя это очень полезно, я все же хотел бы иметь возможность пошагово пройти через этот надоедливый код.
Так что я думаю, что мне конкретно нужно это:
- Исполняемая реализация JRE/JDK (не желающая ее создавать)...
- Это работает на моей платформе Windows (XP)...
- Это включает в себя источник...
- И этот источник включает в себя "биты" SSL (JSSE и т.д.)...
- И в идеале реализация 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 для отладки.
- Перейдите немного выше в структуре каталогов, например, по адресу http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/4d6c03fb1039/src/share/classes/ repo.
- Загрузите исходный пакет, нажав на ссылки "zip" или "gz", которые вы видите на левой панели.
- Но этот пакет огромен и содержит тысячи *.java файлов. Обычно вы не хотите, чтобы все они просто отлаживали код jsse.jar.
- Поэтому лучше скопировать только пакеты sun.security.rsa, sun.security.ssl, sun.security.provider & com.sun.net.ssl в новую папку (скажем, jsse-code) на вашем компьютере.
- Перейдите в эту папку из командной строки и создайте jar файл самостоятельно.
например, jar -cvf jsse-src.jar * - Вы сделали. Теперь у вас есть исходная библиотека 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 для отладки.
-
Получите вашу версию сборки 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)
-
Теперь мы можем найти узел для нашей версии в этом хранилище. В моем случае мой тег будет jdk8u181-b13, потому что моя сборка 1.8.0_181-b13 и его узел будет 0cb452d66676, помните, что версия java - jdk8u. Мы можем загрузить исходный пакет, нажав на ссылки "zip" или "gz", которые вы видите на левой панели, и вручную упаковать его в виде zip. Или выберите только те пакеты, которые вам нужны.
-
В этом примере я скачаю все пакеты в каталогах 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 .
-
Добавьте источник в вашу 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 является последней версией, но они синхронизированы и будут работать на всех платформах.