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 구성”의 내용을 참조하십시오.
절차
이전에 브로커 키 저장소로 가져온 사용자 인증서에서 제목 Distinguished Names (DN)를 가져옵니다.
키 저장소 파일에서 임시 파일로 인증서를 내보냅니다. 예를 들면 다음과 같습니다.
keytool -export -file <file-name> -alias broker-localhost -keystore broker.ks -storepass <password>
내보낸 인증서의 콘텐츠를 출력합니다.
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`
인증서 기반 인증 구성.
<
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
- 로그인 모듈 구현에 대해 사용자를 정의된 역할에 매핑하는 속성 파일을 지정합니다.
<
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에 매핑됩니다.<
broker-instance-dir> /etc/artemis-roles.properties
구성 파일을 엽니다. 사용 가능한 역할 및 해당 역할을 보유한 사용자는 이 파일에 정의됩니다. 예를 들면 다음과 같습니다.admins=system users=system,user guests=guest
이전 구성에서
users
역할에 대해 쉼표로 구분된 목록으로 여러 사용자를 나열합니다.다음과 같이
bootstrap.xml
에서 보안 도메인 별칭(이 인스턴스에서 activemq)을 참조했는지 확인합니다.<jaas-security domain="activemq"/>