3.3. Apache Karaf 컨테이너에서 Cryostat에 대해 SSL/TLS 활성화

다음 절차에서는 키 저장소 파일에 서명된 X.509 인증서 및 개인 키 쌍을 이미 생성했다고 가정합니다. alice.ks 는 키 저장소 암호, StorePass, 키 암호, KeyPass 입니다.

Karaf 컨테이너에서 Cryostat에 대해 SSL/TLS를 활성화하려면 다음을 수행합니다.

  1. Pax 웹 서버가 etc/undertow.xml 파일에서 구성을 가져오도록 구성되었는지 확인합니다. etc/org.ops4j.pax.web.cfg 파일의 내용을 보면 다음 설정이 표시됩니다.

    org.ops4j.pax.web.config.file=${karaf.etc}/undertow.xml
  2. 텍스트 편집기에서 etc/org.ops4j.pax.web.cfg 파일을 열고 다음 행을 추가합니다.

    org.osgi.service.http.port.secure=8443

    파일을 저장하고 닫습니다. etc/org.ops4j.pax.web.cfg.

  3. 텍스트 편집기에서 etc/undertow.xml 파일을 엽니다. 다음 단계에서는 설치 시간 이후 변경되지 않은 기본 undertow.xml 파일로 작업한다고 가정합니다.
  4. XML 요소 http-listenerhttps-listener 를 검색합니다. http-listener 요소를 주석 처리하고(< !--과 -- > ) https-listener 요소의 주석을 제거하고(두 행을 통해 수신 대기)합니다. 편집된 XML 조각은 다음과 같아야 합니다.

    <!-- HTTP(S) Listener references Socket Binding (and indirectly - Interfaces) -->
    <!-- http-listener name="http" socket-binding="http" /> -->
    <!-- verify-client: org.xnio.SslClientAuthMode.NOT_REQUESTED, org.xnio.SslClientAuthMode.REQUESTED, org.xnio.SslClientAuthMode.REQUIRED -->
    <https-listener name="https" socket-binding="https"
            security-realm="https" verify-client="NOT_REQUESTED" />
  5. w:keystore 요소를 검색합니다. 기본적으로 w:keystore 요소는 다음과 같이 구성됩니다.

    <w:keystore path="${karaf.etc}/certs/server.keystore" provider="JKS" alias="server"
                keystore-password="secret" key-password="secret"
                generate-self-signed-certificate-host="localhost" />

    alice 인증서를 Cryostat 서버의 인증서로 설치하려면 다음과 같이 w:keystore 요소 속성을 수정합니다.

    • 파일 시스템에서 alice.ks 파일의 절대 위치에 대한 경로를 설정합니다.
    • providerJKS 로 설정합니다.
    • 키 저장소의 alice 인증서 별칭에 alias 를 설정합니다.
    • keystore-password 를 키 저장소를 잠금 해제하는 암호 값으로 설정합니다.
    • alice 개인 키를 암호화하는 암호 값으로 key-password 를 설정합니다.
    • generate-self-signed-certificate-host 속성 설정을 삭제합니다.
  6. 예를 들어 alice.ks 키 저장소를 설치한 후 수정된 w:keystore 요소는 다음과 같습니다.

    <w:keystore path="${karaf.etc}/certs/alice.ks" provider="JKS" alias="alice"
                keystore-password="StorePass" key-password="KeyPass" />
  7. 보안 HTTPS 포트가 바인딩되는 IP 주소를 지정하는 데 사용되는 < interface name="secure" > 태그를 검색합니다. 기본적으로 이 요소는 다음과 같이 주석 처리됩니다.

    <!--<interface name="secure">-->
        <!--<w:inet-address value="127.0.0.1" />-->
    <!--</interface>-->

    요소의 주석을 제거하고 value 속성을 사용자 지정하여 HTTPS 포트가 바인딩되는 IP 주소를 지정합니다. 예를 들어 와일드카드 값인 0.0.0.0 은 사용 가능한 모든 IP 주소에 바인딩하도록 HTTPS를 구성합니다.

    <interface name="secure">
        <w:inet-address value="0.0.0.0" />
    </interface>
  8. < socket-binding name="https" 태그를 검색하고 주석 처리를 해제합니다. 이 태그의 주석 처리를 해제하면 다음과 같이 표시됩니다.

    <socket-binding name="https" interface="secure" port="${org.osgi.service.http.port.secure}" />
  9. 파일을 저장하고 닫습니다. etc/undertow.xml.
  10. 구성 변경 사항을 적용하려면 Fuse 컨테이너를 다시 시작합니다.