LFTP를 사용하여 TLS가 있는 서버에 연결하려면 어떻게 해야 합니까?

LFTP를 사용하여 TLS가 있는 서버에 연결하려면 어떻게 해야 합니까?

TLS가 필요한 서버에 연결하기 위해 LFTP를 사용하려고 합니다.

이 방법으로 시도 중이지만 명령 등을 사용하려고 하면 sslv3 경고 오류가 발생합니다 ls.putpget

lftp
set ftp:ssl-force true
connect X.X.X.X
X.X.X.X: -> login myuser
Password:
[email protected]:-> pget filename
Fatal error: SSL_Connect: sslv3 alert illegal parameter

이 문제를 어떻게 해결할 수 있나요? 미리 감사드립니다.

업데이트 1

나는 open ftp://X.X.X.X같은 결과로 다음을 시도했습니다. open명령 앞에 다른 명령이 누락 되었나요 ?

$ lftp
lftp :~> open ftp://X.X.X.X
lftp X.X.X.X:~> login admin
Password:
lftp [email protected]:~> ls
`ls' at 0 [Connecting...]
`ls' at 0 [Delaying before reconnect: 16]

옵션과 함께 Filezilla를 사용하려고 하면 Use explicit FTP over TLS if available작동 Require explicit FTP over TLS하고 비밀번호를 입력하기 전에 TLS 1.2를 언급하는 이 창이 나타납니다.

여기에 이미지 설명을 입력하세요.

마지막으로 서버에 접속하면 이 로그가 표시됩니다.

Status: Connecting to X.X.X.X:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Server does not support non-ASCII characters.
Status: Logged in
Status: Retrieving directory listing...
Status: Directory listing of "/" successful

업데이트 2

사용하려고 할 때의 로그입니다.lftp -d

$ lftp -d
lftp :~> open ftp://AAA.BBB.CCC.DDD
---- Resolving host address...
---- IPv6 is not supported or configuredress...]
---- 1 address found: AAA.BBB.CCC.DDD
lftp AAA.BBB.CCC.DDD:~> login admin
Password:
lftp [email protected]:~> ls
---- Connecting to AAA.BBB.CCC.DDD (AAA.BBB.CCC.DDD) port 21
<--- 220 ftp server ready.
---> FEAT
<--- 500 Sorry, no such command.
---> AUTH TLS
<--- 234 AUTH command ok; starting SSL connection.
---> USER admin
**** SSL_connect: sslv3 alert illegal parameter
---- Closing control socket
---- Connecting to AAA.BBB.CCC.DDD (AAA.BBB.CCC.DDD) port 21
<--- 220 ftp server ready.
---> FEAT
<--- 500 Sorry, no such command.
---> USER admin
<--- 430 Require auth before enter.
---> QUIT
<--- 221 Have a nice day!
---- Closing control socket
`ls' at 0 [Delaying before reconnect: 12]

업데이트 3

Windows 7의 Cygwin에서 FTP 및 LFTP를 사용해 보았습니다(Windows 7에서 Filezilla를 성공적으로 실행했습니다).

Cygwin 에뮬레이터:

$ uname -a
CYGWIN_NT-6.1 user 3.1.5(0.340/5/3) 2020-06-01 08:59 x86_64 Cygwin

user@user ~
$ openssl version
OpenSSL 1.1.1f  31 Mar 2020

CentOS 시스템에서 FTP를 사용해 보았습니다.

CentOS:

[root@ServerAbc ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
[root@ServerAbc ~]#
[root@ServerAbc ~]# uname -a
Linux ServerAbc 2.6.32-573.3.1.el6.x86_64 #1 SMP Thu Aug 13 22:55:16 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@ServerAbc ~]# cat /etc/*-release
CentOS release 6.7 (Final)
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch

openssl전송 여부에 관계없이 두 컴퓨터 모두에서 이 오류가 발생합니다 .-connect ...

user@user ~
$ openssl s_client AAA.BBB.CCC.DDD:21 -starttls ftp </dev/null
s_client: Use -help for summary.

user@user ~
$ openssl -connect s_client AAA.BBB.CCC.DDD:21 -starttls ftp </dev/null
Invalid command '-connect'; type "help" for a list.

user@user ~
$ openssl help
Standard commands
asn1parse         ca                ciphers           cms
crl               crl2pkcs7         dgst              dhparam
dsa               dsaparam          ec                ecparam
enc               engine            errstr            gendsa
genpkey           genrsa            help              list
nseq              ocsp              passwd            pkcs12
pkcs7             pkcs8             pkey              pkeyparam
pkeyutl           prime             rand              rehash
req               rsa               rsautl            s_client
s_server          s_time            sess_id           smime
speed             spkac             srp               storeutl
ts                verify            version           x509

Message Digest commands (see the `dgst' command for more details)
blake2b512        blake2s256        gost              md2
md4               md5               rmd160            sha1
sha224            sha256            sha3-224          sha3-256
sha3-384          sha3-512          sha384            sha512
sha512-224        sha512-256        shake128          shake256
sm3

Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb
aes-256-cbc       aes-256-ecb       aria-128-cbc      aria-128-cfb
aria-128-cfb1     aria-128-cfb8     aria-128-ctr      aria-128-ecb
aria-128-ofb      aria-192-cbc      aria-192-cfb      aria-192-cfb1
aria-192-cfb8     aria-192-ctr      aria-192-ecb      aria-192-ofb
aria-256-cbc      aria-256-cfb      aria-256-cfb1     aria-256-cfb8
aria-256-ctr      aria-256-ecb      aria-256-ofb      base64
bf                bf-cbc            bf-cfb            bf-ecb
bf-ofb            camellia-128-cbc  camellia-128-ecb  camellia-192-cbc
camellia-192-ecb  camellia-256-cbc  camellia-256-ecb  cast
cast-cbc          cast5-cbc         cast5-cfb         cast5-ecb
cast5-ofb         des               des-cbc           des-cfb
des-ecb           des-ede           des-ede-cbc       des-ede-cfb
des-ede-ofb       des-ede3          des-ede3-cbc      des-ede3-cfb
des-ede3-ofb      des-ofb           des3              desx
idea              idea-cbc          idea-cfb          idea-ecb
idea-ofb          rc2               rc2-40-cbc        rc2-64-cbc
rc2-cbc           rc2-cfb           rc2-ecb           rc2-ofb
rc4               rc4-40            rc5               rc5-cbc
rc5-cfb           rc5-ecb           rc5-ofb           seed
seed-cbc          seed-cfb          seed-ecb          seed-ofb
zlib

