13

私はJava 6 JSSE/JCE ソース コードを見つける場所を見てきましたか? ソースが一致するJRE / JDKを入手するにはどうすればよいですか ? しかし、これらのどちらも、私が本当に求めていた答えを得るのに十分なほど具体的ではなかったので、質問のより具体的なバージョンを試してみます.

基本的に私が解決しようとしている問題は、Windows で Eclipse デバッガーを使用し、Java SSL クラス (JSSE) にステップインして、SSL の問題をデバッグし、SSL プロセスをよりよく理解できるようにしたいということです。 . ところで、私は SSL トレースを取得するために javax.net.debug=ssl|all システム プロパティに精通しています (そして使用しています)。

だから私が特に必要だと思うのは:

  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 で実行されます。

4

8 に答える 8

9

ここで JSSE lib (Open JDK 実装) のソース コードを取得できます - http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/4d6c03fb1039/src/share/classes/sun/security/ SSL

デバッグ用に IDE にアタッチするためのソース jar ファイルを作成する手順。

  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.rsasun.security.sslsun.security.provider 、およびcom.sun.net.sslパッケージのみをコンピューターの新しいフォルダー (jsse-code としましょう) にコピーすることをお勧めします。
  5. コマンドラインからそのフォルダーに移動し、独自にソース jar を作成します。
    例: jar -cvf jsse-src.jar *
  6. これで完了です。これで、好みの IDE (Eclipse など) にアタッチして JSSE コードをデバッグできる jsse ソース ライブラリができました。

ありがとう
アヤス

于 2016-05-30T06:38:46.310 に答える
1

Java 6 用の OpenJDK ダウンロードを使用しました。

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

JSSE/SSL コードをデバッグするために、sun.security.sslおよびsun.security.ecパッケージにあるクラスを使用して、新しいライブラリを作成しました。残念ながら、すべてのソースを含むライブラリを用意するだけでは十分ではありませんでした。IDE (Netbeans) を JSSE コードにステップインさせる方法がわかりませんでした。代わりに、JDK にバンドルされている JSSE を呼び出していました。

回避策として、ssl および ec パッケージを新しい「プロバイダー」にリファクタリングすることになりました。これが私がしたことです:

  1. SunJSSEクラスの名前をSSLProviderに変更し、コード内のすべての参照を「SunJSSE」に置き換えました。
  2. sun.security.sslsun.security.ecを 2 つの新しいパッケージjavaxt.ssljavaxt.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");

セキュリティ プロバイダを明示的に設定することで、ブレークポイントを削除し、print ステートメントを心ゆくまで投げることができるようになりました :-)

興味のある方は、「SSLProvider」ソースの zip アーカイブをここに投稿しました。

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

于 2012-03-10T10:03:28.223 に答える
1

次の手順に従って、mercurial リポジトリから JSSE lib (Open JDK 実装) のソース コードを取得し、デバッグ用に IDE にアタッチするためのソース zip ファイルを作成できます。

  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. これで、このリポジトリでバージョンのノードを見つけることができます。私の場合、私のビルドは1.8.0_181-b13で、そのノードは 0cb452d66676 であるため、タグはjdk8u181 -b13 になります。Javaのバージョンはjdk8uであることを思い出してください。左ペインに表示される「zip」または「gz」リンクをクリックして、ソース パッケージをダウンロードし、手動で zip として再パックできます。または、必要なパッケージのみを選択します。

  3. この例では、ディレクトリの下にあるすべてのパッケージをダウンロードしますclasses。このために、このスクリプトのバージョンjdk8uとノード 0cb452d66676を置き換えてソース コードをダウンロードし、srczip ファイルとして再パックします。

    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 に追加して、コーディングを楽しんでください。

注意:このリポジトリで利用可能なバージョンは次のとおりです。

于 2018-07-26T09:21:33.573 に答える
0

As a matter of fact, the SSL implementation is included in the OpenJDK sources, but for some reason not in the standard source Zip file. I have no clue why.

I don't know where one would normally fetch the OpenJDK sources; I got them on Debian via apt-get source openjdk-6. The SSL implementation sources are in jdk/src/share/classes/javax/net/ssl.

于 2011-03-29T21:29:40.613 に答える
0

私の知る限り、Sun の実装はオープンソースではありません。オープン ソースの JCE は、次の場所からダウンロードできます。

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

于 2008-10-10T05:20:49.813 に答える
0

Sun Java リリースの JSSE ソース コードは、以前はSun Community Source License Programから入手できました。オラクルの乗っ取り以来、それは姿を消したように見えますが、私がそれについて間違っていることを願っています.

于 2016-05-30T07:59:51.620 に答える