OpenSSL 1.1.1.dおよび1.1.1kの問題

OpenSSL 1.1.1.dおよび1.1.1kの問題

apt-getのアップデートとアップグレードが完了し、Python3によって報告されたOpenSSLのバージョンは1.1.1です。D2019年9月10日。問題は、私のクライアントホストが1.1.1を実行していることです。K2021年3月25日に接続エラー(無効なSSLバージョン)を受け取りました。 ...libssl1.1を更新すると、すでに最新バージョンの1.1.1dを使用しているようです。

... 1.1.1dを使用してサーバーに接続するために1.1.1kを使用する方法があるかどうかをPythonに尋ねる必要があると思います。この接線に沿ってMysql.connectorを使用しています。私はクライアントがデータベースエンジン(MariaDbなど)と同じホストで実行されているときに接続できるため、サーバーとクライアントが「正しく」構成されていることを知っています。

正確なエラーメッセージは次のとおりです。

mysql.connector.errors.InterfaceError: 2055: Lost connection to MySQL server at 'trogdb:3306', system error: 1 [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1129)

以下は、再試行の間に3秒の遅延があるtcpdumpです。

16:45:24.174046 ARP, Request who-has dbserver (b8:27:eb:71:99:00 (oui Unknown)) tell 192.168.12.33, length 28
16:45:24.174052 IP 192.168.12.33.51755 > dbserver.mysql: Flags [S], seq 152001190, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 1285434605 ecr 0,sackOK,eol], length 0
16:45:24.430503 IP dbserver.mysql > 192.168.12.33.51755: Flags [S.], seq 3481602879, ack 152001191, win 65160, options [mss 1460,sackOK,TS val 3680782024 ecr 1285434605,nop,wscale 7], length 0

16:45:24.430600 IP 192.168.12.33.51755 > dbserver.mysql: Flags [.], ack 1, win 2058, options [nop,nop,TS val 1285434859 ecr 3680782024], length 0
16:45:24.435750 IP dbserver.mysql > 192.168.12.33.51755: Flags [P.], seq 1:104, ack 1, win 510, options [nop,nop,TS val 3680782073 ecr 1285434859], length 103
16:45:24.435803 IP 192.168.12.33.51755 > dbserver.mysql: Flags [.], ack 104, win 2057, options [nop,nop,TS val 1285434864 ecr 3680782073], length 0
16:45:24.436748 IP 192.168.12.33.51755 > dbserver.mysql: Flags [P.], seq 1:37, ack 104, win 2057, options [nop,nop,TS val 1285434865 ecr 3680782073], length 36
16:45:24.439981 IP dbserver.mysql > 192.168.12.33.51755: Flags [.], ack 37, win 510, options [nop,nop,TS val 3680782079 ecr 1285434865], length 0
16:45:24.439981 IP dbserver.mysql > 192.168.12.33.51755: Flags [P.], seq 104:130, ack 37, win 510, options [nop,nop,TS val 3680782079 ecr 1285434865], length 26
16:45:24.439982 IP dbserver.mysql > 192.168.12.33.51755: Flags [F.], seq 130, ack 37, win 510, options [nop,nop,TS val 3680782079 ecr 1285434865], length 0
16:45:24.440004 IP 192.168.12.33.51755 > dbserver.mysql: Flags [P.], seq 37:141, ack 130, win 2056, options [nop,nop,TS val 1285434868 ecr 3680782079], length 104
16:45:24.440013 IP 192.168.12.33.51755 > dbserver.mysql: Flags [.], ack 131, win 2056, options [nop,nop,TS val 1285434868 ecr 3680782079], length 0
16:45:24.445929 IP dbserver.mysql > 192.168.12.33.51755: Flags [R], seq 3481603010, win 0, length 0
16:45:24.445930 IP dbserver.mysql > 192.168.12.33.51755: Flags [R], seq 3481603009, win 0, length 0
16:45:27.446093 IP 192.168.12.33.51756 > dbserver.mysql: Flags [S], seq 1750823761, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 2602561978 ecr 0,sackOK,eol], length 0
16:45:27.706430 IP 192.168.12.33.51756 > dbserver.mysql: Flags [S], seq 1750823761, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 2602562237 ecr 0,sackOK,eol], length 0
16:45:27.707181 IP dbserver.mysql > 192.168.12.33.51756: Flags [S.], seq 416666955, ack 1750823762, win 65160, options [mss 1460,sackOK,TS val 3680785302 ecr 2602561978,nop,wscale 7], length 0
16:45:27.707210 IP 192.168.12.33.51756 > dbserver.mysql: Flags [.], ack 1, win 2058, options [nop,nop,TS val 2602562237 ecr 3680785302], length 0
16:45:27.711004 IP dbserver.mysql > 192.168.12.33.51756: Flags [S.], seq 416666955, ack 1750823762, win 65160, options [mss 1460,sackOK,TS val 3680785348 ecr 2602561978,nop,wscale 7], length 0
16:45:27.711004 IP dbserver.mysql > 192.168.12.33.51756: Flags [P.], seq 1:104, ack 1, win 510, options [nop,nop,TS val 3680785349 ecr 2602562237], length 103
16:45:27.711021 IP 192.168.12.33.51756 > dbserver.mysql: Flags [.], ack 1, win 2058, options [nop,nop,TS val 2602562241 ecr 3680785302], length 0
16:45:27.711029 IP 192.168.12.33.51756 > dbserver.mysql: Flags [.], ack 104, win 2057, options [nop,nop,TS val 2602562241 ecr 3680785349], length 0
16:45:27.711160 IP 192.168.12.33.51756 > dbserver.mysql: Flags [P.], seq 1:37, ack 104, win 2057, options [nop,nop,TS val 2602562241 ecr 3680785349], length 36
16:45:27.715488 IP dbserver.mysql > 192.168.12.33.51756: Flags [.], ack 37, win 510, options [nop,nop,TS val 3680785354 ecr 2602562241], length 0
16:45:27.715506 IP 192.168.12.33.51756 > dbserver.mysql: Flags [P.], seq 37:141, ack 104, win 2057, options [nop,nop,TS val 2602562245 ecr 3680785354], length 104
16:45:27.716795 IP dbserver.mysql > 192.168.12.33.51756: Flags [P.], seq 104:130, ack 37, win 510, options [nop,nop,TS val 3680785354 ecr 2602562241], length 26
16:45:27.716795 IP dbserver.mysql > 192.168.12.33.51756: Flags [F.], seq 130, ack 37, win 510, options [nop,nop,TS val 3680785354 ecr 2602562241], length 0
16:45:27.716810 IP 192.168.12.33.51756 > dbserver.mysql: Flags [.], ack 130, win 2056, options [nop,nop,TS val 2602562246 ecr 3680785354], length 0
16:45:27.716819 IP 192.168.12.33.51756 > dbserver.mysql: Flags [.], ack 131, win 2056, options [nop,nop,TS val 2602562246 ecr 3680785354], length 0
16:45:27.719254 IP dbserver.mysql > 192.168.12.33.51756: Flags [R], seq 416667059, win 0, length 0
16:45:27.720338 IP dbserver.mysql > 192.168.12.33.51756: Flags [R], seq 416667085, win 0, length 0
16:45:27.720339 IP dbserver.mysql > 192.168.12.33.51756: Flags [R], seq 416667086, win 0, length 0

