LFTPを使用してTLSを持つサーバーに接続するにはどうすればよいですか?

LFTPを使用してTLSを持つサーバーに接続するにはどうすればよいですか?

TLSが必要なサーバーに接続するためにLFTPを使用しようとしています。

この方法で試していますが、コマンドなどを使用しようとすると、sslv3警告エラーが発生しますlsputpget

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 を使用しようとすると、機能し、パスワードを入力する前に、TLS 1.2 を参照するこのウィンドウが表示されますUse explicit FTP over TLS if availableRequire explicit FTP over TLS

ここに画像の説明を入力してください。

最後にサーバーに接続すると、このログが表示されます。

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サーバーに接続できないことを示します。

オペレーティングシステムの名前とバージョンは何ですか?

関連情報