Sun Java System Message Queue 3.7 UR1 관리 설명서

서명된 인증서 사용

서명된 인증서는 자체 서명된 인증서보다 더 높은 수준의 서버 인증을 제공합니다. 서명된 인증서는 클라이언트와 브로커 간에만 구현 가능하고 동일 클러스터 내의 브로커 간에는 구현할 수 없습니다. 그럴 경우 위에서 설명한 자체 서명된 인증서 구성 단계 이외에 다음과 같은 추가 단계를 수행해야 합니다. 이러한 단계에 대해서는 다음에 나오는 하위 절에 자세히 설명되어 있습니다.

Procedure서명된 인증서를 사용하는 방법

  1. 키 저장소에 인증서를 설치합니다.

  2. 브로커에 SSL 기반 연결을 설정할 때 서명된 인증서를 요구하도록 Message Queue 클라이언트를 구성합니다.

서명된 인증서 가져오기 및 설치

다음 절차에서는 서명된 인증서를 가져와서 설치하는 방법에 대해 설명합니다.

Procedure서명된 인증서를 가져오는 방법

  1. J2SE keytool 명령을 사용하여 이전 절에서 생성한 자체 서명된 인증서에 대한 CSR(Certificate Signing Request)을 생성합니다.

    keytool 명령에 대한 자세한 내용은 을 참조하십시오.

    http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html

    예를 들면 다음과 같습니다.


    keytool -certreq -keyalg RSA -alias imq -file certreq.csr
            -keystore /etc/imq/keystore -storepass myStorePassword

    이 명령은 지정된 파일(이 예의 경우 certreq.csr)에서 인증서를 캡슐화하는 CSR을 생성합니다.

  2. CSR을 사용하여 서명된 인증서를 생성하거나 요청합니다.

    이 작업은 다음 중 한 가지 방법으로 수행할 수 있습니다.

    • Thawte 또는 Verisign과 같이 공신력 있는 인증 기관(CA)에서 서명한 인증서를 가져옵니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 CA의 설명서를 참조하십시오.

    • SSL 서명 소프트웨어 패키지를 사용하여 인증서에 직접 서명합니다.

      결과적으로 만들어지는 서명된 인증서는 ASCII 문자 시퀀스입니다. CA로부터 서명된 인증서를 받을 때 해당 인증서는 전자 메일 첨부 파일이나 메시지 텍스트로 전달될 수 있습니다.

  3. 서명된 인증서를 파일에 저장합니다.

    아래 지침에서는 broker.cer이라는 이름 예를 사용하여 브로커 인증서를 나타냅니다.

Procedure서명된 인증서 설치 방법

  1. J2SE가 기본적으로 인증 기관을 지원하는지 여부를 확인합니다.

    다음 명령은 시스템 키 저장소에 있는 루트 CA를 나열합니다.

    keytool -v -list -keystore $JAVA_HOME/lib/security/cacerts
    

    해당 CA가 목록에 있는 경우 다음 단계를 건너뜁니다.

  2. 인증 기관이 J2SE에서 지원되지 않는 경우 CA의 루트 인증서를 Message Queue 키 저장소로 가져옵니다.

    예를 들면 다음과 같습니다.

    keytool -import -alias ca -file ca.cer -noprompt -trustcacerts
            -keystore /etc/imq/keystore -storepass myStorePassword
    

    여기서 ca.cer은 CA에서 가져온 루트 인증서가 들어 있는 파일입니다.

    CA 테스트 인증서를 사용하는 경우 테스트 CA 루트 인증서를 가져와야 할 수 있습니다. CA에는 복사본을 가져오는 방법에 대한 지침이 있어야 합니다.

  3. 서명된 인증서를 키 저장소로 가져와서 자체 서명된 원본 인증서를 대체합니다.

    예를 들면 다음과 같습니다.

    keytool -import -alias imq -file broker.cer -noprompt -trustcacerts
            -keystore /etc/imq/keystore -storepass myStorePassword
    

    여기서 broker.cer은 CA로부터 받은 서명된 인증서가 들어 있는 파일입니다.

    Message Queue 키 저장소에는 이제 SSL 연결에 사용할 서명된 인증서가 포함되어 있습니다.