3 seconds between retries

16:45:30.724896 IP 192.168.12.33.51757 > dbserver.mysql: Flags [S], seq 3599738548, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 3758629911 ecr 0,sackOK,eol], length 0
16:45:30.985153 IP dbserver.mysql > 192.168.12.33.51757: Flags [S.], seq 3278475863, ack 3599738549, win 65160, options [mss 1460,sackOK,TS val 3680788605 ecr 3758629911,nop,wscale 7], length 0
16:45:30.985229 IP 192.168.12.33.51757 > dbserver.mysql: Flags [.], ack 1, win 2058, options [nop,nop,TS val 3758630170 ecr 3680788605], length 0
16:45:30.995059 IP dbserver.mysql > 192.168.12.33.51757: Flags [P.], seq 1:104, ack 1, win 510, options [nop,nop,TS val 3680788629 ecr 3758630170], length 103
16:45:30.995113 IP 192.168.12.33.51757 > dbserver.mysql: Flags [.], ack 104, win 2057, options [nop,nop,TS val 3758630179 ecr 3680788629], length 0
16:45:30.995428 IP 192.168.12.33.51757 > dbserver.mysql: Flags [P.], seq 1:37, ack 104, win 2057, options [nop,nop,TS val 3758630179 ecr 3680788629], length 36
16:45:31.003811 IP dbserver.mysql > 192.168.12.33.51757: Flags [.], ack 37, win 510, options [nop,nop,TS val 3680788641 ecr 3758630179], length 0
16:45:31.003812 IP dbserver.mysql > 192.168.12.33.51757: Flags [P.], seq 104:130, ack 37, win 510, options [nop,nop,TS val 3680788641 ecr 3758630179], length 26
16:45:31.003849 IP 192.168.12.33.51757 > dbserver.mysql: Flags [P.], seq 37:141, ack 130, win 2056, options [nop,nop,TS val 3758630187 ecr 3680788641], length 104
16:45:31.007156 IP dbserver.mysql > 192.168.12.33.51757: Flags [F.], seq 130, ack 37, win 510, options [nop,nop,TS val 3680788641 ecr 3758630179], length 0
16:45:31.007193 IP 192.168.12.33.51757 > dbserver.mysql: Flags [.], ack 131, win 2056, options [nop,nop,TS val 3758630189 ecr 3680788641], length 0
16:45:31.013955 IP dbserver.mysql > 192.168.12.33.51757: Flags [R], seq 3278475993, win 0, length 0
16:45:31.020450 IP dbserver.mysql > 192.168.12.33.51757: Flags [R], seq 3278475994, win 0, length 0

ベストアンサー1

まだ回答はなく、部分的な分析しかありません。

非データtcpdumpは、TCPハンドシェイク後にサーバーが104バイト、クライアントが37バイト、サーバーが26バイト、クライアントが104バイト、サーバーFINを送信したことを示しています。

最も簡単にテストできるシステムであるCentOS7.7 with mariadb5.5.26では、次のような結果が得られます。
サーバーは86バイトのHello
クライアントはログインのために36バイトを送信します。
クライアントはTLSハンドシェイク(289バイトClientHello)を開始し、正常に続行してデータを取得します。

最初の2つは非常によく一致しています。クライアント104はClientHelloであってもよい。 OpenSSL1.1.1では非常に短いですが(以前のバージョンのMySQL / Mariaで使用されているようにTLS1.0&1.1のみをサポートしていますが)。しかし、サーバー26が送信しました。今後これはTLS応答にすることはできません(ServerHelloの場合は短すぎます)SSL / TLSがまったくない種類のエラーメッセージかもしれません。しかし、libsslはそれを解釈しようとし、間違ったバージョンのように見えます(これは追加データなしでサーバーのFIN-ingを説明することもあります)。トレースからデータを取得すると、これらの両方を確認でき、潜在的に問題の識別に関する知識を増やすことができます。

また、dbhostでローカルに正常に接続され、実際にTLSを介して接続されている場合は、ループバックインターフェースから接続をキャプチャできる必要があります。これは比較のための参照を提供します。

おすすめ記事