[java] Java Jersey에서 SSL/TLS를 사용하여 보안 연결 설정하는 방법은?

Java Jersey는 웹 어플리케이션과 API를 개발하기 위한 프레임워크로, 보안 연결을 위해 SSL/TLS를 사용할 수 있습니다. 이 문서에서는 Java Jersey에서 SSL/TLS를 설정하는 방법에 대해 알아보겠습니다.

1. 키 스토어 생성

먼저, SSL/TLS를 사용하기 위해 키 스토어를 생성해야 합니다. 키 스토어는 인증서와 개인 키를 저장하는 공간으로 사용됩니다.

아래의 명령을 사용하여 키 스토어를 생성할 수 있습니다:

keytool -genkey -alias myalias -keyalg RSA -keystore keystore.jks -validity 365

위 명령을 실행하면 몇 가지 정보를 입력해야 합니다. 이 정보는 키 스토어에 저장되며 인증서 작성시 사용됩니다.

2. Jersey 서버 설정

다음으로는 Jersey 서버의 설정을 변경하여 SSL/TLS를 사용하도록 해야 합니다.

import org.glassfish.jersey.SslConfigurator;
import org.glassfish.jersey.server.ResourceConfig;

public class MyApplication extends ResourceConfig {

    public MyApplication() {

        // SSL/TLS 설정을 가져옴
        SslConfigurator sslConfig = SslConfigurator.newInstance()
                .keyStoreFile("path/to/keystore.jks")
                .keyStorePassword("keystore_password")
                .trustStoreFile("path/to/truststore.jks")
                .trustStorePassword("truststore_password");

        // 서버에 SSL/TLS 설정 적용
        property("jersey.config.server.ssl.enabled", "true");
        property("jersey.config.server.ssl.keyStore", sslConfig.getKeyStoreFile());
        property("jersey.config.server.ssl.keyStorePassword", sslConfig.getKeyStorePassword());
        property("jersey.config.server.ssl.keyPassword", sslConfig.getKeyPassword());
        property("jersey.config.server.ssl.trustStore", sslConfig.getTrustStoreFile());
        property("jersey.config.server.ssl.trustStorePassword", sslConfig.getTrustStorePassword());
    }
}

위 코드에서 path/to/keystore.jkspath/to/truststore.jks는 각각 생성한 키 스토어와 신뢰 스토어의 경로를 지정해야 합니다. 또한 keystore_passwordtruststore_password는 생성한 키 스토어와 신뢰 스토어의 암호를 입력해야 합니다.

3. 서버 실행

마지막으로, 변경한 설정을 적용하여 Jersey 서버를 실행할 수 있습니다. 다음은 간단한 예시입니다:

import org.glassfish.jersey.jetty.JettyHttpContainerFactory;
import org.glassfish.jersey.server.ResourceConfig;

import javax.ws.rs.core.UriBuilder;
import java.net.URI;

public class Main {

    public static void main(String[] args) throws Exception {
        URI baseUri = UriBuilder.fromUri("https://localhost/").port(8443).build();
        ResourceConfig config = new MyApplication();
        JettyHttpContainerFactory.createServer(baseUri, config);
    }
}

위 코드에서 https://localhost/는 접속할 서버의 주소를 나타냅니다. 앞서 생성한 키 스토어와 신뢰 스토어를 사용하여 SSL/TLS 연결을 수립하는 서버를 실행할 수 있습니다.

이제 Java Jersey에서 SSL/TLS를 사용하여 보안 연결을 설정하는 방법을 알게 되었습니다. SSL/TLS를 이용하면 데이터의 안전한 전송을 보장할 수 있습니다.

참고 자료