やったことのまとめ
Prometheusと同様にGrafana
もHTTPS
化してみた.
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)
- version 7.3.7
- nginx (Docker)
- version 1.18.0
- 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.comでlocalhostにアクセスするためには/etc/hosts
を編集しておく)
Grafana
がHTTPS
化されていることが確認できた.
かんたん.😊
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
Grafana
とnginx
が起動したらhttps://hogehoge.com/grafana/を開く.
先ほどと同様にHTTPS
でGrafana
が公開されていることが確認できた.
やったぜ.
おわり
Grafana
をHTTPS
化してみた.
Grafana
自体にHTTPS
対応機能があるので設定はわりとカンタンだった.nginx
を使う場合もPrometheusをHTTPS化したときと同じようにできたのでそんなにつまづくところはなかったと思う.