delphi7+indy10使用idftp+IdSSLIOHandlerSocketOpenSSL连接TLS协议的FTP,目前IdFTP1.Connect();已经连接成功,IdFTP1.List(sr)进入目录也没问题,但是往下IdFTP1.List(sr)获得目录下文件时就报错了‘data connections must be encrypte’(数据连接必须加密 )。请问一下,这是什么原因,使用IdSSLIOHandlerSocketOpenSSL是否一定需要证书?(我并没有FTP服务端的证书)  我没积分了,麻烦大家帮帮忙吧!!!

解决方案 »

  1.   

    服务端证书是一定需要的,客户端证书不是必需。你看看ftp端能不能设置一下证书,不然ssl就没法正常运行了,ssl本来就要求服务端一定要有证书才行。
      

  2.   

    服务端是客户设置的,应该是有证书的吧,用FileZilla连接时提示了证书信息.我一开始以为客户端这边也需要证书,问了客户,没给提供,我卡这不知道怎么办了
      

  3.   

    对了,还有一个问题,libeay32.dll和ssleay32.dll需要注册吗?
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin    //需要uses idFtpCommon
      IdFTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
      IdFTP1.UseTLS := utUseExplicitTLS;
      IdFTP1.DataPortProtection := ftpdpsPrivate;
    end;