Featured image of post GrafanaをHTTPS化する

GrafanaをHTTPS化する

これいる?

やったことのまとめ

Prometheusと同様にGrafanaHTTPS化してみた.

Prometheusと同様にGrafana自体に証明書と秘密鍵をもたせる方法とHTTPS対応したリバースプロキシを使う方法の2通りを試した.

つかうもの

  • macOS Mojave 10.14
    • Dockerのホストとして使用, 動作確認用のブラウザもこちらで起動する
  • Google Chrome
    • バージョン: 88.0.4324.150(Official Build) (x86_64)
  • Docker Desktop for Mac
    • Version 3.1.0
    • Docker Engine Version 20.10.2
    • docker-compose version 1.27.4
  • Grafana (Docker)
  • nginx (Docker)
  • openssl
    • version 1.1.1d

やったこと

秘密鍵とオレオレ証明書の作成

前回と全く同じ手順で秘密鍵と証明書を作成する.

# cert.pemはSANsでhogehoge.comが指定されたSSL証明書
$ openssl x509 -in cert.pem -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            24:4c:ec:40:cc:94:5c:a2:af:30:6a:e9:7d:5c:17:28:5e:fb:ec:fc
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd, CN=hogehoge.com
        Validity
            Not Before: Feb 10 16:13:01 2021 GMT
            Not After : Mar 12 16:13:01 2021 GMT
        Subject: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd, CN=hogehoge.com
        ...
        X509v3 extensions:
            ...
            X509v3 Subject Alternative Name:
                DNS:hogehoge.com, DNS:fugafuga.com
    ...

# private-key.pemはcert.pemに紐づく秘密鍵
$ openssl rsa -in private-key.pem -text -noout
Private-Key: (2048 bit)
modulus:
    ...

作成したオレオレ証明書はMac信頼する設定にしておく.

Grafanaに証明書と秘密鍵を持たせる

Grafanaは元からHTTPS化に対応しているので, SSL証明書とその秘密鍵をもたせる1だけで良さそう.

証明書(cert_file)と鍵の場所(cert_key)などはgrafana.iniで設定できる.

あとはこのgrafana.iniと証明書, 秘密鍵を適切な場所に配置してGrafanaを起動する.

今回はDocker Composeで試すが, 非コンテナ環境でもやることは同じはず.

$ tree .
.
├── cert.pem
├── docker-compose.yml
├── grafana.ini
└── private-key.pem

# コンテナ起動
$ docker-compose up -d --force-recreate --remove-orphans

# localhostの443番ポートがGrafanaコンテナの443に割り当てられている
$ docker-compose ps
 Name     Command   State               Ports
----------------------------------------------------------
grafana   /run.sh   Up      3000/tcp, 0.0.0.0:443->443/tcp

https://hogehoge.comを開く.
(hogehoge.comlocalhostにアクセスするためには/etc/hosts編集しておく)

HTTPSで公開されている

オレオレ証明書が有効になっている

GrafanaHTTPS化されていることが確認できた.
かんたん.😊

nginxでリバースプロキシする

もちろんPrometheusと同様にHTTPS化したnginxでリバースプロキシすることもできるはず.

前回と同様にnginxに証明書と鍵を持たせて, Grafana側でリバースプロキシ用の設定を入れてみる.

$ tree .
.
├── cert.pem
├── docker-compose.yml
├── grafana.ini
├── https.conf
└── private-key.pem

# コンテナ起動
$ docker-compose up -d --force-recreate --remove-orphans

# localhostの443番ポートがnginxコンテナの443に割り当てられている
$ docker-compose ps
 Name                Command               State              Ports
-------------------------------------------------------------------------------
grafana   /run.sh                          Up      3000/tcp
nginx     /docker-entrypoint.sh ngin ...   Up      0.0.0.0:443->443/tcp, 80/tcp

Grafananginxが起動したらhttps://hogehoge.com/grafana/を開く.

nginxを使ってもHTTPS化できた

先ほどと同様にHTTPSGrafanaが公開されていることが確認できた.

やったぜ.

おわり

GrafanaHTTPS化してみた.

Grafana自体にHTTPS対応機能があるので設定はわりとカンタンだった.
nginxを使う場合もPrometheusをHTTPS化したときと同じようにできたのでそんなにつまづくところはなかったと思う.

おまけ

目つきがわるいねこ