問題タブ [sslhandshakeexception]
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 - HTTPS/SSL 経由の Java クライアント証明書
HttpsURLConnection
Java 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 をやり取りしたいので理想的ではありません)、代わりにこれを行います:
ここでクライアント証明書が問題であるかどうかさえわかりません。
java - SSLHandshakeException unknown_ca apns java
iPhone 用のスタンドアロン アプリケーションを実装しようとしています。iPhoneクライアントにApple Push通知を使用したい。javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca を取得しています apns ゲートウェイに接続するための Java コードは次のとおりです。
Linux マシンにどのような SSL 証明書をどのようにインストールできるかを理解するのを手伝ってください。
編集 :
Cert.p12を再作成したところ、プログラムが動作し始めました。動作しない正確な原因はわかりませんが、Cert.p12 ファイルが破損している可能性があります。
ご協力ありがとうございました。
java - Javaのプロキシを介してHTTPSリクエストを送信するにはどうすればよいですか?
HttpsUrlConnectionクラスを使用してサーバーにリクエストを送信しようとしています。サーバーに証明書の問題があるため、すべてを信頼するTrustManagerと、同様に寛大なホスト名ベリファイアを設定しました。このマネージャーは、直接リクエストを行うと問題なく機能しますが、プロキシを介してリクエストを送信すると、まったく使用されていないようです。
プロキシ設定を次のように設定します。
デフォルトのSSLSocketFactoryのTrustManagerは、次のように設定されます。
次のコードを実行すると、SSLHandshakException(「ハンドシェイク中にリモートホストが接続を閉じました」)が発生します。
SSLを処理するときにプロキシを使用することに関係するある種の設定が欠落していると思います。プロキシを使用しない場合、checkServerTrustedメソッドが呼び出されます。これは、私がプロキシを通過するときにも発生する必要があることです。
私は通常Javaを扱っておらず、HTTP/Web関連の経験もあまりありません。私がやろうとしていることを理解するために必要なすべての詳細を提供したと思います。そうでない場合は、私に知らせてください。
アップデート:
ZZ Coderが提案した記事を読んだ後、接続コードに次の変更を加えました。
結果(SSLHandshakeException)は同じです。ここでSLLSocketFactoryをSSLTunnelSocketFactory(記事で説明されているクラス)に設定すると、TrustManagerとSSLContextで行った処理が上書きされます。私はまだそれを必要としませんか?
別の更新:
すべてを信頼するTrustManagerを使用するSSLSocketFactoryを使用するようにSSLTunnelSocketFactoryクラスを変更しました。これが違いを生んだようには見えません。これはSSLTunnelSocketFactoryのcreateSocketメソッドです。
私のコードがconnection.connectを呼び出すと、このメソッドが呼び出され、doTunnelHandshakeの呼び出しが成功します。次のコード行では、SSLSocketFactoryを使用してSSLSocketを作成しています。この呼び出し後の結果のtoString値は次のとおりです。
"1d49247 [SSL_NULL_WITH_NULL_NULL:Socket [addr = / proxyHost、port = proxyPort、localport=24372]]"。
これは私には無意味ですが、それがこの後物事が崩壊する理由かもしれません。
result.startHandshake()が呼び出されると、同じcreateSocketメソッドが、呼び出しスタックHttpsClient.afterConnectから、Socket sがnullであることを除いて同じ引数で再度呼び出され、result.startHandshake()が発生します。この場合も、結果は同じSSLHandshakeExceptionになります。
このますます複雑になるパズルの重要な部分がまだ欠けていますか?
これはスタックトレースです。
java - Javaメール:SSLなしでポート25に電子メールを送信する場合のSSLHandshakeException
SSLを使用せずにポート25で電子メールを送信しようとしていますが、SSLHandshakeExceptionが発生します。以下に、javax.mail.SessionとSSLHandshakeExceptionによって出力されたデバッグメッセージを示します。
何が起こっているのか理解するのを手伝ってもらえますか?
セッションの作成とサーバーへの接続に使用されるコード:
jakarta-ee - JBoss は、再起動せずに証明書トラストストアをリロードします
再起動せずに JBoss 4.2 で証明書トラストストアを「リロード」する方法はありますか?
EJB に ssl を使用してリモート サーバー上の Web サービスを呼び出させようとしていますが、以下の記事にあるように SSLHandshakeException で同様の問題が発生しています。私たちがやろうとしていることは次のとおりで、3 台のマシンが関係しています。A は、サーバー B と C に対する Web サービス クライアントとして機能する JBoss サーバーです。
1) A で、ユーザーは B のホスト名を入力します。A のマシンは B の自己署名証明書を取得し、それをトラスト ストアにインストールします (外部シェル スクリプトを介して)。
2) SSL ソケット接続が B に対して行われ、この最初の試行で証明書ストアがロードされたように見えます。接続は成功し、すべてが機能します。
3) 再び A で、ユーザーは 2 と同じことを行います。シェル スクリプトは C の証明書を取得し、トラストストアにインストールします。ただし、C への試行された接続では、(javax.net.debug=ssl を有効にすることにより) トラストストアが「リロード」されていないように見え、C の証明書が見つからず、SSLHandshakeException が発生します。
JBoss を再起動すると、「更新された」トラストストアがロードされ、B と C の両方への接続が機能します。
JBoss を再起動せずにこれを行い、上記のスキームを収集したいのですが、正しくありません。誰かがトラストストアを動的に更新する正しい方法のドキュメントを教えてくれれば、非常にありがたいです。
java - リクエスト開始時の例外-ClientAuthSSL
Jettyを埋め込んだアプリケーションがあります。SSLでクライアント証明書認証を使用したいのですが、それを有効にすると、リクエストの開始時に次の例外が発生します。しかし、その後、リクエストは適切に処理されています。この例外は、IEまたはChromeからアクセスした場合にのみ発生します。Firefoxからアクセスした場合は表示されません。SslSocketConnectorを拡張するカスタムSSLConnectorがあります。私はそれをデバッグしようとしています。しかし、私がチェックを開始できる特定の場所/コードがあるかどうかを知りたいと思いました。
アップデート:
SSLデバッグオプションを有効にしましたが、ServerHelloDoneメッセージの直後の読み取りでこの例外が発生していました。これは、サーバーがクライアント証明書の要求とともに証明書を送信するメッセージです。最初に読んだときに何が起こっているのかわかりません。どんな助けでも深く感謝します。
更新: JDKを最新の23に更新し、2つのプロパティを有効/無効にして試してみました。それでも同じ振る舞いをします。
詳細: TLSv1とSSLv3はすべてのブラウザで有効になっています。client-authを有効にしなくても、通信は正しく行われています。クライアント認証では、最初のハンドシェイクで常に例外が発生し、次のハンドシェイクは適切に実行され、例外なく続行されます。サーバー側でjettyバージョン6.1.14を使用
java - Android C2DM: SSL 証明書 javax.net.ssl.SSLHandshakeException を確認できませんでした
C2DM サーバー経由でプッシュ通知を送信しようとすると、次の SSLHandshakeException を受け取ります。
メッセージを送信するコードは次のとおりで、App Engine で実行されています。cURL を使用するとすべて正常に動作するため、サーバー認証コードとデバイス登録 ID が正しいことがわかります。
他の人もこの問題を抱えているようですが、明確な解決策を見つけることができませんでした (少なくとも私が理解できるものではありません)。どんな助けにも感謝します。
java - 致命的なアラートを受信しました: SSLHandshakeException を介した handshake_failure
認証された SSL 接続に問題があります。Client Authorized SSL 証明書を使用して外部サーバーに接続する Struts アクションを作成しました。私のアクションでは、銀行のサーバーにデータを送信しようとしていますが、結果としてサーバーから次のエラーが発生したため、運がありません。
サーバーにデータを送信する Action クラスのメソッド
私の Merchant.properties ファイル:
これは証明書の問題だと初めて思ったので、.pfx から .jks に変換しましたが、同じエラーが発生し、変更はありません。
java - Java HttpsURLConnection SSLHandshakeException
HttpsURLConnection
を使用して Web サイトへの HTTPS 接続を確立し、PUT 要求を実行しようとしています。OutputStreamWriter
fromを作成しようとするとHttpsURLConnection.getOutputStream()
、次の例外がスローされます。
ページは証明書 (StartCom 発行) を取得したばかりです - Java に証明書が存在することを手動で認識させる必要がありますか? 同じ Web サイトの他のページに問題なく接続できますが、証明書が異なります。
java - javax.net.ssl.SSLHandshakeExceptionエラーを解決する方法は?
VPNに接続してインベントリAPIをセットアップし、製品リストを取得しましたが、正常に機能します。Webサービスから結果を取得し、UIにバインドしたら。また、PayPalをアプリケーションと統合して、支払いの電話をかけたときにExpressチェックアウトを行うと、このエラーが発生します。バックエンドプロセスにサーブレットを使用しています。この問題を解決する方法を誰かが言うことができますか?