Cygwin 터미널(Windows 7)에서 lftp 버전은 다음과 같습니다.

$ lftp -v
LFTP | Version 4.9.1 | Copyright (c) 1996-2020 Alexander V. Lukyanov
.
.
.
Libraries used: Expat 2.2.6, idn2 2.2.0, libiconv 1.14, OpenSSL 1.1.1f  31 Mar 2020, Readline 7.0, zlib 1.2.11

업데이트 4

Cygwin에서

User@User ~
$ openssl s_client -connect AAA.BBB.CCC.DDD:21 -starttls ftp </dev/null
CONNECTED(00000004)
34359738384:error:14094417:SSL routines:ssl3_read_bytes:sslv3 alert illegal parameter:ssl/record/rec_layer_s3.c:1543:SSL alert number 47
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 77 bytes and written 313 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

CentOS에서

[root@ServerC ~]# openssl s_client -connect AAA.BBB.CCC.DDD:21 -starttls ftp </dev/null
CONNECTED(00000003)
depth=0 C = ZZ, O = Xyz, OU = some text, ZZ = 5900283817720ZZ000123.xyz.net
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = ZZ, O = Xyz, OU = some text, ZZ = 5900283817720ZZ000123.xyz.net
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = ZZ, O = Xyz, OU = some text, ZZ = 5900283817720ZZ000123.xyz.net
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=ZZ/O=Xyz/OU=some text/ZZ=5900283817720ZZ000123.xyz.net
i:/C=ZZ/O=Xyz/OU=some text/ZZ=Xyz Wireless Network Product CA
---
Server certificate
-----BEGIN CERTIFICATE-----
..
..
gTsopEBALpl89bP3EfsakjncRTT
..
..

-----END CERTIFICATE-----
subject=/C=ZZ/O=Xyz/OU=some text/ZZ=5900283817720ZZ000123.xyz.net
issuer=/C=ZZ/O=Xyz/OU=some text/ZZ=Xyz some text CA
---
No client certificate CA names sent
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 1739 bytes and written 383 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 76BBAC123994626C01C5B8B0B31ADF6EB9EB100C5BF110BD0C90B4C9B96DFC2
    Session-ID-ctx:
    Master-Key: XXXX....
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1592177053
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
220 ftp server ready.
DONE

원격 서버 설정

Transport Encrypted mode = SSL Encrypted
FTPS server command port = 21
FTPS server source data port = 20
TSL/SSL = SSL 3.0
        = TSL1.0
        = TSL1.1
        = TSL1.2

