問題タブ [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 投票する
1 に答える
7344 参照

java - 自己署名証明書を受け入れるようにJavaに指示します(ある程度繰り返される質問)

了解しました。webminを介してファイルマネージャーにアクセスしようとすると失敗し、次のようなエラーがスローされます。

言語リストの取得に失敗しました:javax.net.ssl.SSLHandshakeException:java.sucurity.cert.CertificateException:Javaはサーバーを信頼できませんでした

それで、私は少し読んで、自己署名証明書を受け入れるようにJavaを構成する必要があることを知りました(私は思う)。今、

自己署名SSL証明書を受け入れるようにJavaに指示する

私たちが同じ問題を抱えているかどうか、または両方の問題が同じ解決策を持っているかどうか本当にわからないので、これは本当に何も解決しませんでしたか?それで、誰かがいくつかの記事で私を正しい方向に向けることができるかどうか疑問に思っていました、おそらく私が構成する必要があるJavaを教えてください(私はそれがVMwareJavaであると仮定していますか?)

考え?

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

java - 同じJVMに複数のトラストストアを設定する

weblogicサーバーでJavaアプリケーションを実行しています。アプリケーションには、SSLを使用して外部Webサービスに接続する2つの異なるモジュールがあります。たとえば、モジュールAとモジュールBです。

モジュールA-Axis上に構築-トラストストアAを使用MoudleB-Spring-ws上に構築-トラストストアBを使用

モジュールAが存在します。モジュールBが導入されています。

呼び出されているモジュールに基づいて、JVMでトラストストアを動的に設定できる必要があります。

いくつかの制約のため、カスタムキーマネージャーを作成するオプションがありません。-1つのトラストストアを使用します

System.setPropertyimモジュールBコードベースを使用してトラストストアを設定しようとしました。ただし、モジュールBが最初に呼び出された場合にのみ機能します。たとえば、-JVMを新たに再起動した後、モジュールAを呼び出します-JVMに独自のトラストストアを設定し、次にモジュールBを呼び出します-失敗します-使用したにもかかわらず、JVMに独自のトラストストアを設定しませんSystem.setPropertyメソッド。

何かが足りないのでしょうか、それともSystem.setPropertyが既存の設定値を上書きしないだけなのですか。もしそうなら、ここで私のオプションは何ですか。

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

java - 誰かがjavax.net.debugの正確な詳細を教えてもらえますか?

javax.net.debug を使用して生成された SSL デバッグ出力の正確な詳細を知りたいです。私は見ましたが、ほとんどすべてがサンプルファイルを通過するだけです。

これが予想よりも見つけやすい場合は、事前に申し訳ありません。

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

java - javax.net.ssl.SSLException:java.security.InvalidAlgorithmParameterException:trustAnchorsパラメーターは空でない必要があります

私はそのファイルを毎日更新するXMLファイルを解析しようとしています-私が遭遇した唯一の問題は、それらが独自の証明書(https:// ..。)を使用し、その特定のURLを使用できないことです。利用可能なhttp://...リンクはありますか。

このコードは、テストの実行中に次の例外をスローします。

javax.net.ssl.SSLException:java.lang.RuntimeException:予期しないエラー:java.security.InvalidAlgorithmParameterException:trustAnchorsパラメーターは空でない必要があります

この種の接続やパーソナルサーバーを処理するためのさまざまなクラスの作成、および証明書をキーストアに追加してからそのキーストアをJavaプロジェクトに追加することに関するさまざまな提案を見てきましたが、私はそれができず、オンラインでXMLにアクセスするためのもう少し簡単な方法を探しています。

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

java - SSL接続でのJavaNoClassDefFoundError

JAX-RPCクライアントライブラリを使用し、レガシーバージョンのJava(1.4.2)で実行されているアプリケーションがあり、次のSSLエラーを受信して​​います。

これは以前は機能しており、クライアントライブラリへの唯一の変更は、使用されている認証プロトコルに関連するものであり、BouncyCastleの最新ビルドへの更新が必要でした。これらの変更はすべてSSLプロトコルよりも高いレベルであり、このエラーにはBouncyCastleが関係していないようです。

誰かが以前にこのようなエラーを見たことがあり、おそらく何か考えや提案がありますか?に証明書を追加してみましたcacerts。これは、Java 1.6に対して実行すると正常に機能しますが、残念ながら、これを実行している本番システムは、当面はJava1.4に関連付けられたままです。

また、JAX-RPCコードと、SSLを使用せずに開発システムに接続した場合に実行される認証は正しく機能します。

[編集-追加情報]新しいバージョンのBouncyCastleと競合が発生し、問題が発生していることがわかりました。古い(1.18)バージョンを使用してみましたが、SSLエラーが発生しないようですが、新しいアルゴリズムが必要なため、代わりにアプリケーションからSSLエラーを取得します。

0 投票する
3 に答える
5509 参照

java - jndiLDAPSカスタムHostnameVerifierおよびTrustManager

異なるLDAPサーバーに接続するアプリケーションを作成しています。サーバーごとに、特定の証明書のみを受け入れる場合があります。その証明書のホスト名は重要ではありません。LDAPとSTARTTLSを使用する場合、これは簡単です。これは、マッチングStartTlsResponse.setHostnameVerifier(..-)を使用して使用できるためです。ただし、LDAPS接続もサポートする必要があります。Javaはこれをネイティブにサポートしますが、サーバー証明書がデフォルトのJavaキーストアによって信頼されている場合に限ります。これを置き換えることはできますが、サーバーごとに異なるキーストアを使用することはできません。StartTlsResponse.negotiate(...)SSLSocketFactory

既存の接続コードは次のとおりです。

独自のものを追加することもできますが、それにCustomSocketFactory情報を渡す方法は?

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

java - Bouncy Castle での TLS-SRP サポート

CやGnuTLSで実装されたTLS-SRPサーバーと通信できるJavaクライアントを開発したいです。JSSE が TLS-SRP をサポートしておらず、Bouncy Castle には有用なドキュメントが少なすぎることが気に入っています。TLS-SRP を使用して Java クライアントを開発する方法についての情報はありますか?

幸運をお祈りしています

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

java - JDBC で Windows Keystore (MCS) を使用するにはどうすればよいですか?

PKI認証に使用する Java アプリケーションを作成しようとしています。Microsoft Certificate Store (MCS) から証明書を取得し、それを Oracle データベース (11.2) に渡す必要があります。

jdbc:oracle:thinドライバーを使って接続しています。グーグルでかなりの時間を費やした後、私は空になりました。変更するさまざまなプロパティが見つかりました(記事によって異なります):

  • プロパティを設定するjavax.net.ssl.keyStoreType = "Windows-MY"
  • をセットするjavax.net.ssl.keyStore = "Windows-MY"
  • javax.net.ssl.keyStore should be set to "None"(カスタム KeyManager を使用すると、カスタム KeyManager に入るまでに、接続プロパティで指定されたキーストアからの証明書が既に与えられているため、機能するとは思えません)。

もちろん、これらの人々はすべて成功したと主張していますが、私には何もうまくいきませんでした. 私は運が悪いすべてを見つけることができたすべての例を試しました。Oracle ウォレットを使用していたときに正常に認証できたので、証明書に問題がないことがわかりました。誰かが以前にこれを行ったことがあり、素晴らしいコードを投稿しても構わないと思っている場合。

ほとんどの人が Web サイトで Windows キーストアを使用しているため、独自の SSLContext を作成していることは知っていますが、JDBC を使用してこれを実行したいと考えているのは私だけではないと思います (私が知る限り、これを提供することは許可されていません)。それは SSLContext です)。

これは動作するはずのコードですが、動作しません。

このコードは例外で失敗します:

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

java - 自己署名証明書と SSLEngine (JSSE) を使用した SSL ハンドシェイク

私は、SSL メッセージと非 SSL メッセージを同じポートで処理できるカスタム/スタンドアロン Java Web サーバーを実装する任務を負っています。

私はNIOサーバーを実装しましたが、非SSLリクエストに対しては非常にうまく機能しています。私はSSLの部分でかなりの時間を過ごしており、実際にいくつかのガイダンスを使用することができます.

これが私がこれまでに行ったことです。

SSL メッセージと非 SSL メッセージを区別するために、インバウンド要求の最初のバイトをチェックして、それが SSL/TLS メッセージかどうかを確認します。例:

parseTLS() メソッドでは、次のように SSLEngine をインスタンス化します。

SSLEngine がインスタンス化されたら、公式のJSSE サンプルからそのままコードを使用して、unwrap/wrap メソッドを使用してインバウンド データを処理します。

ハンドシェイクの最初の部分はうまく機能しているようです。クライアントはハンドシェイク メッセージを送信し、サーバーは 4 つのレコードを含むメッセージで応答します。

次に、クライアントは次の 3 つの部分からなるメッセージを送信します。

SSLEngine はクライアント リクエストをアンラップしてレコードを解析しますが、ラップ メソッドは OK/NEED_UNWRAP のハンドシェイク ステータスで 0 バイトを生成します。つまり、私がクライアントに送り返すものは何もなく、握手は金切り声で停止します。

これは私が立ち往生しているところです。

デバッガーで、SSLEngine、特に ServerHandshaker がピア証明書を見つけられないことがわかります。これは、長さが 0 バイトのクライアントからの証明書レコードを見ると明らかです。しかし、なぜ?

HelloServer の応答に何か問題があるとしか思えませんが、それを特定することはできません。サーバーは有効な証明書を送信しているようですが、クライアントは何も返していません。キーストアに問題はありますか? それともトラストストアですか?それとも、SSLEngine をインスタンス化する方法と関係がありますか? 私は困惑しています。

他のポイントを結合します。

  • 上記のコード スニピットで参照されているキーストアとトラストストアは、次のチュートリアルを使用して作成されました: http://www.techbrainwave.com/?p=953
  • サーバーをテストするクライアントとして Firefox 10 と IE 9 を使用しています。両方の Web クライアントで同じ結果が得られます。
  • Sun/Oracle JDK 6 と、それにバンドルされている Java Secure Socket Extension (JSSE) を使用しています。

アドバイスをお待ちしておりますが、私が頭がおかしいとか、Netty や Grizzly などの既存のソリューションを使用するなどとは言わないでください。現時点ではオプションではありません。私は自分が間違っていることを理解したいだけです。

前もって感謝します!

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

java - JSSE SSLEngine による SSL セッション管理

NIO と SSLEngine を使用して SSL Web サーバーに取り組んでいます。ハンドシェイクを正常に処理し、アプリケーション データを送受信できます。ただし、SSL セッション状態を維持する方法を理解するのに苦労しています。

Web サーバーのテストに Firefox 10 を使用しています。最初のページの読み込みでは、すべてがうまく機能します。ハンドシェークが正常に完了しました。サーバーはクライアントの要求を処理し、応答を返します。レスポンスは問題なく送信され、ブラウザはアプリケーション データ (html、画像など) を読み込みます。これは、クライアントからサーバーに送信されたメッセージのスナップショットです。

ページリクエスト #1

繰り返しますが、最初のページの読み込みでは、すべてがうまく機能します。ただし、ブラウザを更新するか、別の「ページ」に移動すると、Firefox はクライアント ハローの代わりにアプリケーション レコードを送信します。

ページリクエスト #2

この場合、SSLEngine は、アプリケーション データをアンラップしようとすると例外をスローします。

これは、ページ要求ごとに新しい SSLEngine をインスタンス化しているためだと思います。SSLEngine を 1 回だけインスタンス化してグローバル/静的変数にすると、アプリケーション レコードが正常にラップ解除され、クライアントに応答を返すことができます。問題なくページを更新したり、他のページにアクセスしたりできます。SSL ハンドシェイク プロセス全体をスキップしているため、ページの読み込みは非常に高速です。

残念ながら、これらすべての処理中に別のブラウザー (IE や Safari など) から Web サーバーにアクセスすると、SSLEngine 内のセッション状態が不安定になり、Web サーバーは新しい SSL 要求に応答できなくなります。そのため、SSLEngine を一度インスタンス化して、それをグローバルにアクセス可能な静的変数にすることは、実行可能なオプションではないようです。そう...

2 番目のページ リクエスト (ページ リクエスト #2) には、一体どのように応答すればよいのでしょうか? IP アドレス以外で、2 番目のページ要求 (ページ要求 #2) を最初のハンドシェイク要求 (ページ要求 #1) に結び付ける方法はありますか? 2 番目のページ要求 (ページ要求 #2) のアプリケーション データ内に SSL セッション ID が埋め込まれていますか?

前もって感謝します!