5.2.3. 인증서 기반 인증 구성

JAAS( Java Authentication and Authorization Service ) 인증서 로그인 모듈은 TLS(Transport Layer Security)를 사용하는 클라이언트의 인증 및 권한 부여를 처리합니다. 이 모듈에는 TLS( two-way Transport Layer Security )가 사용되고 자체 인증서로 구성할 클라이언트가 있어야 합니다. 인증은 JAAS 인증서 로그인 모듈에서 직접 수행하지 않고 TLS 핸드셰이크 중에 수행됩니다.

인증서 로그인 모듈의 역할은 다음과 같습니다.

  • 허용 가능한 사용자 집합을 제한합니다. 관련 속성 파일에 명시적으로 나열 사용자의 DNs(DN)만 인증할 수 있습니다.
  • 그룹 목록을 수신된 사용자 ID와 연결합니다. 이렇게 하면 권한 부여가 용이해집니다.
  • 들어오는 클라이언트 인증서가 있어야 합니다(기본적으로 TLS 계층은 선택적으로 클라이언트 인증서의 존재를 처리하도록 구성됩니다).

인증서 로그인 모듈은 인증서 DN 컬렉션을 플랫 텍스트 파일 쌍에 저장합니다. 파일은 사용자 이름과 그룹 ID 목록을 각 DN과 연결합니다.

인증서 로그인 모듈은 org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule 클래스에서 구현됩니다.

5.2.3.1. 인증서 기반 인증을 사용하도록 브로커 구성

다음 절차에서는 인증서 기반 인증을 사용하도록 브로커를 구성하는 방법을 보여줍니다.

사전 요구 사항

  • 양방향 TLS(Transport Layer Security)를 사용하도록 브로커를 구성해야 합니다. 자세한 내용은 5.1.2절. “양방향 TLS 구성”의 내용을 참조하십시오.

절차

  1. 이전에 브로커 키 저장소로 가져온 사용자 인증서에서 제목 Distinguished Names (DN)를 가져옵니다.

    1. 키 저장소 파일에서 임시 파일로 인증서를 내보냅니다. 예를 들면 다음과 같습니다.

      keytool -export -file <file-name> -alias broker-localhost -keystore broker.ks -storepass <password>
    2. 내보낸 인증서의 콘텐츠를 출력합니다.

      keytool -printcert -file <file-name>

      출력은 다음과 유사합니다.

      Owner: CN=localhost, OU=broker, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
      Issuer: CN=localhost, OU=broker, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
      Serial number: 4537c82e
      Valid from: Thu Oct 19 19:47:10 BST 2006 until: Wed Jan 17 18:47:10 GMT 2007
      Certificate fingerprints:
               MD5:  3F:6C:0C:89:A8:80:29:CC:F5:2D:DA:5C:D7:3F:AB:37
               SHA1: F0:79:0D:04:38:5A:46:CE:86:E1:8A:20:1F:7B:AB:3A:46:E4:34:5C

      Owner 항목은 주체 DN입니다. 주체 DN에 입력하는 데 사용되는 형식은 플랫폼에 따라 다릅니다. 위의 문자열도 다음과 같이 나타낼 수 있습니다.

      Owner: `CN=localhost,\ OU=broker,\ O=Unknown,\ L=Unknown,\ ST=Unknown,\ C=Unknown`
  2. 인증서 기반 인증 구성.

    1. < broker-instance-dir> /etc/login.config 구성 파일을 엽니다. 인증서 로그인 모듈을 추가하고 사용자 및 역할 속성 파일을 참조합니다. 예를 들면 다음과 같습니다.

      activemq {
          org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
              debug=true
              org.apache.activemq.jaas.textfiledn.user="artemis-users.properties"
              org.apache.activemq.jaas.textfiledn.role="artemis-roles.properties";
      };
      org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule
      구현 클래스입니다.
      org.apache.activemq.jaas.textfiledn.user
      로그인 모듈 구현에 대한 사용자 및 암호 세트를 정의하는 속성 파일을 지정합니다.
      org.apache.activemq.jaas.textfiledn.role
      로그인 모듈 구현에 대해 사용자를 정의된 역할에 매핑하는 속성 파일을 지정합니다.
    2. < broker-instance-dir> /etc/artemis-users.properties 구성 파일을 엽니다. 사용자 및 해당 DN은 이 파일에 정의되어 있습니다. 예를 들면 다음과 같습니다.

      system=CN=system,O=Progress,C=US
      user=CN=humble user,O=Progress,C=US
      guest=CN=anon,O=Progress,C=DE

      위 구성을 기반으로, 예를 들어 system named user는 CN=system,O=Progress,C=US Subject DN에 매핑됩니다.

    3. < broker-instance-dir> /etc/artemis-roles.properties 구성 파일을 엽니다. 사용 가능한 역할 및 해당 역할을 보유한 사용자는 이 파일에 정의됩니다. 예를 들면 다음과 같습니다.

      admins=system
      users=system,user
      guests=guest

      이전 구성에서 users 역할에 대해 쉼표로 구분된 목록으로 여러 사용자를 나열합니다.

    4. 다음과 같이 bootstrap.xml 에서 보안 도메인 별칭(이 인스턴스에서 activemq)을 참조했는지 확인합니다.

      <jaas-security domain="activemq"/>