私はHTTP POST要求を介してバックエンドサーバーと通信するAndroidアプリを持っています。私はそれをHTTPSにアップグレードしたいと思います。私が使用しているAPIはHttpLib.postRequestです。ロードバランサとTLSネゴシエーションの失敗をデバッグするにはどうすればいいですか?
Apacheサーバーへの直接接続が正常に機能していることがわかりました。しかし、ロードバランサ経由の接続は機能しません。私のロードバランサはAliyunのものです。私は2つの異なるロードバランサを試しました。どちらも同じ方法で失敗します。直接の症状は、電話で「unknown_err」を取得することです。
私はtcpdumpを使ってトラフィックをキャプチャできます。これは、正しい場所に接続して、交渉しようとしていることを証明します。セッションは、クライアントがHTTPSエラー「証明書不明(46)」を送信して終了します。
これは通常、不正な証明書または構成によって発生します。しかし私は自分の証明書がすべて有効であることを知っています。他のブラウザは、通常のWebページを読み込むために同じサーバに接続するとうまく動作します。同じアプリのiOS版もうまく動作します。アプリが接続に失敗している場合でも、Android端末のウェブサイトを閲覧すると正常に動作します。ウェブサイトはhttps://zaomengshe.comです。そこで証明書を確認できます。また、ロードバランサとLet's Encryptの証明書とは別の設定をしています。
私は、AliyunのロードバランサとAndroidのいくつかの特質が、交渉がうまくいかないと思うでしょう。おそらく私はいくつかのアルゴリズムやキーサイズなどのサポートを有効にする必要があります。私はTLS 1.2がAPIバージョン20までサポートされていなかったことを読んだので、サポートされている最小バージョンを20に更新しました。それは役に立ちませんでした。このドメインの
ああ、それは完璧な感覚です、ありがとう。 SSLLabsへのポインタをありがとう! –