OS/Linux | 리눅스

[Linux] Graylog 7.1 인증서 생성 및 HTTPS 적용

tech-record 2026. 7. 16. 10:45

우분투 24.04 환경에서 Graylog 웹 UI에 HTTPS를 적용하기 위해 1) 자체 사설 인증서를 생성하고 2) Graylog 설정 파일(server.conf)에 적용하는 방법입니다.

1단계: 인증서 저장용 디렉토리 생성 및 권한 설정

가장 먼저 인증서와 비밀키 파일을 안전하게 보관할 디렉토리를 생성하고, 보안을 위해 graylog 시스템 계정만 접근할 수 있도록 권한을 설정합니다.

Bash
 
# 디렉토리 생성
sudo mkdir -p /etc/graylog/server

# 작업 경로로 이동
cd /etc/graylog/server

2단계: OpenSSL로 사설(Self-Signed) 인증서 생성

Graylog는 암호화되지 않은 PKCS#5 포맷 대신, 규격화된 PKCS#8 형식의 개인키를 요구합니다. 이 규격에 맞추어 인증서와 개인키를 생성합니다.

① RSA 개인키(Private Key) 및 인증서(Certificate) 생성 (PKCS#5 형식) 아래 명령어 실행 시 국가(KO), 도시, 기관명 등을 물어보는 질문이 나옵니다. 테스트용이므로 적당히 입력하셔도 되지만, Common Name (eg, your name or your server's hostname) 항목에는 반드시 Graylog 서버의 IP 주소(192.168.x.x) 을 입력해 주세요.

Bash
 
sudo openssl req -x509 -newkey rsa:2048 -nodes -keyout graylog-pkcs5.pem -out graylog-cert.pem -days 365

② Graylog 전용 PKCS#8 포맷으로 개인키 변환 Graylog가 이해할 수 있는 보안 규격으로 개인키를 변환합니다. 변환 과정에서 비밀번호를 지정할 수도 있지만, 비밀번호 없이 간편하게 사용할 수 있도록 -nocrypt 옵션을 주어 변환합니다.

Bash
 
sudo openssl pkcs8 -in graylog-pkcs5.pem -topk8 -nocrypt -out graylog-key.pem

③ 보안을 위한 권한 제한 (매우 중요) 개인키(graylog-key.pem) 파일은 외부로 유출되면 안 되므로 graylog 사용자만 읽을 수 있도록 소유권과 권한을 엄격하게 조정합니다.

Bash
 
# 생성된 파일들의 소유권을 graylog 계정으로 변경
sudo chown -R graylog:graylog /etc/graylog/ssl

# 개인키는 오직 소유자(graylog)만 읽을 수 있도록 설정 (600)
sudo chmod 600 /etc/graylog/ssl/graylog-key.pem
sudo chmod 644 /etc/graylog/ssl/graylog-cert.pem

3단계: Graylog 설정 파일(server.conf) 수정

이제 인증서 준비가 끝났으니 Graylog가 HTTPS 프로토콜로 통신하도록 가리켜 줍니다.

Bash
 
sudo vi /etc/graylog/server/server.conf

설정 파일 안에서 아래의 항목들을 찾아 주석(#)을 해제하거나 값을 알맞게 수정합니다.

Properties
 
# 1. 외부에서 HTTPS 주소로 접속할 수 있도록 기본 URI 변경
http_publish_uri = https://192.168.x.x:9000/

# 2. TLS(HTTPS) 사용 활성화
http_enable_tls = true

# 3. 위에서 만든 인증서 및 개인키 경로 기입
http_tls_cert_file = /etc/graylog/server/graylog-cert.pem
http_tls_key_file = /etc/graylog/server/graylog-key.pem

# (주의) 위에서 -nocrypt 옵션으로 비밀번호 없이 키를 만들었으므로 
# 아래 비밀번호 설정 라인은 주석(#) 처리된 상태로 두거나 비워둡니다.
# http_tls_key_password =

4단계: Graylog 서비스 재시작 및 적용 확인

수정한 설정을 반영하기 위해 Graylog 시스템 서비스를 재시작합니다.

Bash
 
sudo systemctl restart graylog-server

재시작 프로세스가 정상적으로 끝난 뒤 포트가 가동되는지 확인해 봅니다.

Bash
 
sudo ss -antlp | grep 9000

정상적으로 HTTPS 프로토콜 바인딩에 성공했다면 해당 포트가 LISTEN 상태로 정상 표시됩니다.

이제 브라우저를 열고 기존 http:// 대신 https://192.168.x.x:9000 주소로 접속합니다. 사설 인증서이기 때문에 "안전하지 않은 연결" 경고 창이 발생하지만, 고급 버튼을 누르고 예외 추가 및 계속 진행을 클릭하시면 안전한 암호화 채널(HTTPS)로 구현된 로그인 화면을 보실 수 있습니다!