Apache ActiveMQ는 Java로 작성된 높은 성능의 오픈 소스 메시지 브로커입니다. SSL/TLS를 통해 통신을 암호화하는 것은 보안을 강화하는 중요한 단계입니다. 이번 블로그 포스트에서는 Apache ActiveMQ에서 SSL/TLS 보안을 설정하는 방법에 대해 알아보겠습니다.
SSL/TLS 인증서 생성
SSL/TLS 통신을 위해서는 인증서가 필요합니다. 자체 서명된 인증서를 생성하여 사용할 수도 있고, 신뢰할 수 있는 CA(Certificate Authority)로부터 발급 받은 인증서를 사용할 수도 있습니다. 여기서는 자체 서명된 인증서를 생성하는 방법을 설명하겠습니다.
- 먼저, JDK(Java Development Kit)를 설치해야 합니다.
- JDK가 설치되었다면, 다음과 같은 명령어를 사용하여 키스토어 파일을 생성합니다.
keytool -genkey -keyalg RSA -keystore broker.ks -storepass password -validity 365 -keysize 2048 -dname "CN=broker"
- 위의 명령어에서
-keystore
는 키스토어 파일의 이름,-storepass
는 키스토어의 비밀번호,-validity
는 인증서의 유효 기간(일 수),-keysize
는 RSA 키 크기,-dname
은 인증서에 포함될 정보를 나타냅니다. - 위의 명령어를 실행하면,
broker.ks
라는 키스토어 파일이 생성됩니다.
ActiveMQ에 SSL/TLS 설정 추가하기
- ActiveMQ를 설치한 디렉토리로 이동합니다.
conf/activemq.xml
파일을 엽니다.<transportConnectors>
엘리먼트 안에 다음과 같이 SSL/TLS 연결을 추가합니다.
<transportConnector name="ssl" uri="ssl://0.0.0.0:61617?needClientAuth=true"/>
<sslContext>
엘리먼트 안에 SSL/TLS 설정 정보를 추가합니다.
<sslContext>
<sslContext keyStore="file:${activemq.base}/conf/broker.ks" keyStorePassword="password"/>
</sslContext>
위의 설정에서 keyStore
속성은 앞서 생성한 키스토어 파일의 경로를, keyStorePassword
속성은 키스토어의 비밀번호를 나타냅니다.
ActiveMQ 서버 시작하기
이제 SSL/TLS 설정이 완료되었으므로 ActiveMQ 서버를 시작할 수 있습니다. 다음 명령어를 실행하여 ActiveMQ를 시작합니다.
./bin/activemq start
클라이언트 설정
ActiveMQ 서버에 연결할 클라이언트도 SSL/TLS 설정을 해주어야 합니다. 클라이언트의 프로듀서나 컨슈머에서 다음과 같은 설정을 추가해주어야 합니다.
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("ssl://localhost:61617");
factory.setTrustStore("client.ts");
factory.setTrustStorePassword("password");
위의 코드에서 ssl://localhost:61617
은 ActiveMQ 서버의 SSL/TLS 연결 주소를 나타냅니다. setTrustStore
와 setTrustStorePassword
메서드를 통해 클라이언트의 신뢰할 수 있는 CA의 키스토어 파일과 비밀번호를 설정합니다.
마무리
이제 Apache ActiveMQ에서 SSL/TLS 보안 설정을 완료하였습니다. 이를 통해 메시지 브로커와 클라이언트 간의 통신이 안전하게 암호화될 것입니다. SSL/TLS는 중요한 보안 요소이므로, 실제 배포 환경에서는 신뢰할 수 있는 CA로부터 인증서를 발급 받는 것을 권장합니다.