서명된 인증서를 요구하도록 Message Queue 클라이언트 런타임 구성

서명된 인증서를 요구하도록 Message Queue 클라이언트 런타임을 구성하고 인증서에 서명한 인증 기관을 신뢰하는지를 확인해야 합니다.

Procedure서명된 인증서를 요구하도록 클라이언트 런타임을 구성하는 방법

  1. 연결 팩토리의 imqSSLIsHostTrusted 속성을 false로 설정합니다.

    기본적으로 클라이언트가 브로커 연결을 설정하는 데 사용할 연결 팩토리 객체의 imqSSLIsHostTrusted 속성은 true로 설정되어 있습니다. 즉, 클라이언트 런타임에서 제공된 인증서를 수용합니다. 클라이언트 런타임이 제공되는 모든 인증서를 검증하도록 이 값을 false로 변경해야 합니다. 인증서 서명자가 클라이언트의 트러스트 저장소에 없는 경우 검증이 실패합니다.

  2. 서명 기관이 클라이언트의 트러스트 저장소에 등록되어 있는지 여부를 확인합니다.

    클라이언트가 인증 기관에서 서명한 인증서를 수용하는지 여부를 테스트하려면 SSL 기반 클라이언트 구성 및 실행에서 설명한 것처럼 SSL 연결 설정을 시도합니다. CA가 클라이언트의 트러스트 저장소에 있으면 성공적으로 연결되고 다음 단계를 건너뛸 수 있습니다. 연결이 실패하고 인증서 검증 오류가 발생하면 다음 단계로 이동합니다.

  3. 서명 CA의 루트 인증서를 클라이언트의 트러스트 저장소에 설치합니다.

    클라이언트는 기본적으로 키 저장소 파일 cacertsjssecacerts를 검색하므로 인증서를 이러한 파일에 설치할 때 추가 구성이 필요하지 않습니다. 다음 예에서는 Verisign 인증 기관의 테스트 루트 인증서를 testrootca.cer 파일에서 기본 시스템 인증서 파일 cacerts에 설치합니다.이 예제에서는 J2SE가 $JAVA_HOME/usr/j2se 디렉토리에 설치된다고 가정합니다.

    keytool -import -keystore /usr/j2se/jre/lib/security/cacerts
            -alias VerisignTestCA -file testrootca.cer -noprompt
            -trustcacerts -storepass myStorePassword
    

    대체(권장) 옵션으로 루트 인증서를 대체 시스템 인증서 파일 jssecacerts에 설치할 수 있습니다.

    keytool -import -keystore /usr/j2se/jre/lib/security/jssecacerts
            -alias VerisignTestCA -file testrootca.cer -noprompt
            -trustcacerts -storepass myStorePassword
    

    세 번째 방법으로 루트 인증서를 다른 키 저장소 파일에 설치하고 해당 저장소 파일을 트러스트 저장소로 사용하도록 클라이언트를 구성할 수 있습니다. 다음 예에서는 /home/smith/.keystore 파일에 설치합니다.

    keytool -import -keystore /home/smith/.keystore
            -alias VerisignTestCA -file testrootca.cer -noprompt
            -trustcacerts -storepass myStorePassword
    

    클라이언트는 기본적으로 이 키 저장소를 검색하지 않기 때문에 클라이언트에서 트러스트 저장소로 사용하도록 해당 위치를 명시적으로 지정해야 합니다. 이 작업은 클라이언트가 다음을 실행 중일 때 Java 시스템 등록 정보 javax.net.ssl.trustStore를 설정하여 수행합니다.

    javax.net.ssl.trustStore=/home/smith/.keystore