OpenSSL 1.1.1.d 및 1.1.1k 문제

OpenSSL 1.1.1.d 및 1.1.1k 문제

apt-get 업데이트 및 업그레이드를 완료했으며 Python3에서 보고한 OpenSSL 버전은 1.1.1입니다.2019년 9월 10일. 문제는 내 클라이언트 호스트가 1.1.1을 실행하고 있다는 것입니다.케이2021년 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)를 시작하고 성공적으로 계속한 다음 데이터를 얻습니다.

처음 두 개는 매우 잘 일치합니다. 클라이언트 104는 ClientHello가 될 수 있습니다. 비록 OpenSSL1.1.1에서는 매우 짧지만(이전 버전의 MySQL/Maria에서 사용되는 것처럼 TLS1.0&1.1만 지원하더라도). 하지만 서버 26이 보냈습니다.앞으로이는 TLS 응답일 수 없으며(ServerHello의 경우 너무 짧습니다)SSL/TLS가 전혀 아닌 일종의 오류 메시지일 수 있습니다.그러나 libssl은 이를 해석하려고 시도하며 잘못된 버전인 것처럼 보입니다(이는 추가 데이터 없이 서버 FIN-ing을 설명하기도 함). 추적에서 데이터를 얻으면 이 두 가지 사항을 모두 확인할 수 있으며 잠재적으로 문제 식별에 대한 지식을 늘릴 수 있습니다.

또한 dbhost에서 로컬로 성공적으로 연결이 실행되고 실제로 TLS를 통해 연결되는 경우 루프백 인터페이스에서 연결을 캡처할 수 있어야 하며, 이는 비교를 위한 참조를 제공합니다.

관련 정보