opensslを1.1.1バージョンにアップグレードした後、クライアント(odbc)がTLS1.2で実行され、サーバー(データベース)がTLS 1.3で実行されているシナリオがあり、クライアント側で次のエラーが発生して失敗します。
「SSLハンドシェイクの失敗の理由[エラー:1407743E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1アラートの不適切なフォールバック]。」
TLS 1.3のドキュメントでは、フォールバック保護がデフォルトで有効になっており、TLS1.2クライアントがTLS1.3サーバーと通信すると、フォールバック保護のために特別なバイトが送信されると書かれています。
以下は私の疑問です。-クライアントでこれらの特別なバイトを処理する必要がありますか?--TLS 1.3サーバーと通信するためにTLS1.2クライアントで必要な他の処理はありますか?-または、失敗のその他の理由はありますか?
私はこれが起こったことだと思います:
1)クライアントはTLS 1.2ハンドシェイクを送信します
2)サーバーはTLS 1.3のみをサポートするため接続を閉じます
3)クライアントはフォールバックSCSVを使用したTLS 1.1ハンドシェイクで再試行します(RFC 7507を参照)
4)サーバーはエラーメッセージを送信します:不適切なフォールバック
クライアントが1.2を要求し、サーバーがそれをサポートしていないため、最初の接続は失敗します(ステップ2)。サーバーがこのバージョンをサポートしている可能性がある場合、クライアントは1.1で再試行します。フォールバックSCSVは、1.1がクライアントがサポートする最高バージョンではないことを示すために送信されます。
SCSV RFC(7507)によると:
TLS_FALLBACK_SCSVがClientHello.cipher_suitesに表示され、サーバーでサポートされている最高のプロトコルバージョンがClientHello.client_versionに示されているバージョンよりも高い場合、サーバーは致命的な不適切なフォールバックアラートで応答する必要があります。
あなたの質問に答えるために、あなたが言及する特別なバイトはSCSVだと思いますが、これはクライアントによって送信され、サーバーによって処理されるため、クライアント側では何もしません。この失敗は、クライアントとサーバーが通信するための共通バージョンのTLSを持っていないことが原因だと思います。クライアントが1.2のみをサポートし、サーバーが1.3のみをサポートする場合、クライアントはバージョンに同意できず、接続は失敗します。サーバーでTLS1.2を有効にするか、クライアントで1.3を有効にすると、通信できるようになります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加