問題タブ [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.
java - SSL ハンドシェイクでのクライアント証明書の受け入れ
Androidとサーバー側でNettyを使用して、クライアント認証でSSLで保護された接続を確立しています。SSLEngine が「null cert chain」のために証明書を拒否するため、これらの証明書に接続するのに問題があります。
これは、サーバー側で行ったことです。署名済みのサーバー証明書を使用して SSLContext をセットアップしました (クライアントは CA を認識しているため、これを検証できます)。
サーバーがクライアントからの証明書を受け入れるようにするために (証明書はすべて自己署名であるため)、すべてを受け入れる DummyTrustManager を実装しました。
ポイントは、getAcceptedIssuers() メソッドについてよくわからないということです。
空の配列を返すと、空の AcceptedIssuers リストが原因で、openssl-binary (正しいセットアップを検証するために使用します) が失敗します。
現在のサーバー証明書チェーンを追加すると、少なくとも同じ CA によって署名されたクライアント証明書では機能しますが、自己署名されたものでは機能しません (これが必要です)。
しかし、クライアント側で何か間違ったことをしているのかもしれません:
また、いくつかの調査を行い、これまでに理解したことから、クライアントには有効な証明書チェーンがありますが、サーバーによってリストされた発行者のみを受け入れるとサーバーが通知するため、送信しません。
これが正しい場合、どうすればこの問題を克服できますか?
私は、すべてのクライアントに配信され、サーバーの承認済み発行者リストにも記載されている個別の自己署名 CA を考えていました。どのクライアントも、この CA を使用して独自の証明書に署名します。これにはセキュリティ上の問題はないと思います。または、より良い解決策はありますか?
java - JDK 1.4 用の SSLEngine の実装?
Java 1.4 プラットフォーム (Sun/Oracle 実装ではない) で動作する必要がある NIO ベースのアプリケーションがあり、SSL でネットワーク接続を保護したいと考えています。ただし、javax.net.ssl.SSLEngine API は Java 5 以降でのみ使用できます。
javax.net.ssl.SSLEngine API の代替の無料のピュア Java 実装は存在しますか?
BouncyCastle は JCE の実装を提供しているようですが、パッケージに javax.net.ssl.SSLEngine が見つかりませんでした。私は何か見落としてますか?
apache - Apache: 特定の sslciphersuites のみを有効にする
2 つの質問があります。
1 つ目: firefox でサポートされている暗号スイートを確認しました ( https:// cc. dcsec.uni-hannover. de/ )。
例: 暗号スイート名: ECDHE-ECDSA-AES256-SHA キー サイズ: 256 ビット 説明: キー交換: ECDH、暗号化: AES、MAC: SHA1。がサポートされています。
Apache 構成でこの chiper スイートのみを有効にするにはどうすればよいですか?
この構成は機能しません:
どうしたの?
2 つ目: *https://calomel.org / firefox_ssl_validation.html* の「256 ビット Perfect Forward Secrecy のみ」の章では、次のチップが推奨されます。
*https://httpd.apache.org/docs/2.2/mod/mod_ssl.html* の「SSLCipherSuite ディレクティブ」の章は、Apache を正しい方法で構成するのに役立ちません。SSLCipherSuite の適切な構成で dhe_dss_aes_256_sha などを「変換」するにはどうすればよいですか。
読んでくれてありがとう。
android - 読み取り中にアンラップした後の Android SSLEngine BUFFER_UNDERFLOW
理由はわかりませんが、ssl を通過するサイトの半分で、読み取り中に buffer_underflow が発生します。
異なる SSL サイトを連続して呼び出すようにプログラムを連鎖させた場合、リンクの半分では機能しませんが、1 つずつ個別に呼び出すと機能します。たとえば、Chrome の開発者ツールを使用して、nexus 7 タブレットでhttps://www.facebook.comを呼び出しました。リクエストを見ると、呼び出されるリンクは次のとおりです。
- https://www.facebook.com/
- https://fbstatic-a.akamaihd.net/rsrc.php/v2/y7/r/Zj_YpNlIRKt.css
- https://fbstatic-a.akamaihd.net/rsrc.php/v2/yI/r/5EMLHs-7t29.cssなど
- ... (約 26 リンク)。
それらをチェーン化すると (ブラウザからhttps://www.facebook.comへの呼び出しをシミュレートするために)、リンクの半分がバッファ アンダーフローを取得し、最終的にそれらの接続を閉じる必要があります (0 バイトの読み取り)。ただし、1つずつ個別に呼び出すと、常に問題ありません。読むための私のコードは次のとおりです。
ありがとうございました。
java - SSL エンジンのシャットダウン
SSLEngineのドキュメントには、SSL 接続を適切に閉じる方法が示されています。より具体的には、切断された接続を処理する方法について説明します。
正常なシャットダウンに加えて、クローズ メッセージが交換される前にトランスポート リンクが切断される非正常なシャットダウンも発生する可能性があります。前の例では、非ブロッキング SocketChannel に対して読み取りまたは書き込みを試行すると、アプリケーションは -1 を取得する可能性があります。入力データの最後に到達したら、engine.closeInbound() を呼び出す必要があります。これにより、リモート ピアが SSL/TLS の観点から正常に閉じられたことを SSLEngine で検証します。その後、アプリケーションは引き続き正常にシャットダウンを試行する必要があります。上記の手順を使用して。
基本的に、リンクが切れた場合はengine.closeInbound()
呼び出す必要があります。ただし、このcloseInbound()メソッドのドキュメントには、ピアから適切な終了メッセージを受信する前に呼び出された場合、例外がスローされることが示されています。接続が切断された場合、この close_notify メッセージは決して受信されないように思われるため、このメソッドは常にその例外をスローします。
私はテストを行い、socketChannel.read()
-1 を返す単純なシャットダウン プロシージャを作成しました。呼び出すengine.closeInbound()
と、実際に次の例外が発生します。
私は何が欠けていますか?ドキュメントのこれら 2 つの部分は矛盾していませんか?
java - Bouncy Castle プロバイダーを使用して SSLContext インスタンスを作成する
SSLContext の作成に行き詰まっています (これを使用して SSLEngine をインスタンス化し、java-nio を介して暗号化されたトランスポートを処理します):
コード
次の例外をスローします。
Bouncy Castle の現在のプロバイダー パッケージ 'bcprov-jdk15on-150.jar' (ここから取得) をアプリケーションのクラスパスとそのブートクラスパス (VM-Option -Xbootclasspath/p 経由) に接続しましたが、どちらも問題を解決しませんでした。protocol
また、 (「SSL」と「TLSv1」など)さまざまな値を試しましたが、効果はありませんでした。
また、こことここで同様の問題を抱えている人を見つけました。しかし、それらとは対照的に、私はJava 7(またはそれ以降)をターゲットにしています(そして使用しています)が、まだこの問題があります。一般に、Bouncy Castle をこのように使用することは可能ですか、それともSSLEngine を介してオラクルの NIO の代わりにそれぞれの API を使用してプロトコルを書き直す必要がありますか(これは私が現在行っている方法です)。
ここで何か助けてくれてありがとう。
java - タスク後に SSLEngine ハンドシェークが停止する
http://books.google.com/books?id=l6f1jTB_XCYC&lpg=PA185&vq=scalable%20secure&pg=PA185#v=onepage&q&f=falseの例を使用して、SSLEngine が SocketChannel でどのように機能するかを確認します。後で、実装に合わせたソリューションを作成したいと考えました。残念ながら、この例は機能しません。runDelegatedTasks() メソッドの実行後にスタックします。サーバー コンソール出力:
クライアント コンソールが空です。
誰でもこの例を手伝ってくれますか?
rest - SSLEngine はすべてのデータを復号化するわけではありません
非ブロック モードで SocketChannels で SSLengine を使用しようとしています。
ハンドシェイクは正しく行われますが、channelsocket から http 投稿を読み取って復号化しようとすると、ヘッダーのみが復号化され、本文が消えます。
暗号化されたデータを peerNetData で印刷すると、次のようになります。
?>.//POST テスト HTTP/1.1 Cache-Control: no-cache Content-Length: 20 Content-Type: application/octet-stream Host: 192.168.XX
?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.// ?>.// <--- ここに暗号化された文字
しかし、peerAppDataで復号化されたデータを印刷すると、取得しています
POST test HTTP/1.1/ Cache-Control: no-cache Content-Length: 20 Content-Type: application/octet-stream Host: 192.168.XX // そしてここに 3 つの空行。
これは SSLengine の復号化の問題ですか??
ありがとう
また、unwrap メソッドが OK ステータスを返すように追加したいと思います。