클라이언트 응용 프로그램에서는 제대로 구성된 연결 팩토리 관리 객체를 사용해서 브로커에 대한 HTTPS 연결을 설정해야 합니다.
하지만 클라이언트는 JSSE(Java Secure Socket Extension)에서 제공하는 SSL 라이브러리에도 액세스해야 하며 루트 인증서도 있어야 합니다. SSL 라이브러리는 JDK 1.4와 함께 제공됩니다. 이전 버전의 JDK가 있는 경우에는 JSSE 구성을 참조하십시오. 그렇지 않으면 루트 인증서 가져오기로 이동하십시오.
이 문제를 해결하고 나면 계속해서 HTTPS 연결을 구성할 수 있습니다.
JSSE .jar 파일을 JRE_HOME/lib/ext 디렉토리로 복사합니다.
jsse.jar, jnet.jar, jcert.jar |
JSSE 보안 공급자를 정적으로 추가합니다. 이 작업은
security.provider.n=com.sun.net.ssl.internal.ssl.Provider |
를 JRE_HOME/lib/security/java.security 파일에 추가하여 수행할 수 있습니다. 여기서 n은 보안 공급자 패키지에서 다음으로 사용할 수 있는 우선 순위 번호입니다.
JDK1.4를 사용하지 않는 경우에는 클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용해서 다음 JSSE 등록 정보를 설정해야 합니다.
java.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol |
웹 서버 인증서에 서명한 CA의 루트 인증서가 기본적으로 트러스트 데이터베이스에 있지 않거나 독자적인 웹 서버/응용 프로그램 서버 인증서를 사용하는 경우에는 인증서를 트러스트 데이터베이스에 추가해야 합니다. 여기에 해당되면 다음 지침에 따르고, 그렇지 않으면 연결 팩토리 구성으로 이동합니다.
인증서가 certFile에 저장되어 있고 trustStoreFile이 키 저장소라면 다음 명령을 실행합니다.
JRE_HOME/bin/keytool -import -trustcacerts -alias aliasForCertificate -file certFile -keystore trustStoreFile
다음 질문에 YES로 응답합니다. Trust this certificate?
클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용해서 다음과 같은 JSSE 등록 정보도 지정해야 합니다.
javax.net.ssl.trustStore=trustStoreFile javax.net.ssl.trustStorePassword=trustStorePasswd
HTTPS 지원을 활성화하려면 연결 팩토리의 imqAddressList 속성을 HTTPS 터널 서블릿 URL로 설정해야 합니다. HTTPS 터널 서블릿 URL의 일반 구문은 다음과 같습니다.
https://hostName:portNumber /contextRoot/tunnel
여기서 hostName:portNumber는 HTTPS 터널 서블릿을 호스트하는 웹 서버의 이름과 포트이며, contextRoot는 웹 서버에서 터널 서블릿을 배포할 때 설정된 경로입니다.
일반적인 연결 팩토리 속성, 특히 imqAddressList 속성에 대한 자세한 내용은 Java 클라이언트용 Message Queue 개발 안내서를 참조하십시오.
다음 방법 중 하나를 사용하여 연결 팩토리 속성을 설정할 수 있습니다.
연결 팩토리 관리 대상 객체를 만드는 imqobjmgr 명령에 -o 옵션을 사용하거나( 연결 팩토리 추가 참조) 관리 콘솔(imqadmin)을 사용하여 연결 팩토리 관리 대상 객체를 만들 때 속성을 설정합니다.
클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용합니다(Java 클라이언트용 Message Queue 개발 안내서 참조).
클라이언트 응용 프로그램 코드에서 프로그래밍 방식으로 연결 팩토리를 만든 후 API 호출을 사용하여 해당 연결 팩토리의 속성을 설정합니다(Java 클라이언트용 Message Queue 개발 안내서 참조).
다중 브로커를 실행할 경우 다중 웹 서버 및 서블릿 인스턴스를 구성하지 않아도 됩니다. 동시에 실행 중인 브로커 간에 단일 웹 서버와 HTTPS 터널 서블릿 인스턴스를 공유할 수 있습니다. 다중 브로커 인스턴스가 단일 터널 서블릿을 공유하는 경우 imqAddressList 연결 팩토리 속성을 다음과 같이 구성해야 합니다.
https://hostName:portNumber /contextRoot/tunnel?ServerName= bkrHostName:instanceName
여기서 bkrHostName은 브로커 인스턴스 호스트 이름이고 instanceName은 클라이언트가 액세스할 특정 브로커 인스턴스의 이름입니다.
bkrhostName과 instanceName에 정확한 문자열을 입력했는지 확인하려면 브라우저에서 서블릿 URL에 액세스하여 HTTPS 터널 서블릿의 상태 보고서를 생성합니다. 보고서에는 서블릿이 액세스하는 모든 브로커가 나열됩니다.
HTTPS tunnel servlet ready. Servlet Start Time : Thu May 30 01:08:18 PDT 2002 Accepting secured connections from brokers on port : 7674 Total available brokers = 2 Broker List : jpgserv:broker2 cochin:broker1 |
HTTP 프록시를 사용해서 HTTPS 터널 서블릿에 액세스하는 경우
http.proxyHost 시스템 등록 정보를 프록시 서버 호스트 이름으로 설정합니다.
http.proxyPort 시스템 등록 정보를 프록시 서버 포트 번호로 설정합니다.
클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용하여 이러한 등록 정보를 설정할 수 있습니다.