[java] Jetty 서버용 인증서 발급 방법

이 문서에서는 Jetty 서버를 사용하여 웹 서비스를 제공하는 경우 인증서를 발급하는 방법에 대해 다룹니다.

1. 키 페어 생성

먼저, 키 페어를 생성해야 합니다. 이는 공개 키와 개인 키를 생성하여 서버와 클라이언트 사이의 암호화를 위해 사용됩니다. 다음 명령을 사용하여 키 페어를 생성합니다:

keytool -genkeypair -alias my_server -keyalg RSA -keystore keystore.jks -keysize 2048

위 명령에서 다음과 같은 정보를 입력해야 합니다:

위 명령을 실행하면 키 저장소(.jks) 파일이 생성되며, 인증서에 대한 정보를 입력할 수 있는 프롬프트가 표시됩니다. 해당 프롬프트에 필요한 정보를 입력하세요.

2. 인증서 서명 요청 생성

인증서 발급기관(Certificate Authority, CA)에 서명 요청을 생성해야 합니다. CA는 이 요청을 기반으로 신뢰할 수 있는 인증서를 발급해 줄 것입니다. 다음 명령을 사용하여 인증서 서명 요청을 생성합니다:

keytool -certreq -alias my_server -keystore keystore.jks -file server.csr

위 명령을 실행하면 server.csr 파일이 생성됩니다. 이 파일은 CA에 제출될 서명 요청을 포함하고 있습니다.

3. 인증서 발급

CA에 서명 요청을 제출하여 인증서를 발급받아야 합니다. 이 단계는 CA의 정책 및 절차에 따라 다를 수 있습니다. CA가 인증서를 발급해 주면 .cer 또는 .crt 확장자를 가진 인증서 파일을 받게 됩니다.

4. 인증서 설치

인증서 파일(.cer 또는 .crt)을 받은 후, 다음 명령을 사용하여 Jetty 서버에 인증서를 설치합니다:

keytool -importcert -alias my_server -keystore keystore.jks -file certificate.cer

위 명령에서 certificate.cer는 인증서 파일의 경로와 파일 이름으로 대체해야 합니다.

5. Jetty 구성

마지막으로, Jetty 서버를 구성하여 제공하는 웹 서비스에 인증서를 적용해야 합니다. 이는 Jetty 구성 파일(jetty.xml 또는 jetty.conf)에서 수행됩니다. 구성 파일에서 SSL 설정 부분을 수정하여 다음과 같이 인증서 정보를 추가합니다:

<Call name="addConnector">
  <Arg>
    <New class="org.eclipse.jetty.server.ServerConnector">
      <Arg name="server">
        <Ref refid="Server" />
      </Arg>
      <Arg name="sslContextFactory">
        <New class="org.eclipse.jetty.util.ssl.SslContextFactory">
          <Set name="keyStorePath">/path/to/keystore.jks</Set>
          <Set name="keyStorePassword">password</Set>
          <Set name="keyManagerPassword">password</Set>
        </New>
      </Arg>
      <Set name="port">443</Set>
    </New>
  </Arg>
</Call>

위 예제에서 /path/to/keystore.jks는 실제 키 저장소 파일의 경로로 대체해야 합니다. password는 키 저장소 암호 및 키 페어의 암호로 대체해야 합니다.

Jetty 서버를 재시작하면 이제 HTTPS를 사용하여 웹 서비스를 제공할 수 있습니다.

참고 자료