Java에서 FTPS 서버 연결

Muhammad Adil 2023년10월12일
  1. FTP 대 FTPS
  2. Java에서 FTPS 서버 연결
Java에서 FTPS 서버 연결

FTPS(File Transfer Protocol Secure)는 클라이언트와 서버 간에 전송되는 데이터를 보호하기 위해 SSL/TLS 암호화를 사용하는 FTP(File Transfer Protocol)의 보안 버전입니다. 이 기사에서는 JSSE(Java Secure Channel) API를 사용하여 Java에서 FTPS 서버에 연결하는 방법을 살펴봅니다.

FTP 대 FTPS

FTP는 컴퓨터 간에 파일을 전송하기 위해 오래되고 널리 사용되는 프로토콜입니다. 여전히 널리 사용되고 있지만 많은 응용 프로그램에 부적합하게 만드는 몇 가지 보안 문제가 있습니다.

주요 문제 중 하나는 암호화가 부족하여 도청자가 암호 및 전송 중인 데이터와 같은 민감한 정보를 가로채 읽을 수 있다는 것입니다.

FTPS는 암호화된 연결과 향상된 보안을 제공하는 FTP의 확장입니다. FTPS에는 명시적 FTPS와 암시적 FTPS의 두 가지 유형이 있습니다.

명시적 FTPS에서는 클라이언트가 보안 연결을 요청하지만 암시적 FTPS에서는 서버가 보안 연결을 요구하고 클라이언트가 준수해야 합니다. 이 문서에서는 명시적 FTPS에 중점을 둘 것입니다.

Java에서 FTPS 서버 연결

이 튜토리얼을 따르려면 컴퓨터에 다음이 설치되어 있어야 합니다.

  1. 자바 개발 키트(JDK)
  2. 연결할 FTPS 서버(예: FileZilla 서버)
  3. 텍스트 편집기
  • FTPS 서버 설정

    첫 번째 단계는 FTPS 서버를 설정하는 것입니다. FileZilla 서버와 같이 명시적 FTPS를 지원하는 모든 FTPS 서버를 사용할 수 있습니다.

    FileZilla 서버를 설정하려면 다음 단계를 따르십시오.

    1. 공식 웹사이트에서 FileZilla Server를 다운로드하고 설치합니다.
    2. FileZilla 서버 인터페이스를 시작합니다.
    3. 편집 > 설정을 클릭합니다.
    4. FTP 설정 탭으로 이동하여 "SSL/TLS를 통한 FTP" 옵션을 선택합니다.
    5. SSL/TLS 설정 섹션에서 "보안 FTP(FTPS) 연결만 허용" 옵션을 선택합니다.
    6. 확인을 클릭하여 변경 사항을 저장합니다.
    7. 파일 > 서버 시작을 클릭하여 서버를 시작합니다.
  • 자바 코드 작성

    이제 FTPS 서버를 설정했으므로 여기에 연결할 Java 코드를 작성할 수 있습니다. JSSE(Java Secure Channel) API를 사용하여 FTPS 서버에 대한 보안 연결을 생성합니다.

    다음은 FTPS 서버에 연결하는 코드입니다.

    import java.io.IOException;
    import java.security.NoSuchAlgorithmException;
    import org.apache.commons.net.ftp.FTPSClient;
    public class FTPSExample {
      public static void main(String[] args) throws NoSuchAlgorithmException, IOException {
        FTPSClient ftpsClient = new FTPSClient();
        ftpsClient.connect("ftpserver.com", 21);
        ftpsClient.login("username", "password");
        ftpsClient.execPROT("P");
        ftpsClient.execPBSZ(0);
        ftpsClient.disconnect();
      }
    }
    

    코드를 분석하고 각 부분이 수행하는 작업을 살펴보겠습니다.

    1. FTPSClient 클래스는 Apache Commons Net 라이브러리의 일부이며 SSL/TLS를 사용하여 보안 연결을 지원하는 FTP 프로토콜을 구현합니다.
    2. connect 방법은 FTPS 서버에 연결합니다. 서버의 호스트 이름, IP 주소 및 포트 번호(보통 21)를 인수로 사용합니다.
    3. 로그인 방법은 지정된 사용자 이름과 암호를 사용하여 FTPS 서버에 로그인하는 데 사용됩니다.
    4. execPROT 메소드는 보안 연결을 요청합니다. "P" 인수는 개인(암호화된) 연결을 사용하려고 함을 나타냅니다.
    5. execPBSZ 메서드는 보호 버퍼 크기를 설정합니다. 0 값은 보호 버퍼를 비활성화합니다.
    6. 마지막으로 disconnect 방법을 사용하여 FTPS 서버에 대한 연결을 닫습니다.
  • 코드 실행

    코드를 실행하려면 classpath에 Apache Commons Net 라이브러리가 있어야 합니다. Apache Commons Net 웹 사이트에서 라이브러리를 다운로드할 수 있습니다.

    다음 명령을 사용하여 코드를 컴파일합니다.

    javac FTPSExample.java
    

    그런 다음 다음 명령을 사용하여 코드를 실행합니다.

    java FTPSExample
    

    모든 것이 올바르게 설정되면 출력이 표시되지 않아야 합니다. 이는 FTPS 서버에 성공적으로 연결되었음을 의미합니다.

    참고: 코드를 실행하려면 FTPS 연결을 설정해야 하므로 이 코드는 온라인 컴파일러에서 실행되지 않습니다.

Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook