[解決済み] SSLHandshakeException: ヌル証明書チェーン
2022-02-16 23:58:43
質問
Javaクライアントサーバーアプリケーションで、SSL接続を確立しようとしています。私は完全な証明書チェーンでJKSキーストアを提供しましたが、私はまだサーバーで次の例外を取得しています。
upcoming handshake states: server finished[20]
*** Certificate chain
<Empty>
***
fatal error: 42: null cert chain
javax.net.ssl.SSLHandshakeException: null cert chain
%% Invalidated: [Session-5, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384]
MyThread
, SEND TLSv1.2 ALERT:
fatal,
description = bad_certificate
MyThread, WRITE: TLSv1.2 Alert, length = 2
MyThread, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain
Stack Trace
javax.net.ssl.SSLHandshakeException: null cert chain
at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1521) ~[?:1.8.0_211]
at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:528) ~[?:1.8.0_211]
at sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1197) ~[?:1.8.0_211]
at sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1165) ~[?:1.8.0_211]
at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469) ~[?:1.8.0_211]
... 4 more
Caused by: javax.net.ssl.SSLHandshakeException: null cert chain
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[?:1.8.0_211]
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1647) ~[?:1.8.0_211]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:318) ~[?:1.8.0_211]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:306) ~[?:1.8.0_211]
at sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1939) ~[?:1.8.0_211]
at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:232) ~[?:1.8.0_211]
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037) ~[?:1.8.0_211]
at sun.security.ssl.Handshaker$1.run(Handshaker.java:970) ~[?:1.8.0_211]
at sun.security.ssl.Handshaker$1.run(Handshaker.java:967) ~[?:1.8.0_211]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_211]
at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1459) ~[?:1.8.0_211]
... 2 more
これは 証明書の不足が原因ではなく . デバッグの早い段階で、以下の証明書が表示されていますが、これはSSLの正しい順序です(最も具体的なものが最初で、ルートcaは最後)。
upcoming handshake states: server finished[20]
chain [0] = [
[
Version: V3
Subject: CN=ABC
...
Issuer: CN=DEF
...
]
chain [1] = [
[
Version: V3
Subject: CN=DEF
...
Issuer: CN=GHI
...
]
chain [2] = [
[
Version: V3
Subject: CN=GHI
...
Issuer: CN=GHI
...
]
では、なぜこのような現象が起こるのか、どなたか教えていただけませんか?もしかして、クライアントが証明書を拒否しているのでしょうか?
注:鍵と証明書は他の人から提供されたものです。自分で生成することはできません。
解決方法は?
問題点は
ではない
サーバーの証明書チェーン サーバーが接続を拒否しているのは、クライアントが自分自身を認証することを期待しているためです。スタックトレースには以下のものが含まれているので、このことがわかると思います。
ServerHandshaker.clientCertificate()
.
Java の SSL エンジンは、クライアント認証が必要なのは SSLEngine.setNeedClientAuth() .
関連
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】intがnullであるかどうかを確認する方法