問題タブ [jsse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
30541 参照

java - Java 6 JSSE/JCE ソース コードはどこにありますか?

Java の最新リリースの JSSE および JCE ソース コードはどこからダウンロードできますか? https://jdk6.dev.java.net/で入手できるソース ビルドには、javax.crypto (JCE) パッケージも com.sun.net.ssl.internal (JSSE) パッケージも含まれていません。

これらのクラスをデバッグできないと、SSL の問題を解決することが非常に困難になります。

0 投票する
8 に答える
12079 参照

java - 一致する JSSE (SSL) ソース コードと一致する実行可能な JDK / JRE を含む JDK/JRE ソース コード?

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

0 投票する
15 に答える
108409 参照

java - Java経由のscp

Java プログラミング言語を介して scp 転送を実行する最良の方法は何ですか? JSSE、JSch、または弾む城のJavaライブラリを介してこれを実行できるようです。これらの解決策はどれも簡単な答えではないようです。

0 投票する
2 に答える
272 参照

java - JSSE 接続を介した XML ストリームの終了?

JSSE を使用して SSL 接続を受け入れ、ストリーム内で単純な XML メッセージ形式を使用する Java サーバーがあります。サーバーに完全なメッセージを読み取ってから返信を送信してもらいたいです。org.xml.sax.XMLReader はストリーム全体を読み取ってから close() を呼び出す必要があるため、これは非常に困難です。奇妙に思えるかもしれませんが、Sun JSSE プロバイダーを使用する Java 6 では、SSLSocket の両端が実際に閉じられるため、メッセージを戻すことができません。クライアント側で Socket の shutdownOutput() メソッドを使用してみましたが、これは JSSE ではサポートされていません。

私の解決策は、カスタム クラスにラップされた InputStream を渡すことでした。このカスタム クラスは、クローズ リクエストを黙って無視し、最初の空白行に遭遇したときにストリームがクローズされたことを示します。これにより、XML が通常の有効範囲を超えて制限されますが、クライアントは必要に応じて入力内の空白行を簡単に除外できます。より良い解決策はありますか?

0 投票する
5 に答える
192034 参照

java - 特定の接続で異なる証明書を使用するにはどうすればよいですか?

大規模なJavaアプリケーションに追加するモジュールは、他社のSSLで保護されたWebサイトと通信する必要があります。問題は、サイトが自己署名証明書を使用していることです。中間者攻撃が発生していないことを確認するための証明書のコピーがあります。サーバーへの接続が成功するように、この証明書をコードに組み込む必要があります。

基本的なコードは次のとおりです。

自己署名証明書の追加処理がない場合、これはconn.getOutputStream()で終了しますが、次の例外があります。

理想的には、私のコードは、Javaに、この1つの自己署名証明書を受け入れるように教える必要があります。これは、アプリケーションのこの1つの場所であり、他の場所ではありません。

証明書をJREの認証局ストアにインポートできることを知っています。これにより、Javaがそれを受け入れることができるようになります。それは私が助けることができれば私が取りたいアプローチではありません。お客様が使用しない可能性のある1つのモジュールに対して、お客様のすべてのマシンで実行することは非常に侵襲的であるように思われます。同じJREを使用する他のすべてのJavaアプリケーションに影響します。このサイトにアクセスする他のJavaアプリケーションの確率はゼロですが、私はそれが好きではありません。また、これは簡単な操作ではありません。UNIXでは、この方法でJREを変更するためのアクセス権を取得する必要があります。

また、カスタムチェックを行うTrustManagerインスタンスを作成できることも確認しました。この1つの証明書を除くすべてのインスタンスで、実際のTrustManagerに委任するTrustManagerを作成できる可能性もあるようです。しかし、TrustManagerはグローバルにインストールされているようで、アプリケーションからの他のすべての接続に影響を与えると思います。それも私にはまったく適切な匂いではありません。

自己署名証明書を受け入れるようにJavaアプリケーションを設定するための推奨、標準、または最良の方法は何ですか?上記で考えているすべての目標を達成できますか、それとも妥協する必要がありますか?ファイルとディレクトリ、構成設定、およびほとんどまたはまったくコードを含まないオプションはありますか?

0 投票する
9 に答える
439518 参照

java - HTTPS/SSL 経由の Java クライアント証明書

HttpsURLConnectionJava 6 を使用しており、クライアント証明書を使用してリモート サーバーに対してを作成しようとしています。
サーバーは自己署名ルート証明書を使用しており、パスワードで保護されたクライアント証明書を提示する必要があります。サーバールート証明書とクライアント証明書を、/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/security/cacerts(OSX 10.5) で見つけたデフォルトの Java キーストアに追加しました。キーストア ファイルの名前は、クライアント証明書がそこに入らないことを示唆しているように見えますか?

とにかく、ルート証明書をこのストアに追加すると、悪名高い問題が解決しましたjavax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed' problem.

ただし、クライアント証明書の使用方法に行き詰まっています。私は2つのアプローチを試しましたが、どちらもどこにも行きません。
最初に、できれば次のことを試してください。

私は HttpsURLConnection クラスをスキップしようとしました (サーバーと HTTP をやり取りしたいので理想的ではありません)、代わりにこれを行います:

ここでクライアント証明書が問題であるかどうかさえわかりません。

0 投票する
2 に答える
5219 参照

java - JSSE を使用して、公開鍵 .cer ファイルを Java キーストアにプログラムでインポートするにはどうすればよいですか?

次のように、Java keytool コマンドから生成された公開鍵 .cer ファイルを取得します。

"keytool -export -alias privatekey -file publickey.cer -keystore privateKeys.store"

次のように、新しい空の Java キーストアにインポートします。

"keytool -import -alias publiccert -file publickey.cer -keystore publicCerts.store"

ただし、JSSE を使用して、プログラムでインポートを行いたいと考えています。

オーバーロードを積み重ねて、魔法を働かせましょう!ありがとう!

0 投票する
4 に答える
76214 参照

java - JVM への複数のキーストアの登録

同じ Java 仮想マシンで 2 つのアプリケーションを実行していますが、両方とも異なるキーストアとトラストストアを使用しています。

実行可能なオプションは、単一のキーストアを使用し、他のすべてのものを共有キーストアにインポートすることです (例: keytool -import) が、同じ jvm で実行されている個別のアプリケーションに個別のキーストアを使用できれば、私の要件に本当に役立ちます。

次のように、キーストアとトラストストアを jvm パラメータまたはシステム プロパティとして使用するように設定できます。

また

しかし、このアプローチの問題は、キーストア/トラストストアを JVM レベルで使用するように指定しているため、同じ JVM で実行されているすべてのアプリケーションが同じキーストア/トラストストアを取得することです。

また、カスタム SSLContext を作成してデフォルトとして設定しようとしましたが、同じ JVM で実行されているすべてのアプリケーションのコンテキストも設定します。

個々のアプリケーション コードを変更せずに、さまざまなキーストア/トラストストアを使用できるようにしたいと考えています。

jreのデフォルトのキーストア/証明書に加えて、複数のキーストアをjvmに動的に登録できるソリューションは素晴らしいでしょう。

ソリューションは次のように機能します。

  • JVM が起動すると、jre/certs フォルダーからすべてのデフォルトの証明書/キーストアが読み込まれます (キーストアが指定されていない場合の Java のデフォルトの動作)。
  • アプリ 1 が読み込まれると、そのキーストアが登録されます。
  • 次に、アプリ 2 が読み込まれると、そのキーストアが登録されます...

アイデアや解決策を教えてください。前もって感謝します!

0 投票する
1 に答える
2418 参照

ssl - 認証が必要な場合にSSLが有効なサーバー接続チャネルを使用してキューマネージャーに接続する方法

SSLを有効にしてサーバー接続チャネルに接続するJavaアプリケーションを作成しようとしています。

これまでのところ、認証を「オプション」に設定することで、チャネルに正常に接続できました。ただし、「必須」に設定すると接続に失敗します。

これが私がしたことです:

  1. キューマネージャ用のキーデータベースとJavaクライアントユーザー用のキーストアを作成します。
  2. キュー・マネージャーおよびクライアント・ユーザーの鍵/自己署名証明書を、名前の前にibmwebspheremqを付けて作成します。
  3. キュー・マネージャーとクライアントの証明書をエクスポート、交換、およびインポートします。(キューマネージャー証明書を信頼するかどうかを尋ねられたときに、「はい」と答えました)。
  4. トラストストアとキーストアの場所とパスワードは、クライアント側の同じキーストアを指すように設定されます。ここには、元の作成されたクライアントユーザーキーとインポートされたキューマネージャーキーがあります。

他の設定が同じである場合、「オプション」認証に戻すと、接続は機能します。

このssl認証について私が間違って理解していることがあると思いますが、何を理解することはできません。

誰かが親切に私を助けてくれますか?

0 投票する
5 に答える
285579 参照

java - java-trustStoreへのパス-setプロパティが機能しませんか?

ssl java接続をテストするために自己署名証明書を設定しましたが、javatrustStoreを見つけることを拒否しています。クラスがコンパイルされるフォルダ(netbeansを使用している)と/ java / jre6 / binに加えて、そのコピーを/ Java / jre6 / lib / securityに保存しました。これは、上記のいずれも機能していないように見えるためです。次のコマンドを実行すると、trustStore=nullになります。

パスを正しく設定する方法は?

********** UPDATE ************ getFile()メソッドとその他のデバッグデータの使用:

実行:java.lang.NullPointerExceptionクラスパス:C:\ Users \ Main \ Documents \ NetBeansProjects \ sslTest \ build \ classes; C:\ Users \ Main \ Documents \ NetBeansProjects \ sslTest \ src at ssltest.Main.main(Main.java :15)javax.net.ssl.trustStoreが定義されていませんBUILD SUCCESSFUL(合計時間:0秒)