[Grafana] ssl key 발급 및 https 설정하기

참고


1. 개요

  • grafana 에서 ssl key 를 발급 받아서, https 로 설정할 수 있습니다.
  • grafana http -> https 로 변경하는 방법에 대해서 정리 진행합니다.

2. 리눅스 SSL 인증서 생성

  • 그라파나 호스팅을 http 에서 https 로 바꾸려면, 먼저 SSL 키가 필요합니다.
  • SSL 인증서 생성하는 방법은 다음과 같습니다.
  • 참고로, 현재 CentOS Linux 환경에서 테스트 진행하였습니다.
  • 다른 종류의 Linux 환경에서는 방법의 차이가 있을 수 있습니다.
  • SSL 인증서 생성하려면, 다음 명령어를 입력해 줍니다.
openssl genrsa -out grafana.key 2048
  • 위 명령어를 입력하게 되면, 아래와 같이 출력됩니다.
[monitoring]$ openssl genrsa -out grafana.key 2048
Generating RSA private key, 2048 bit long modulus
.....................+++
...+++
e is 65537 (0x10001)

3. 인증서 서명 요청 및 생성

  • 앞서, SSL 인증서를 생성하였습니다.
  • 다음으로, 인증서 서명 요청 및 생성을 진행해 보겠습니다.
  • 명령줄에서 다음을 입력합니다.
openssl req -new -key grafana.key -out grafana.csr
  • 다음과 같이 출력이 표시되어야 합니다.
[monitoring]$ openssl req -new -key grafana.key -out grafana.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:KR
State or Province Name (full name) []:GYEONGGI-DO
Locality Name (eg, city) [Default City]:YONGIN
Organization Name (eg, company) [Default Company Ltd]:system
Organizational Unit Name (eg, section) []:system
Common Name (eg, your name or your server's hostname) []:cicd-prod-grafana
Email Address []:bhjo@mirero.co.kr

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:system
An optional company name []:system

4. 인증서 출력

  • 다음으로는 인증서를 출력해야 합니다.
  • 인증서 출력하는 명령어는 다음과 같습니다.
openssl x509 -req -days 365 -in grafana.csr -signkey grafana.key -out grafana.crt

5. 인증서 확인

  • 위 작업까지 완료 하였다면, SSL 인증서가 정상적으로 발급 되었습니다.
  • ls -al 명령어를 통해 실제로 인증서가 생성 되었는지 확인합니다.
[monitoring]$ ls -al
-rw-rw-r-- 1 mirero mirero 1338 Jan  5 09:02 grafana.crt
-rw-rw-r-- 1 mirero mirero 1143 Jan  5 09:02 grafana.csr
-rw-rw-r-- 1 mirero mirero 1679 Jan  5 08:59 grafana.key
  • 위와 같이 인증서가 정상적으로 생성된 것을 확인할 수 있습니다.

6. grafana 도커 컴포즈 인증서 Volume 마운트

  • 앞서, 생성한 인증서를 grafana 에서도 가지고 있어야 하기 때문에 Volume 마운트 진행하였습니다.
grafana:
    image: grafana/grafana:9.3.2
    container_name: grafana
    volumes:
      - ./grafana/data:/var/lib/grafana
      - ./grafana/data/grafana.ini:/etc/grafana/grafana.ini
      - ./grafana/data/grafana.crt:/etc/grafana/grafana.crt
      - ./grafana/data/grafana.key:/etc/grafana/grafana.key
      - ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
      - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
      - /etc/localtime:/etc/localtime
    restart: unless-stopped
    ports:
      - '3000:3000'
    expose:
      - 3000
    environment:
      GF_RENDERING_SERVER_URL: http://renderer:8081/render
      GF_RENDERING_CALLBACK_URL: http://grafana:3000/
      GF_LOG_FILTERS: rendering:debug
      GF_UNIFIED_ALERTING_SCREENSHOTS_CAPTURE: true
    networks:
      - mirero_net
    labels:
      group: "monitoring"
  • 위와 같이 grafana.crt, grafana.key 2개의 파일을 각각 volumes 환경에 추가해 주었습니다.

7. grafana.ini 파일 수정

  • 1번부터 6번까지의 과정을 모두 완료하였다면, grafana.ini 옵션에서 http 를 https 로 변경해주는 작업만 해주면 됩니다.
  • grafana.ini 옵션에서 server 관련 옵션에 아래와 같이 설정해 주면 됩니다.
[server]
# Protocol (http or https)
protocol = https

# The ip address to bind to, empty will bind to all interfaces
#http_addr = 

# The http port  to use
http_port = 3000

# The public facing domain name used to access grafana from a browser
;domain = grafana

# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
;enforce_domain = false

# The full public facing url you use in browser, used for redirects and emails
# If you use reverse proxy and sub path specify full url (with sub path)
root_url = https://localhost:3000

# Log web requests
;router_logging = false

# the path relative working path
static_root_path = public

# enable gzip
;enable_gzip = false

# https certs & key file
cert_file = /etc/grafana/grafana.crt
cert_key = /etc/grafana/grafana.key
  • 참고로, cert_file, cert_key 2개의 옵션에서 설정된 경로는 도커 컴포즈에서 볼륨 마운트 진행한 경로를 입력해 준 것입니다.
  • 여기까지 진행 하였다면, grafana 를 재 시작 후 https 로 접속 되는지 확인 진행합니다.

실행 결과

  • 실행 결과, https 로 접속 되는 것을 확인할 수 있습니다.

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY