問題タブ [sslengine]

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 に答える
4103 参照

websocket - nettyでWebSocketを保護する方法

TLSが有効で、(wss://)スキーマを使用しているWebSocketにnettyを使用したいと思います。

したがって、私は次のように動作する必要があると考えました。WebSocketServerHandlerはSslHandlerを拡張する必要があります。したがって、基本的には、 WebSocketServerPipelineFactoryを使用してSSLEngineを設定するだけで済みます。エンジンをセキュアハンドラーに渡すことができます。

このアプローチは一般的に正しいものですか(アプローチが正しい場合)-SSLEngineを設定するにはどうすればよいですか(証明書と秘密/​​公開鍵をファイルとして利用できます)。例が見つかりませんでした!

ありがとう。

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

java - JavaJSSESSLEngineはSSLセッションを再開できません

NIOでSSLEngineを使用するアプリケーションを作成しています。クライアントとサーバーの両方を作成しています。クライアントはサーバーに接続できます。接続後、セッションの再開/再ネゴシエーションを実行できるようにしたいと思いますが、現在は運がありません。

SSLEngineを使用するコードはかなり大きいので(SSLEngineの使用法は非常に複雑です!)、状況を示す簡単な擬似コードを記述します。

**私はそれから助けになるコードの任意の部分を投稿することをいとわない(私が言ったようにそれは巨大ですが完全なコードでさえ..)

プログラムを実行すると、最初の接続は成功しますが、2番目の接続で例外が発生します。

SSLセッションの再開に必要ないくつかの成分を見逃しましたか?

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

netty - サーバーの SSL パフォーマンスを向上させる方法

プロキシ サーバーで SSL を有効にしたところ、パフォーマンスが毎秒約 17,000 リクエストから毎秒 5,000 リクエストに低下したことがわかりました。私は Netty の安全なチャットの例のコードに従いましたが、何か違うことをしたとは思いません。

プロキシで間違いを犯したかどうかを確認するために、ダミーサーバーを作成しました。通常の http モードでダミー SSL サーバーを実行すると、1 秒あたり約 50k のリクエストが可能です。ダミー サーバーで SSL を有効にすると、1 秒あたり 28,000 リクエストに低下します。

私が間違っていることはありますか?足りないものはありますか?

私はJDK 6を使用してコードをコンパイルし、JDK 7u4で実行しています。Netty-3.5.0 も使用しています。zeusbench を使用してテストを実行しています。テスト パラメータは次のとおりです。 zeusbench -n 10000 -c 100 -k -C RC4_SHA "https:///"

ソース: http://pastebin.com/iahqr3zT

編集 1: JProfiler を介してダミー サーバーを実行しました。パイプライン ファクトリでの SSLContext.createSSLEngine 呼び出しには、(平均で) 55,005 マイクロ秒かかります (この平均は、メソッドの 540 回の呼び出しから計算されています)。

channelConnected での SslHandler.handshake 呼び出しには、(平均で) 46,284 マイクロ秒かかります (この平均は、メソッドの 540 回の呼び出しから計算されています)。

createSSLEngine の呼び出しに関して Netty ができることはあまりないことは理解していますが、SslHandler.handshake をもっとうまく調整できますか? エンジン自体の生成とほぼ同じくらいの時間がかかります。

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

java - SSLEngine を使用して x509 SSL/TLS ハンドシェイク後にサーバー (ピア) 名を確認する方法は?

ノンブロッキング TLS 通信にSSLEnginewithを使用しています。NIO

エンジンは正常に動作しており、サーバー証明書の有効期間である CA 信頼を検証できます。

しかし、私が見逃しているのは、証明書のサブジェクト名が接続先のサーバー名と一致することの検証です。

サブジェクト代替名などのすべての SSL 拡張機能を考慮して、それを実装する最良の方法は何ですか?

サブジェクト名を簡単に確認しようとしましたが、でも機能しませんgoogle.nl。証明書のサブジェクトはgoogle.comでありgoogle.nl、代替名拡張子でのみ見つかります。

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

java - JavaSSLEngineの例

ここで、JavaSSLEngineを実装する方法の例を見つけました。残念ながら、サーバーのソースコードは完全ではありません。チュートリアルから完全なソースコードをどこで見つけることができるか知っていますか?

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

java - Java NIO と SSL

Java NIO を使用してサーバーを作成していますが、答えが見つからない質問がいくつかあります。

まず、SSLEngine についてNEED_TASKですが、セパレートスレッドで適切に扱うにはどうすればよいでしょうか。別のスレッドでタスクを呼び出すと、タスクは完了しますが、別のハンドシェイク操作を実行するために戻る方法がわかりません。1 つのオプションは、委任されたタスクを実行していたスレッドからその操作を呼び出すことですが、それはそれを行う方法ではないと思います。

別の質問はinterestOps()、別のスレッドからの呼び出しと、セレクタ スレッドからの呼び出しに関するものです。チャネルへの書き込みを試みてもすべてのデータが書き込まれなかったので、重要な関心事項を変更する必要があります。ROX NIOチュートリアルのような変更のキューを使用することを考えましたが、ここの別のスレッドでそれが最善の方法ではないことを読みました.

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

java - SSLException: 無効なパディング TLS アプリケーション データのラップ解除

数か月前、NIO と SSLEngine を使用して SSL Web サーバーを開発しました。GET リクエストは、小さな POST リクエスト (~10KB 未満) と同様にうまく機能します。ただし、それよりも大きなものを POST すると、散発的な SSLException 例外が発生します。

たとえば、小さな画像 (~16 KB) を POST すると、アプリケーション データを表す 3 つの TLS レコードが表示されます。1 つ目は HTTP ヘッダーで、残りの 2 つにはペイロードが含まれます。パケットの小ささは次のとおりです。

私のコードでは、SSLEngine を呼び出して TLS レコード (アプリケーション データ) をアンラップ/復号化します。多くの場合、SSLEngine は 2 番目のレコードをアンラップしようとするとチョークします。エラーは次のとおりです。

エラーをスローしているコードは次のとおりです。

次の行で SSLException がスローされます。

このエラーは散発的に発生します。見える時もあるし、見えない時もある。多くの場合、エラーが表示され、単純にデータを再 POST すると (ブラウザを更新するなど)、すべてが正常に機能します (エラーは発生しません)。

私は決して SSL の専門家ではないので、問題をデバッグする最善の方法がわかりません。unwrap メソッドを正しく呼び出していると確信しています。2 番目のレコードは何らかの形で破損していますか? 暗号が変更されたので、握手を再開する必要がありますか? このエラーが発生した場合はどうすればよいですか?

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

  • Sun/Oracle JDK 6 と、それにバンドルされている Java Secure Socket Extension (JSSE) を使用しています。
  • iOS 6 の Mobile Safari でこのエラーが頻繁に発生します。FireFox でこの問題が発生することはめったにありません。

前もって感謝します!

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

security - トラストストアとキーストアはSSLでどのように使用されますか?

Javaを使用してSSL接続を作成する場合、最初にKeyStoresTrustStoresを使用してSSLContextを初期化します。javax.net.sslのSSLContextには、 SSLEngineを作成するためのcreateSSLEngine()というメソッドがあります。したがって、接続用のセッションを作成するときは、作成されたSSLEngineが使用されます。私の質問は、SSLプロトコルのどの時点でKeyStoresとTrustStoresのkeyManagersとTrustManagersが使用されるかということです。

前もって感謝します。

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

java - SSLEngine の getHandShakeStatus() と Java の SSLEngineResults の違い

Java で SSLEngine を使用してクライアント/サーバー接続を作成しようとしています。SSLEngine.getHandshakeStatus()何が違うのかお聞きしたいのですが、NIO API との多重化SSLEngineResults.getHandshakeStatus().に関する Nuno Santos のサンプル コードを見つけました。SSLEngine

私が参照するコードは次のとおりです。

私が見つけたコードへのリンクは次のとおりです。 http://onjava.com/pub/a/onjava/2004/11/03/ssl-nio.html?page=last&x-order=date

サンプルコードはリソースセクションにあります

前もって感謝します!

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

openssl - カスタム openssl エンジンを使用して秘密鍵の公開を防止する

エンジンに鍵ペアを生成させ、実際に鍵を公開せずにアプリケーションに秘密鍵を「使用」させること (署名など) は可能ですか? たとえば、openssl は何らかの参照を返しますが、キー自体は返しません。さらに、キーペア (および関連する証明書チェーン) を保存し、後で取得する方法が必要です。すべてを pkcs12 構造体に格納することを考えていました。

C でこれを行う方法を教えてください。