업데이트 5

$ openssl x509 -noout -text -in cert.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            ee:00:11:22:...55:21
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = ZZ, O = PPKDKD, OU = Some text, ZZ = PPKDKD Some text CA
        Validity
            Not Before: Dec  1 07:16:13 2017 GMT
            Not After : Nov 27 07:16:13 2032 GMT
        Subject: C = ZZ, O = PPKDKD, OU = Some text, ZZ = 123456789XX000216.PPKDKD.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    36:14:...:f8:d7:
                    .
                    .
                    .
                    11:22:...:78:55:
                    c4:33
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Authority Key Identifier:
                keyid:00:11:....:F1

            X509v3 Certificate Policies:
                Policy: X509v3 Any Policy
                  CPS: http://someurl

            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 CRL Distribution Points:

                Full Name:
                  URI:http://someurl/

            X509v3 Subject Alternative Name:
                DNS:123456789XX000216.PPKDKD.com
            X509v3 Key Usage: critical
                Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement
            X509v3 Subject Key Identifier:
                81:23:...23:3A
    Signature Algorithm: sha256WithRSAEncryption
         4c:22:...                                      :04:57:
         .
         .
         .
         41:11:22:00

답변1

~에서man페이지:

ftp:ssl 필수(부울)
true인 경우 서버가 SSL을 지원하지 않는 경우 일반 텍스트로 비밀번호 전송을 거부합니다. 기본값은 거짓입니다.

따라서 이 옵션은 도움이 되지 않습니다.

lftp지원되는 많은 프로토콜 중 어떤 프로토콜을 사용하려는지 알아야 합니다 . 명령을 사용하여 연결할 때 open구성표와 호스트를 형식으로 제공합니다 <scheme>://<hostname>. 예를 들어: ftp://example.org.

지원되는 시나리오 목록은 페이지 시작 부분에 나와 있습니다 man.

Filezilla를 성공적으로 사용하셨다면가능하다면 TLS를 통한 명시적 FTP를 사용하세요.옵션이 있는 경우 해당 프로그램을 사용해야 합니다 ftp://.

ftps://프로그램은 Filezilla와 동일합니다.암시적 FTP이를 위해서는 서버가 포트 990에서 수신 대기해야 합니다. 이는 오래되고 더 이상 사용되지 않는 TLS 사용 방법입니다.

답변2

메시지 **** SSL_connect: sslv3 alert illegal parameter가 로컬 메시지처럼 보입니다.

lftp기본 SSL/TLS 설정에는 SSLv3에 대한 참조가 포함될 수 있지만(비활성화하길 바랍니다!) lftp로 컴파일된 SSL/TLS 라이브러리가 SSLv3 지원을 완전히 제거했을 수 있으므로 더 이상 SSLv3 키워드를 인식하지 못합니다.

lftp실행 중이 라면 set -a현재 설정 값은 무엇입니까 set ssl:priority?

해당 값이 포함된 경우 전혀 언급되지 않도록 sslv3설정을 변경해야 할 수도 있습니다 .sslv3

추가 조사에 따르면 오류 메시지는 로컬 SSL/TLS 라이브러리에서 발생하며 존재 여부는 ssl_connect문제의 라이브러리가 OpenSSL임을 나타냅니다. 그러나 "openssl SSL_connect 경고 불법 매개변수"에 대한 Google 검색에는 클라이언트가 지원하지 않는 암호 및 프로토콜 버전을 사용하는 서버와 관련된 이전 OpenSSL 버그에 대한 참조만 표시됩니다.

FileZilla 테스트에 따르면 서버는 확실히 TLS 1.2를 수행할 수 있습니다. 문제는 lftp컴파일한 OpenSSL 버전이 TLS 1.2를 지원하기에는 너무 오래되었다는 것일까요?

openssl s_client -connect AAA.BBB.CCC.DDD:21 -starttls ftp </dev/null해당 시스템의 OpenSSL이 영향을 받지 않고 FTP 서버와의 TLS 연결을 성공적으로 협상할 수 있는지 확인할 수 있습니다 lftp. 일반적으로 많은 진단 정보를 출력하지만 SSL/TLS 연결을 성공적으로 협상하기 전에 실패하면 오류가 발생합니다. 시스템의 OpenSSL 버전이 너무 오래되어 이 FTP/TLS 서버에 연결할 수 없음을 나타냅니다.

운영 체제의 이름과 버전은 무엇입니까?

관련 정보