我已经看到了在哪里可以找到的Java 6 JSSE / JCE源代码? 和设问自己如何获得JRE / JDK相匹配的来源? 但我没有这些要么是不够具体,得到的答案我是真的后,所以我要去尝试的方式的问题更加具体的版本。
基本上,我试图解决的问题是,我希望能够在Windows上使用我的Eclipse调试器,并进入Java的SSL类(JSSE)来帮我调试SSL问题以及刚刚了解的SSL过程中更好。 BTW我所熟悉的(和使用)的javax.net.debug = SSL |所有的系统属性来获取SSL跟踪和,虽然这是非常有帮助的,我还是希望能够步那个讨厌的代码。
所以我觉得我特别需要的是:
- 一个可执行的JRE / JDK实现(不想建立一个)...
- 运行我的Windows平台(XP)上...
- 这包括源...
- 这源包括SSL“位”(JSSE等)...
- 理想情况下的SSL实现是Sun公司或OpenJDK的版本。
我认为最接近的事情(如PW的回答指出的StackOverflow:87106 )是在OpenJDK源在发现了OpenJDK-6-SRC-b12-28_aug_2008.tar.gz 的OpenJDK 6源代码发布 ,但我不知道有匹配的可执行文件JDK / JRE的,这将在Windows上运行。
你可以得到JSSE LIB(开放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/回购。
- 通过单击“压缩”,或者你在左窗格中看到“GZ”链接下载的源码包。
- 但是,这个包是巨大的,其中包含数千个* .java文件。 你通常不希望所有的这些只是调试jsse.jar代码。
- 因此,更好的副本只有sun.security.rsa,sun.security.ssl,sun.security.provider&com.sun.net.ssl封装到一个新的文件夹(可以说JSSE代码)在您的计算机上。
- 进入该文件夹的命令行和创建你自己的源罐子。
例如罐子-cvf JSSE-src.jar * - 你完成了。 你现在有你的JSSE源lib中,你可以连接到您的首选IDE(如 - 的Eclipse)调试JSSE代码。
谢谢
阿亚斯
我用Java 6的OpenJDK的下载:
http://download.java.net/openjdk/jdk6/
要调试JSSE / SSL代码,我用在sun.security.ssl和sun.security.ec包中找到的类并创建一个新库。 不幸的是,仅仅有所有的源库是不够的我。 我无法弄清楚如何让我的IDE(Netbeans的)步入JSSE代码。 相反,它是叫我的JDK捆绑在一起的JSSE。
作为一种变通方法,我结束了重构的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");
通过明确设置安全提供者,我现在可以删除断点,扔掉打印语句我的心脏的内容:-)
如果有人有兴趣,我已经发布了“SSLProvider”源这里的一个zip压缩包:
http://www.javaxt.com/download/?/jsse/SSLProvider.zip
你可以从它的Mercurial库按照以下步骤来创建源zip文件用于连接到调试的IDE JSSE LIB(开放JDK实现)的源代码。
让您的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”链接下载的源码包。 或者只选择您需要的软件包。
在这个例子中,我会下载所有的目录下的包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和快乐编码。
注意:在这个仓库,可用版本是:
- JDK6
- JDK7
- jdk7u
- jdk8
- jdk8u
- jdk9
- jdk10
Sun实现不是开源的,据我所知。 你可以在这里下载一个开源的JCE:
http://www.bouncycastle.org/java.html
作为事实上,SSL实施包括在OpenJDK的来源,但由于某种原因未在标准中源Zip文件。 我不知道为什么。
我不知道,其中一个通常会取OpenJDK的来源; 我通过让他们在Debian apt-get source openjdk-6
。 SSL实现源在jdk/src/share/classes/javax/net/ssl
。
针对在Sun Java版本的JSSE源代码通过前身是可用的太阳社区源代码许可计划 。 由于甲骨文收购它似乎已经消失了,但我希望我是错了。
我终于实现了在Mac OS X海伊谢拉10.13.4以下运行Eclipse露娜和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 /阳光/ NET / SSL的东西,但在我的情况不够好。
然后我复制jsse-src.zip
在MAC /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/
并指出蚀了这一点。
在这之后,你可以下载OpenJDK的:
https://adoptopenjdk.net/
和完全匹配它从源代码
https://github.com/AdoptOpenJDK/openjdk-jdk8u
目前u172-B11是最新的版本,但他们在同步和在所有平台上正常工作。
文章来源: JDK/JRE source code with matching JSSE (SSL) source code and matching runnable JDK / JRE?