JDK8が原因でプロジェクト起動時に「適切なプロトコルがありません」または「MySQL接続プロトコルの問題」と表示される理由と解決策(旅行経験)

記事は2回修正されており、タイミングが乱れる可能性があります、ごめんなさい!

どうしたの:

先にプロジェクトを受け取ったときにJDK8u311をインストールしました.プロジェクトを開始すると、最初に警告メッセージが表示されました:

警告: サーバーの ID 検証なしで SSL 接続を確立することはお勧めしません。MySQL 5.5.45+、5.6.26+、および 5.7.6+ の要件によると、明示的なオプションが設定されていない場合、デフォルトで SSL 接続を確立する必要があります。SSL を使用しない既存のアプリケーションに準拠するために、verifyServerCertificate プロパティは「false」に設定されています。useSSL=false を設定して明示的に SSL を無効にするか、useSSL=true を設定してサーバー証明書検証用のトラストストアを提供する必要があります。

その後、次のログにエラー メッセージが見つかりました。

適切なプロトコルがありません (プロトコルが無効になっているか、暗号スイートが不適切です)
: 適切なプロトコルがありません

このような問題は以前にも出ていました.通常は設定ファイルのmysqlのURLに「useSSL=false」を追加するのが私の解決策ですが、今回のプロジェクトはApolloの設定センターを利用しており,プロジェクト起動時に設定ファイルを選択しています. 「test」の設定ファイル。

プロジェクトが開始されると、デフォルトで "development" 設定ファイルが使用されます. 2 つの開始時に使用される Apollo 設定センターは次のとおりです:

開発 —> ローカル構成ファイルの
テスト —> Apollo Configuration Center によって取得

最初はこの問題に気付かなかったので、JDK バージョンに注意を向けました。元の JDK8u181 バージョンは問題がなかったので、この問題を解決するために下位の JDK バージョンを使用することにしました。

当時は前回のバージョンのJDK8が正常に使える理由が分からなかったのですが、今回は動かなかったので、いくつかテストを行いました。

JDK8u301 を使用して「開発」環境を起動することは可能ですが (現時点では 311 ではありませんが、同じ問題が存在します)、「テスト」環境をテストすることはできません。ファイルの内容に一貫性があることがわかりました。これは奇妙です。

その後、Apollo 構成センターの問題をすぐに思いつき、ログを確認したところ、上記の表の結果が得られました。この時点で、真相が明らかになりました。

「test」を選択すると、設定センターに接続して設定を取得しますが、設定センターのymlファイルに「useSSL=false」が追加されず、ローカル設定ファイルが有効になりません!
Apollo 構成センターで構成ファイルを変更すると、すべて正常に動作します。

最後に、考えられる解決策は 3 つあります。

  1. WindowsもMacもダウングレードすることで解決できます.MacがAppleチップならZulu JDKを使っているのかもしれません.Zuluは古いバージョンのJDK8を提供していませんが,新しいバージョンのMacには翻訳があるので,それも可能です.公式Javaをインストールしてインストール 旧バージョン、個人テストの小さいバージョンは221以下で正常に使用でき、311以上でも問題は変わらず。Mac では公式の JDK8u202 に切り替え、Windows では JDK8u211 に切り替えました。
  2. バージョンを切り替えたくない場合は、Zulu JDK によって調整された実行速度が必要です。次に、上記の最初の図に記載されているセキュリティ ファイルの「SSLv3」フィールドを削除し、プロジェクトを再起動すると、その効果も得られます。達成!
  3. URL の後に「useSSL=false」を追加します。

以下は、JDK8 の最近のいくつかのバージョンと以前のバージョンとのプロトコルに関する相違点です
。 security
ここに画像の説明を挿入
したがって、このファイルを変更することによっても効果が得られます。

バイバイ!

おすすめ

転載: blog.csdn.net/qq_25404477/article/details/122527433