본문
Jetty에서 SSL(HTTPS) 사용 하기
JDK를 설치하고 시스템변수도 등록했고 이미 Jetty가 설치되었다고 가정하고(아니라면 맨 위 링크를 참조) 글을 진행한다. JDK내에는 keytool이라는 프로그램이 있어서 키와 인증서를 만들어서 자동으로 키 저장소에 저장을 해준다. 명령 프롬프트를 실행하고 다음 명령을 입력한다.
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
그러면 [그림 1] 과 같은 화면이 뜨게 되는데 구동만 되는것이 이 글의 목표이기 때문에 아무것도 입력 안하고 엔터만 계속 눌렀다. 만약 CA에서 인증서를 발급하는것까지 다루게 된다면 위에있던 How to configure SSL 링크를 참고하면 된다
위 과정을 모두 마쳤다면 이제는 jetty에서 ssl에 대한 설정을 해주어야 한다. jetty에서는 두개의 ssl connector(SslSocketConnector, SslSelectChannelConnector)가 있는데 SslSocketConnector는 jetty에서 제작된 SocketConnector와 java의 SslSocket을 기반으로 하고, SslSelectChannelConnector는 jetty에서 제작된 SelectChannelConnector와 java NIO의 SslEngine를 기반으로 한다. 이 둘의 차이는 Blocking/Nonblocking의 차이로서, 동시 접속수가 많은 경우에는 후자가 더욱 유리하다. 이 둘은 실행방법만 차이날 뿐, 설정은 동일하게 하면 된다.
아무튼 c:\jetty\etc\jetty.xml으로 들어가서 set connectors라는 부분을 찾으면 이미 http 접속에 대한 설정이 되어있으며, 이 아래에 추가로 다음과 같이 설정해 주면 된다. 원문과 동일하게 설정했다가 클래스 경로가 맞지 않아 오류가 발생하여 서버를 시작하지 못할 경우에는 이를 org.eclipse.jetty.server.ssl.SslSocketConnector으로 적어주면 실행이 된다. SslSelectChannelConnector를 사용하고자 한다면 마찬가지로 org.eclipse.jetty.server.ssl.SslSelectChannelConnector를 적어주면 된다.
그리고 만약 https 포트를 8443으로 지정해주었다면 http 설정부분에서 <Set name="confidentialPort">8443</Set>를 지정해 줌으로서 http 프로토콜로 8443포트에 접속할경우 이를 자동으로 https 프로토콜록 변경하여 접속하게 해줄 수 있다. 이 모든 셋팅이 끝나고 https://localhost:8443 으로 접속하면 [그림 2] 와 같은 화면이 뜬다. 참고로 이 서버에 사용된 인증서는 공인 인증이 되지 않았으므로 처음 접속시에 경고문이 뜨고, 확인을 누르면 주소창에 신뢰할 수 없는 인증서를 가진 페이지라는 표시가 뜬다.
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ssl.SslSocketConnector">
<Set name="Port">8443</Set>
<Set name="maxIdleTime">30000</Set>
<Set name="keystore"><SystemProperty name="jetty.home" default="." />/etc/keystore</Set>
<Set name="password">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
<Set name="keyPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
<Set name="truststore"><SystemProperty name="jetty.home" default="." />/etc/keystore</Set>
<Set name="trustPassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
</New>
</Arg>
</Call>
[그림 1, 2] keytool 사용 화면과 https로 접속 성공한 localhost의 화면
댓글